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);
 }
 public function executeGetItem(\Library\HttpRequest $rq)
 {
     // Init result
     $result = $this->InitResponseWS();
     $technician_id = intval($this->dataPost["technician_id"]);
     $pm = \Applications\PMTool\Helpers\PmHelper::GetCurrentSessionPm($this->app()->user());
     $technician_selected = \Applications\PMTool\Helpers\CommonHelper::FindObjectByIntValue($technician_id, "technician_id", $pm[\Library\Enums\SessionKeys::PmTechnicians]);
     $result["technician"] = $technician_selected;
     $this->SendResponseWS($result, array("resx_file" => \Applications\PMTool\Resources\Enums\ResxFileNameKeys::Technician, "resx_key" => $this->action(), "step" => $technician_selected !== NULL ? "success" : "error"));
 }
 public static function AddMessageToThread($caller, $userConnected, $currentDiscussion, $dataPost)
 {
     $manager = $caller->managers()->getManagerOf('DiscussionContent');
     $discussion_person = \Applications\PMTool\Helpers\CommonHelper::FindObjectByIntValue(intval($userConnected->user_id()), 'user_id', $currentDiscussion[\Library\Enums\SessionKeys::DiscussionPeople]);
     $discussion_content = new \Applications\PMTool\Models\Dao\Discussion_content();
     $discussion_content->setDiscussion_person_id($discussion_person->discussion_person_id());
     $discussion_content->setDiscussion_content_message($dataPost['discussion_content_message']);
     $discussion_content_id = $manager->add($discussion_content);
     self::GetDiscussionThread($caller, $currentDiscussion);
     return $discussion_content_id;
 }
 public static function GetAUserForm(\Library\User $user, $form_id)
 {
     $match = NULL;
     $sessionProject = \Applications\PMTool\Helpers\ProjectHelper::GetCurrentSessionProject($user);
     $forms = $sessionProject[\Library\Enums\SessionKeys::ProjectAvailableForms][\Library\Enums\SessionKeys::ProjectUserForms];
     if ($forms !== NULL) {
         $match = CommonHelper::FindObjectByIntValue($form_id, "form_id", $forms);
     }
     return $match;
 }
 public function executeGetItem(\Library\HttpRequest $rq)
 {
     $result = $this->InitResponseWS();
     $sessionProjects = \Applications\PMTool\Helpers\ProjectHelper::GetSessionProjects($this->user());
     $facilities = \Applications\PMTool\Helpers\CommonHelper::GetObjectListFromSessionArrayBySessionKey($sessionProjects, \Library\Enums\SessionKeys::FacilityObject);
     $facility = \Applications\PMTool\Helpers\CommonHelper::FindObjectByIntValue(intval($this->dataPost["facility_id"]), 'facility_id', $facilities);
     $projects = \Applications\PMTool\Helpers\CommonHelper::GetObjectListFromSessionArrayBySessionKey($sessionProjects, \Library\Enums\SessionKeys::ProjectObject);
     $project = \Applications\PMTool\Helpers\CommonHelper::FindObjectByIntValue(intval($facility->project_id()), 'project_id', $projects);
     $result['data'][0]['facility'] = $facility;
     $result['data'][0]['project'] = $project;
     $this->SendResponseWS($result, array("resx_file" => \Applications\PMTool\Resources\Enums\ResxFileNameKeys::Facility, "resx_key" => $this->action(), "step" => count($result['data']) > 0 ? "success" : "error"));
 }
 public static function SetCurrentProjectIfPmHasOnlyOneAndReturnProjects(\Library\User $user)
 {
     $projects = \Applications\PMTool\Helpers\ProjectHelper::GetSessionProjects($user);
     $pm = \Applications\PMTool\Helpers\PmHelper::GetCurrentSessionPm($user);
     $project_ids = count($pm[\Library\Enums\SessionKeys::PmProjectIds]) > 0 ? $pm[\Library\Enums\SessionKeys::PmProjectIds] : FALSE;
     if (count($projects) === 1 && $project_ids !== FALSE) {
         \Applications\PMTool\Helpers\ProjectHelper::SetCurrentSessionProject($user, $projects[\Library\Enums\SessionKeys::ProjectKey . $project_ids[0]]);
     } else {
         if (count($projects) > 1 && $project_ids !== FALSE) {
             $project_objects = \Applications\PMTool\Helpers\CommonHelper::GetListObjectsInSessionByKey($user, \Library\Enums\SessionKeys::ProjectObject);
             $project = \Applications\PMTool\Helpers\CommonHelper::FindObjectByIntValue(1, 'project_is_default', $project_objects);
             if ($project !== false) {
                 \Applications\PMTool\Helpers\ProjectHelper::SetCurrentSessionProject($user, $projects[\Library\Enums\SessionKeys::ProjectKey . $project->project_id()]);
             }
         }
     }
     return $projects;
 }
 /**
  * <p> Retrieve complete marker items based on latitude, longitude and active properties of Location objects with no task and Location objects with task linked
  * </p>
  * <p> Build as an output an associative array in the Google Maps API format
  * </p>
  * @param array $locations <p>
  * 2 element array with nested array for locations with no tasks and for locations with tasks linked
  * array(
  * "\Library\Enums\SessionKeys::TaskLocations" => $projectLocationsArray,
  * "\Library\Enums\SessionKeys::ProjectLocations" => $taskLocationsArray
  * )
  * </p>
  * @param string $properties <p>
  * Associative object->property list
  * @return array $markers <p>
  * The array with location info and nested array "marker" in Google Maps API format
  * </p>
  */
 public static function CreateTaskLocationMarkerItems($caller, $locations, $properties, $icons, $activeTask)
 {
     $markers = array();
     $marker = array();
     $sessionTask = \Applications\PMTool\Helpers\TaskHelper::GetCurrentSessionTask($caller->app()->user());
     $taskLocations = $sessionTask[\Library\Enums\SessionKeys::TaskLocations];
     $locationObjectType = reset($properties);
     foreach ($locations as $locationType => $currentLocations) {
         foreach ($currentLocations as $location) {
             if (isset($locationObjectType["objectLatPropName"]) && isset($locationObjectType["objectLngPropName"]) && self::CheckCoordinateValue($location->{$locationObjectType}["objectLatPropName"]()) && self::CheckCoordinateValue($location->{$locationObjectType}["objectLngPropName"]())) {
                 $marker["marker"]["lat"] = $location->{$locationObjectType}["objectLatPropName"]();
                 $marker["marker"]["lng"] = $location->{$locationObjectType}["objectLngPropName"]();
                 $marker["id"] = $location->{$locationObjectType}["objectIdPropName"]();
                 $marker["marker"]["title"] = $marker["name"] = $location->{$locationObjectType}["objectNamePropName"]();
                 $marker["noLatLng"] = false;
             } else {
                 $marker["noLatLng"] = true;
                 $marker["id"] = $location->{$locationObjectType}["objectIdPropName"]();
                 $marker["name"] = $location->{$locationObjectType}["objectNamePropName"]();
             }
             $marker["active"] = $location->{$locationObjectType}["objectActivePropName"]();
             if (isset($locationObjectType["objectActivePropName"])) {
                 if ($locationType == \Library\Enums\SessionKeys::TaskLocations) {
                     $taskLocationObj = \Applications\PMTool\Helpers\CommonHelper::FindObjectByIntValue(intval($location->location_id()), 'location_id', $taskLocations);
                     if ($taskLocationObj) {
                         if ($taskLocationObj->task_location_status() == 2 and $activeTask) {
                             $marker["marker"]["icon"] = $icons['taskFinished'];
                         } else {
                             if ($taskLocationObj->task_location_status() == 1 and $activeTask) {
                                 $marker["marker"]["icon"] = $icons['taskInProcess'];
                             } else {
                                 $marker["marker"]["icon"] = $icons['task'];
                             }
                         }
                     }
                     $marker["task"] = true;
                 } else {
                     $marker["marker"]["icon"] = $location->{$locationObjectType}["objectActivePropName"]() ? $icons["locationActiveSmall"] : $icons["locationInactive"];
                     $marker["task"] = false;
                 }
             }
             if (!isset($marker["marker"]["lat"]) && !isset($marker["marker"]["lng"])) {
                 unset($marker["marker"]);
             }
             $markers[] = $marker;
         }
     }
     return $markers;
 }
 public function executeListNotes(\Library\HttpRequest $rq)
 {
     $modules = $this->app()->router()->selectedRoute()->phpModules();
     $sessionProject = \Applications\PMTool\Helpers\ProjectHelper::GetCurrentSessionProject($this->app()->user());
     if (!$sessionProject) {
         $this->Redirect(\Library\Enums\ResourceKeys\UrlKeys::MobileTasks);
     }
     $sessionTask = \Applications\PMTool\Helpers\TaskHelper::GetCurrentSessionTask($this->app()->user());
     $locationId = $this->user()->getAttribute(\Library\Enums\SessionKeys::CurrentLocationId);
     if (isset($locationId) && $locationId) {
         $locations = $sessionProject[\Library\Enums\SessionKeys::ProjectLocations];
         $currentLocation = \Applications\PMTool\Helpers\CommonHelper::FindObjectByIntValue(intval($locationId), 'location_id', $locations);
         if ($currentLocation) {
             $this->page->addVar(\Applications\PMTool\Resources\Enums\ViewVariablesKeys::current_location, $currentLocation);
         }
     }
     $this->page->addVar(\Applications\PMTool\Resources\Enums\ViewVariablesKeys::currentTask, $sessionTask[\Library\Enums\SessionKeys::TaskObj]);
     $this->page->addVar(\Applications\PMTool\Resources\Enums\ViewVariablesKeys::currentProject, $sessionProject[\Library\Enums\SessionKeys::ProjectObject]);
     $this->page->addVar(\Applications\PMTool\Resources\Enums\ViewVariables\Popup::tooltip_message_module, $modules[\Applications\PMTool\Resources\Enums\PhpModuleKeys::tooltip_msg]);
     $this->page->addVar(\Applications\PMTool\Resources\Enums\ViewVariablesKeys::notes, $modules[\Applications\PMTool\Resources\Enums\PhpModuleKeys::notes]);
     $this->page->addVar(\Applications\PMTool\Resources\Enums\ViewVariablesKeys::upload_file, $modules[\Applications\PMTool\Resources\Enums\PhpModuleKeys::upload_file]);
     $this->page->addVar(\Applications\PMTool\Resources\Enums\ViewVariablesKeys::task_instructions, $sessionTask[\Library\Enums\SessionKeys::TaskObj]->task_instructions());
 }
 public function executeDelete(\Library\HttpRequest $rq)
 {
     // Init result
     $result = $this->InitResponseWS();
     $db_result = FALSE;
     $db_result2 = TRUE;
     $userId = intval($this->dataPost["user_id"]);
     $isAdmin = $this->app()->user()->getRole();
     //Load interface to query the database
     if ($isAdmin == 1) {
         $users = \Applications\PMTool\Helpers\UserHelper::GetAndStoreUsersInSession($this);
         $user = \Applications\PMTool\Helpers\CommonHelper::FindObjectByIntValue(intval($userId), 'user_id', $users);
         $manager = $this->managers->getManagerOf($this->module);
         $db_result = $manager->delete($user, "user_id");
         if ($db_result !== FALSE) {
             if ($user->user_type() == 'pm_id') {
                 $db_result2 = FALSE;
                 $pm = new \Applications\PMTool\Models\Dao\Project_manager();
                 $pm->setPm_id($user->user_value());
                 $manager = $this->managers->getManagerOf('Pm');
                 $db_result2 = $manager->delete($pm, 'pm_id');
             }
             $this->app()->user->unsetAttribute(\Library\Enums\SessionKeys::AllUsers);
         }
     }
     $this->SendResponseWS($result, array("resx_file" => \Applications\PMTool\Resources\Enums\ResxFileNameKeys::User, "resx_key" => $this->action(), "step" => $db_result !== FALSE && $db_result2 !== FALSE ? "success" : "error"));
 }