/** * Assign projects to new client admin * @param $userId * @param $clientId */ public static function assignClientAdminProjects($userId, $clientId) { $condition = new CDbCriteria(); $condition->condition = "t.Client_ID = '" . $clientId . "'"; $projects = Projects::model()->findAll($condition); foreach($projects as $project) { $userProject = UsersProjectList::model()->findByAttributes(array( 'User_ID' => $userId, 'Project_ID' => $project->Project_ID, )); if (!$userProject) { $userProject = new UsersProjectList(); $userProject->User_ID = $userId; $userProject->Client_ID = $clientId; $userProject->Project_ID = $project->Project_ID; $userProject->save(); } } }
/** * Approve users action */ public function actionApproveUsers() { if (isset($_GET['users']) && isset($_GET['userTypes'])) { foreach ($_GET['users'] as $id => $value) { if (is_numeric($id) && ($value == 'Y' || $value == 'N') && isset($_GET['userTypes'][$id]) && isset($this->userTypes[$_GET['userTypes'][$id]])) { // get user type $userType = $this->userTypes[$_GET['userTypes'][$id]]; $id = intval($id); //get users to approve row $usersToApprove = UsersToApprove::model()->with('user', 'client')->findByPk($id); if ($usersToApprove && $value == 'Y') { //approve user if ($usersToApprove->New_Client == UsersToApprove::NEW_CLIENT) { $client = $usersToApprove->client; $client->Client_Type = 1; $client->Client_Status = Clients::ACTIVE; $client->Client_Number = $client->Client_ID; $client->save(); ClientServiceSettings::addClientServiceSettings($client->Client_ID, true); $password = Helper::generatePassword(); $user = $usersToApprove->user; $user->Active = Users::ACTIVE; $user->User_Pwd = md5($password); $user->save(); $userClientRelation = UsersClientList::model()->findByAttributes(array( 'User_ID' =>$user->User_ID, 'Client_ID' =>$client->Client_ID, )); if ($userClientRelation) { $userClientRelation->User_Type = $userType; if (in_array($userType, UsersClientList::$clientAdmins)) { $userClientRelation->User_Approval_Value = Aps::APPROVED; } else if ($userType == UsersClientList::APPROVER) { $userClientRelation->User_Approval_Value = Aps::READY_FOR_APPROVAL + 1; } else { $userClientRelation->User_Approval_Value = 0; } $userClientRelation->save(); } $emailSuccess = Mail::sendRegistrationMail($user->person->Email, $user->User_Login,$password, $user->person->First_Name, $user->person->Last_Name, $client->company->Company_Name); $usersToApprove->delete(); } else { $usersToApprove->Approved_By_Admin = UsersToApprove::APPR_BY_ADMIN; $usersToApprove->save(); $client = $usersToApprove->client; $client->Client_Type = 1; $client->Client_Status = Clients::ACTIVE; $client->Client_Number = $client->Client_ID; $client->save(); $user = $usersToApprove->user; if ($user->User_Pwd == md5('temp100')) { // if user requested to join company by registration form $password = Helper::generatePassword(); $user->Active = Users::ACTIVE; $user->User_Pwd = md5($password); $user->Default_Project = 0; $user->save(); Mail::sendUserRegistrationMail($user->person->Email, $user->User_Login, $password, $user->person->First_Name, $user->person->Last_Name, $client->company->Company_Name); } else { // if user requested to join company and there is not client-admins $user->Active = Users::ACTIVE; $user->save(); } $condition = UsersClientList::getClientAdminCondition($usersToApprove->Client_ID); $client_admins_list = UsersClientList::model()->findAll($condition); //this is client admins for current client if ($client_admins_list) { // if client has client-admins foreach ($client_admins_list as $clientAdm) { $clientAdmin = Users::model()->with('person')->findByPk($clientAdm->User_ID); $emailSuccess = Mail::sendClientOfUserRegistrationMail($clientAdmin->person->Email, $clientAdmin->person->First_Name, $clientAdmin->person->Last_Name, $user->person->First_Name, $user->person->Last_Name, $client->company->Company_Name); } } // if client hasn't client admins $usersClientList = UsersClientList::model()->findByAttributes(array( 'Client_ID' => $usersToApprove->Client_ID, 'User_ID' => $usersToApprove->User_ID )); if (!$usersClientList) { $usersClientList = new UsersClientList; } $usersClientList->User_ID = $usersToApprove->User_ID; $usersClientList->Client_ID = $usersToApprove->Client_ID; $usersClientList->User_Type = $userType; if (in_array($userType, UsersClientList::$clientAdmins)) { $usersClientList->User_Approval_Value = Aps::APPROVED; } else if ($userType == UsersClientList::APPROVER) { $usersClientList->User_Approval_Value = Aps::READY_FOR_APPROVAL + 1; } else { $usersClientList->User_Approval_Value = 0; } $usersClientList->save(); $project = Projects::model()->findByAttributes(array( 'Client_ID' => $usersToApprove->Client_ID, )); $usersProjectList = new UsersProjectList; $usersProjectList->User_ID = $usersToApprove->User_ID; $usersProjectList->Client_ID = $usersToApprove->Client_ID; $usersProjectList->Project_ID = $project->Project_ID; $usersProjectList->save(); if ($user->Default_Project == 0) { $user->Default_Project = $project->Project_ID; } $user->save(); $usersToApprove->delete(); Mail::sendAddUserToClientMail($user->person->Email, $user->person->First_Name, $user->person->Last_Name, $client->company->Company_Name); } } else if ($usersToApprove && $value == 'N') { //reject user $user = $usersToApprove->user; $client = $usersToApprove->client; if ($usersToApprove->New_Client == UsersToApprove::NEW_CLIENT) { $company = $client->company; $addresses = $company->adreses; //delete company addresses foreach ($addresses as $address) { $companyAddress = CompanyAddresses::model()->findByAttributes(array( 'Company_ID' => $company->Company_ID, 'Address_ID' => $address->Address_ID, )); if ($companyAddress) { $companyAddress->delete(); } $address->delete(); } $company->delete(); $usersClientList = UsersClientList::model()->findByAttributes(array( 'User_ID' => $user->User_ID, 'Client_ID' => $client->Client_ID, )); if ($usersClientList) { $usersClientList->delete(); } $usersToApprove->delete(); $client->delete(); } else { $usersToApprove->delete(); } if ($user->User_Pwd == md5('temp100')) { $user->Active = Users::NOT_ACTIVE; $user->Default_Project = 0; $user->save(); Mail::sendRejectUserByAdminMail($user->person->Email, $user->person->First_Name, $user->person->Last_Name); } else { Mail::sendRejectMail($user->person->Email, $user->person->First_Name, $user->person->Last_Name, $client->company->Company_Name); } } } } Yii::app()->user->setFlash('success', "Users have been successfully approved/rejected!"); } else { Yii::app()->user->setFlash('success', "Users was not approved/rejected!"); } $this->redirect('/admin?tab=reg_requests'); }