public function executeServiceDiscussion(\Library\HttpRequest $rq) { $discussionId = $rq->getData("discussion_id"); $currentUserObject = $this->user->getAttribute(\Library\Enums\SessionKeys::UserConnected); $data["username"] = $rq->getData("username"); $data["pwd"] = $rq->getData("password"); $data["encrypted_pwd"] = true; //check if user is already logged in and if username and password aren't sent through url if ($currentUserObject instanceof \Applications\PMTool\Models\Dao\User && !isset($data["username"]) && !isset($data["pwd"])) { } else { $authProvider = new \Applications\PMTool\AuthProvider($this->app->config->get("encryption_key"), $this->managers->getManagerOf('Login')); $authProvider->prepareUser($data); if ($authProvider->getUser() instanceof \Library\Interfaces\IUser) { $this->app->auth->authenticate($authProvider->getUser()); $this->user->setAttribute(\Library\Enums\SessionKeys::UserTypeObject, $authProvider->getUserType()); if ($authProvider->getUser()) { $user = $this->app->user; $routes = array_filter($this->app->router->routes(), function ($route) use($user) { return count($route->role()) == 0 || in_array($user->getRole(), $route->role()); }); \Applications\PMTool\Helpers\UserHelper::SaveRoutes($user, $routes); switch ($authProvider->getUser()->getType()) { case 'technician_id': break; case 'pm_id': \Applications\PMTool\Helpers\PmHelper::StoreSessionPm($this, $authProvider->getUserType(), true); break; } } } $currentUserObject = $this->user->getAttribute(\Library\Enums\SessionKeys::UserConnected); } $discussionArray = \Applications\PMTool\Helpers\DiscussionHelper::GetDiscussionByIdFromDB($this, $discussionId); $user = \Applications\PMTool\Helpers\CommonHelper::FindObjectByIntValue(intval($currentUserObject->user_id()), 'user_id', $discussionArray[\Library\Enums\SessionKeys::DiscussionPeople]); //check if logged in user is the part of this discussion if ($user) { \Applications\PMTool\Helpers\DiscussionHelper::SetCurrentDiscussion($this->user, $discussionArray[\Library\Enums\SessionKeys::DiscussionObj], $discussionArray[\Library\Enums\SessionKeys::DiscussionPeople]); $currentDiscussion = $discussionArray; if ($currentDiscussion) { $manager = $this->managers()->getManagerOf('User'); $discussion_person = \Applications\PMTool\Helpers\CommonHelper::FindObjectByIntValue(1, 'discussion_person_is_author', $currentDiscussion[\Library\Enums\SessionKeys::DiscussionPeople]); $discussion_user_type = $manager->selectUserTypeObjectByUserId($discussion_person->user_id()); if ($discussion_user_type) { $currentDiscussion['comm_with'] = $discussion_user_type; $currentDiscussion['comm_type'] = \Applications\PMTool\Helpers\UserHelper::FindUserTypeFromObject($discussion_user_type); } $this->page->addVar(\Applications\PMTool\Resources\Enums\ViewVariablesKeys::currentDiscussion, $currentDiscussion); } } else { \Applications\PMTool\Helpers\DiscussionHelper::UnsetCurrentDiscussion($this->user); } $modules = $this->app()->router()->selectedRoute()->phpModules(); $this->page->addVar(\Applications\PMTool\Resources\Enums\ViewVariablesKeys::form_modules, $modules); }
/** * Method that edits a a client and returns the result of operation * * @param \Library\HttpRequest $rq * @return JSON */ public function executeEdit(\Library\HttpRequest $rq) { $result = $this->InitResponseWS(); //Load interface to query the database $manager = $this->managers->getManagerOf($this->module()); $result_edit = $manager->edit(\Applications\PMTool\Helpers\CommonHelper::PrepareUserObject($this->dataPost(), new \Applications\PMTool\Models\Dao\Client()), "client_id"); $result["dataId"] = $this->dataPost["client_id"]; if ($result_edit) { \Applications\PMTool\Helpers\UserHelper::EditUser($this, 'client_id'); $sessionProject = \Applications\PMTool\Helpers\ProjectHelper::GetUserSessionProject($this->app()->user(), $this->dataPost["project_id"]); $sessionProject[\Library\Enums\SessionKeys::ClientObject] = \Applications\PMTool\Helpers\CommonHelper::PrepareUserObject($this->dataPost(), new \Applications\PMTool\Models\Dao\Client()); \Applications\PMTool\Helpers\ProjectHelper::UpdateUserSessionProject($this->app()->user(), $sessionProject); } $this->SendResponseWS($result, array("resx_file" => \Applications\PMTool\Resources\Enums\ResxFileNameKeys::Client, "resx_key" => $this->action(), "step" => $result_edit ? "success" : "error")); }
public function executeAdd(\Library\HttpRequest $rq) { // Init result sent to client (e.g. browser) $result = $this->InitResponseWS(); //Get the current PM Session $pm = \Applications\PMTool\Helpers\PmHelper::GetCurrentSessionPm($this->app()->user()); $dataPost = $this->dataPost(); $dataPost["pm_id"] = $pm === NULL ? NULL : $pm[\Library\Enums\SessionKeys::PmObject]->pm_id(); $origin = $originId = ""; if (array_key_exists("origin", $dataPost)) { $postUserData = (array) $dataPost["userData"]; $postUserData["pm_id"] = $dataPost["pm_id"]; $origin = $dataPost["origin"]; $originId = $dataPost["originid"]; } else { $postUserData = $dataPost; } //Store the pm_id in the dataPost... //.. and build the object to query the DB $technician = \Applications\PMTool\Helpers\CommonHelper::PrepareUserObject($postUserData, new \Applications\PMTool\Models\Dao\Technician()); $technician->setTechnician_document(""); $result["dataIn"] = $technician; //Load interface to query the database $manager = $this->managers->getManagerOf($this->module); $result["dataId"] = $manager->add($technician); if ($pm !== NULL) { //Update the object with last inserted Id $technician->setTechnician_id($result["dataId"]); if ($technician->technician_id() > 0 && \Library\Utility\StringHelper::Equals($origin, "task") && !\Library\Utility\StringHelper::IsNullOrEmpty($originId)) { \Applications\PMTool\Helpers\TechnicianHelper::AddTaskTechnician($this, $originId, $technician->technician_id()); } //Update the PM Session array_push($pm[\Library\Enums\SessionKeys::PmTechnicians], $technician); //And update the Sessiom \Applications\PMTool\Helpers\PmHelper::SetSessionPm($this->app()->user(), $pm); } //add user record for FT if (intval($result["dataId"]) > 0) { $this->dataPost['user_email'] = $postUserData['technician_email']; $userId = \Applications\PMTool\Helpers\UserHelper::AddUser($this, $result["dataId"], \Library\Enums\UserRole::Technician); } //Send the response to browser $this->SendResponseWS($result, array("resx_file" => \Applications\PMTool\Resources\Enums\ResxFileNameKeys::Technician, "resx_key" => $this->action(), "step" => intval($result["dataId"]) > 0 && $userId > 0 ? "success" : "error")); }
public function executeGetDiscussionThread(\Library\HttpRequest $rq) { $result = $this->InitResponseWS(); $currentSessionTask = \Applications\PMTool\Helpers\TaskHelper::GetCurrentSessionTask($this->user()); $currentDiscussion = \Applications\PMTool\Helpers\DiscussionHelper::GetCurrentDiscussion($this->user); $discussionNames = array(); if ($currentDiscussion) { foreach ($currentDiscussion[\Library\Enums\SessionKeys::DiscussionPeople] as $person) { $manager = $this->managers()->getManagerOf('User'); $userTypeObject = $manager->selectUserTypeObjectByUserId($person->user_id()); $userType = \Applications\PMTool\Helpers\UserHelper::FindUserTypeFromObject($userTypeObject); if ($userType == 'pm_id') { $discussionNames[$person->discussion_person_id()] = $userTypeObject->pm_name(); } else { if ($userType == 'technician_id') { $discussionNames[$person->discussion_person_id()] = $userTypeObject->technician_name(); } else { if ($userType == 'service_id') { $discussionNames[$person->discussion_person_id()] = $userTypeObject->service_name(); } } } if ($person->discussion_person_is_author() != 1) { $result['user_type'] = $userType; } } $thread = \Applications\PMTool\Helpers\DiscussionHelper::GetDiscussionThread($this, $currentDiscussion); $time = $this->dataPost['time']; if (isset($time) && !is_null('time') && $thread) { $thread = \Applications\PMTool\Helpers\DiscussionHelper::SliceThread($thread, $time); } if ($thread) { foreach ($thread as &$content) { foreach ($discussionNames as $id => $name) { if ($id == $content->discussion_person_id()) { $content->user_name = $name; break; } } } $result['thread'] = $thread; } $result['discussion'] = $currentDiscussion[\Library\Enums\SessionKeys::DiscussionObj]; $result['success'] = true; } else { $result['success'] = false; } $this->SendResponseWS($result, array("resx_file" => \Applications\PMTool\Resources\Enums\ResxFileNameKeys::ActiveTask, "resx_key" => $this->action(), "step" => $result['success'] ? "success" : "error")); }
/** * Method that logout a user from the session and then redirect him to Login page. * * @param \Library\HttpRequest $rq */ public function executeCreate(\Library\HttpRequest $rq) { $protect = new \Library\BL\Core\Encryption(); $data = array("user_login" => $rq->getData("login"), "user_password" => $rq->getData("password"), "user_type" => $rq->getData("type"), "user_role" => \Applications\PMTool\Helpers\UserHelper::GetRoleFromType($rq->getData("type"))); $user = \Applications\PMTool\Helpers\CommonHelper::PrepareUserObject($data, new Applications\PMTool\Models\Dao\User()); $user->setUser_password($protect->Encrypt($this->app->config->get("encryption_key"), $user->user_password())); $loginDal = $this->managers->getManagerOf("Login"); $id = $loginDal->add($pm); $redirect = intval($id) > 0 ? TRUE : FALSE; if ($redirect) { $this->Redirect("login"); } }
public function executeCommunications(\Library\HttpRequest $rq) { $sessionProject = \Applications\PMTool\Helpers\ProjectHelper::GetCurrentSessionProject($this->user()); //Check if a project needs to be selected in order to display this page if (!$sessionProject) { $this->Redirect(\Library\Enums\ResourceKeys\UrlKeys::MobileTasks); } $sessionPm = $this->user->getAttribute(\Library\Enums\SessionKeys::CurrentPm); $sessionTask = \Applications\PMTool\Helpers\TaskHelper::GetCurrentSessionTask($this->user()); //\Applications\PMTool\Helpers\CommonHelper::pr($sessionTask); $this->page->addVar(\Applications\PMTool\Resources\Enums\ViewVariablesKeys::currentProject, $sessionProject[\Library\Enums\SessionKeys::ProjectObject]); $this->page->addVar(\Applications\PMTool\Resources\Enums\ViewVariablesKeys::currentTask, $sessionTask[\Library\Enums\SessionKeys::TaskObj]); $this->page->addVar(\Applications\PMTool\Resources\Enums\ViewVariablesKeys::currentPm, $sessionPm[\Library\Enums\SessionKeys::PmObject]); //Get current Discussion from session and set for view $currentDiscussion = \Applications\PMTool\Helpers\DiscussionHelper::GetCurrentDiscussion($this->user); if ($currentDiscussion) { $manager = $this->managers()->getManagerOf('User'); $discussion_person = \Applications\PMTool\Helpers\DiscussionHelper::GetOtherDiscussionPerson($this->user(), $currentDiscussion[\Library\Enums\SessionKeys::DiscussionPeople]); $discussion_user_type = $manager->selectUserTypeObjectByUserId($discussion_person->user_id()); if ($discussion_user_type) { $currentDiscussion['comm_with'] = $discussion_user_type; $currentDiscussion['comm_type'] = \Applications\PMTool\Helpers\UserHelper::FindUserTypeFromObject($discussion_user_type); } $this->page->addVar(\Applications\PMTool\Resources\Enums\ViewVariablesKeys::currentDiscussion, $currentDiscussion); } $task_services = \Applications\PMTool\Helpers\ServiceHelper::GetAndStoreTaskServices($this, $sessionTask); $task_services = \Applications\PMTool\Helpers\ServiceHelper::CategorizeTheList($task_services, "service_type"); $data = array(\Applications\PMTool\Resources\Enums\ViewVariablesKeys::module => 'activetask', \Applications\PMTool\Resources\Enums\ViewVariablesKeys::categorized_list_left => $task_services, \Applications\PMTool\Resources\Enums\ViewVariablesKeys::properties_left => \Applications\PMTool\Helpers\CommonHelper::SetPropertyNamesForDualList(strtolower("service"))); $this->page->addVar(\Applications\PMTool\Resources\Enums\ViewVariablesKeys::data, $data); $task_technicians = \Applications\PMTool\Helpers\TechnicianHelper::GetAndStoreTaskTechnicians($this, $sessionTask); $task_technicians = \Applications\PMTool\Helpers\CommonHelper::FilterObjectsToExcludeRelatedObject($task_technicians, array($this->user()->getAttribute(\Library\Enums\SessionKeys::UserTypeObject)), 'technician_id'); $data_left = array(\Applications\PMTool\Resources\Enums\ViewVariablesKeys::module => 'activetask', \Applications\PMTool\Resources\Enums\ViewVariablesKeys::objects_list_left => $task_technicians, \Applications\PMTool\Resources\Enums\ViewVariablesKeys::properties_left => \Applications\PMTool\Helpers\CommonHelper::SetPropertyNamesForDualList(strtolower("technician"))); $this->page->addVar(\Applications\PMTool\Resources\Enums\ViewVariablesKeys::data_left, $data_left); $modules = $this->app()->router()->selectedRoute()->phpModules(); $this->page->addVar(\Applications\PMTool\Resources\Enums\ViewVariablesKeys::form_modules, $modules); }
private function _StoreUserInDb($user, $userType, $userTypeId) { $role = \Applications\PMTool\Helpers\UserHelper::GetRoleFromType($userType); $user->setUser_role_id($role); if ($userType != "") { $user->setUser_type($userType); $user->setUser_value($userTypeId); } else { $user->setUser_type(""); $user->setUser_value(""); $user->setUser_role_id(1); } $manager = $this->managers->getManagerOf($this->module); $res = $manager->add($user); if (intval($res) > 0) { $user->setUser_id($res); return $user; } else { return $res; } }