#!/usr/bin/env python

#
# Implementation for user info controller.
#

from dm.common.objects.dmObject import DmObject
from dm.common.objects.dmObjectManager import DmObjectManager
from dm.common.db.api.userDbApi import UserDbApi
from dm.ds_web_service.service.impl.experimentManager import ExperimentManager

class UserInfoSessionControllerImpl(DmObjectManager):
    """ User info controller implementation class. """

    def __init__(self):
        DmObjectManager.__init__(self)
        self.userDbApi = UserDbApi()

    def getUsers(self):
        return self.userDbApi.getUsers()

    def getUserById(self, id):
        return self.userDbApi.getUserById(id)

    def getUserByUsername(self, username):
        return self.userDbApi.getUserByUsername(username)

    def addUserSystemRole(self, username, roleName, experimentStationName):
        userSystemRole = self.userDbApi.addUserSystemRole(username, roleName, experimentStationName)
        return userSystemRole

    def deleteUserSystemRole(self, username, roleName, experimentStationName):
        userSystemRole = self.userDbApi.deleteUserSystemRole(username, roleName, experimentStationName)
        return userSystemRole

    def addUserExperimentRole(self, username, roleName, experimentName):
        userExperimentRole = self.userDbApi.addUserExperimentRole(username, roleName, experimentName)
        ExperimentManager.getInstance().addUserToGroup(username, experimentName)
        return userExperimentRole 

    def deleteUserExperimentRole(self, username, roleName, experimentName):
        userExperimentRole = self.userDbApi.deleteUserExperimentRole(username, roleName, experimentName)
        ExperimentManager.getInstance().deleteUserFromGroup(username, experimentName)
        return userExperimentRole