Esempio n. 1
0
 /**
  * Update the specified resource in storage.
  *
  * @param  int  $id
  * @return Response
  */
 public function update($id)
 {
     $input = Input::all();
     $rules = array('id' => 'required|unique:managers,id,' . $id, 'manager' => 'required', 'email' => 'email|required');
     $messages = array('id.required' => 'Please enter manger ID', 'id.unique' => 'This manager ID has already been taken ! Please try an other one ', 'manager.required' => 'Please enter manger name', 'email.required' => 'We need to know your email address !', 'email.email' => 'Please enter a valid email address !', 'username.required' => 'Please enter a Username', 'username.unique' => 'The username has already been taken. Please enter an other one !');
     $validation = Validator::make($input, $rules, $messages);
     if ($validation->passes()) {
         $this->manager = Manager::find($id);
         $this->manager->id = Input::get('id');
         $this->manager->manager = Input::get('manager');
         $this->manager->save();
         $this->user->first_name = Input::get('manager');
         $this->user->username = Input::get('username');
         $this->user->email = Input::get('email');
         $this->user->role = 'manager';
         $this->user->manager_id = Input::get('id');
         $this->user->password = Hash::make(Input::get('password'));
         //$this->manager->users()->save($this->user);
         DB::table('users')->where('username', $this->user->username)->update(array('email' => $this->user->email, 'first_name' => $this->user->first_name));
         return Redirect::to('/managers');
     } else {
         //print_r($id);
         //exit;
         return Redirect::to('/managers/' . $id . '/edit')->withErrors($validation);
     }
 }
 public function managerusernamecheckAction()
 {
     $this->view->disable();
     $username = $this->request->getPost('username', 'string');
     $id = $this->request->getPost('id', 'int');
     $manager_exits = Manager::find(array("username = :username:", 'bind' => array('username' => $username)));
     if (count($manager_exits) == 1) {
         #存在
         foreach ($manager_exits as $manager) {
             if ($manager->project_id == $id) {
                 $this->dataReturn(array('flag' => false));
                 return;
             }
         }
         $this->dataReturn(array('flag' => true));
         return;
     } else {
         $this->dataReturn(array('flag' => false));
         return;
     }
 }
Esempio n. 3
0
 public function listleaderAction()
 {
     $this->view->disable();
     $manager = $this->session->get('Manager');
     if (empty($manager)) {
         $this->dataReturn(array('error' => '获取用户信息失败,请重新登陆'));
         return;
     }
     $project_id = $manager->project_id;
     $page = $this->request->get('page');
     $rows = $this->request->get('rows');
     $offset = $rows * ($page - 1);
     $limit = $rows;
     $sidx = $this->request->getQuery('sidx', 'string');
     $sord = $this->request->getQuery('sord', 'string');
     if ($sidx != null) {
         $sort = $sidx;
     } else {
         $sort = 'id';
         $sord = 'desc';
     }
     if ($sord != null) {
         $sort = $sort . ' ' . $sord;
     }
     //default get
     $search_state = $this->request->get('_search');
     if ($search_state == 'false') {
         $result = $this->modelsManager->createBuilder()->columns(array('Manager.id as id', 'Manager.username as username', 'Manager.name as name', 'Manager.password as password', 'Manager.last_login as last_login'))->from('Manager')->where('Manager.project_id = ' . $project_id . " AND Manager.role = 'L'")->limit($limit, $offset)->orderBy($sort)->getQuery()->execute();
         $rtn_array = array();
         $interviewers = Manager::find(array('project_id=?1 AND role = ?2', 'bind' => array(1 => $project_id, 2 => 'L')));
         //获取该项目下答题的总人数
         $count = count($interviewers);
         $rtn_array['total'] = ceil($count / $rows);
         $rtn_array['records'] = $count;
         // 			$rtn_array['rows'] = $result;
         foreach ($result as $value) {
             $rtn_array['rows'][] = $value;
         }
         $rtn_array['page'] = $page;
         $this->dataReturn($rtn_array);
         return;
     } else {
         //处理search情况
         $search_field = $this->request->get('searchField');
         $search_string = $this->request->get('searchString');
         $search_oper = $this->request->get('searchOper');
         if ($search_field == 'username') {
             $filed = 'Manager.' . $search_field;
             $oper = '=';
             $value = $search_string;
         } else {
             if ($search_field == 'name') {
                 $filed = 'Manager.' . $search_field;
                 $oper = 'LIKE';
                 $value = '%' . $search_string . '%';
             } else {
                 if ($search_field == 'last_login') {
                     $filed = 'Manager.' . $search_field;
                     if ($search_oper == 'bw') {
                         $oper = '>=';
                     } else {
                         if ($search_oper == 'ew') {
                             $oper = '<=';
                         }
                     }
                     $value = $search_string;
                 } else {
                     //..
                     return;
                 }
             }
         }
         $result = $this->modelsManager->createBuilder()->columns(array('Manager.id as id', 'Manager.username as username', 'Manager.name as name', 'Manager.password as password', 'Manager.last_login as last_login'))->from('Manager')->where('Manager.project_id = ' . $project_id . " AND Manager.role = 'L' AND {$filed} {$oper} '{$value}'")->limit($limit, $offset)->orderBy($sort)->getQuery()->execute();
         $rtn_array = array();
         $interviewers = Manager::find(array('project_id=?1 AND role = ?2', 'bind' => array(1 => $project_id, 2 => 'L')));
         //获取该项目下答题的总人数
         $count = count($interviewers);
         $rtn_array['total'] = ceil($count / $rows);
         $rtn_array['records'] = $count;
         // 			$rtn_array['rows'] = $result;
         foreach ($result as $value) {
             $rtn_array['rows'][] = $value;
         }
         $rtn_array['page'] = $page;
         $this->dataReturn($rtn_array);
         return;
     }
 }
Esempio n. 4
0
 /**
  * @param $uri
  *
  * @return Resource
  */
 public function find($uri)
 {
     /** @var \EasyRdf_Sparql_Result $result */
     $result = $this->_rm->find($uri, $this->className);
     return $result;
 }
 public function deleteManager($id)
 {
     if (Session::has('username') && Session::get('user_type') == "Root") {
         if (!is_numeric($id) || !Manager::find($id)) {
             redirect("settings/employees/managers");
         }
         $manager = Manager::find($id);
         $desc = "(" . Session::get('user_type') . ") " . "<strong>" . Session::get('username') . "</strong> has deleted manager <strong>" . $manager->first_name . " " . $manager->last_name . "</strong>.";
         //Log the changes made
         $newLog = new UserLog();
         $newLog->description = $desc;
         $newLog->user_id = Session::get('user_id');
         $newLog->type = "System";
         $newLog->save();
         $manager->delete();
         return Redirect::to("settings/employees/managers");
     } else {
         redirect("/");
     }
 }
Esempio n. 6
0
 /**
  * @param mixed $id
  * @return object|NULL
  */
 public function find($id)
 {
     // TODO solve possibility to call with more column in primary key
     return $this->manager->find($this->classMetadata->getEntityName(), $id);
 }
 private function processImport($file)
 {
     if (Session::has('username') && (Session::get('user_type') == "Root" || Session::get('user_type') == "Admin")) {
         if (!in_array($file->getClientOriginalExtension(), array("xls", "xlsx", "csv"))) {
             Input::flash();
             return Redirect::to('employees/import')->with('message', "Invalid file selected.");
         } else {
             $filename = "upload-" . str_random(9) . "." . $file->getClientOriginalExtension();
             $file->move("uploads", $filename);
             $readFile = "uploads/" . $filename;
             $reader = Excel::selectSheetsByIndex(0)->load($readFile, function ($reader) {
             })->get();
             /*
              * 				Before validating each rows of the file uploaded, the file itself is checked if it has the valid attributes (columns)
              * 				using the algorithm found below.
              * 
              * 				1. File is read.
              * 				2. Boolean variable $excelIsValid to check if the file is valid. Set to false by default.
              * 	
              */
             $excelChecker = Excel::selectSheetsByIndex(0)->load($readFile, function ($reader) {
             })->get()->toArray();
             $excelIsValid = false;
             /*
              * 				3. Loop through the excel file and check if at least once all the columns have been present.
              * 				4. If it does, $excelIsValid is set to true.
              * 				5. If $excelIsValid is still false by end of the loop, it is automatically assumed that the file is:
              * 					A.) Empty
              * 					B.) Does not have the right attributes.
              * 					C.) Has valid columns, but does not have any valid entry.
              * 					
              */
             foreach ($excelChecker as $ex) {
                 if (isset($ex["employeenumber"]) && isset($ex["lastname"]) && isset($ex["firstname"]) && isset($ex["startdate"]) && isset($ex["status"])) {
                     $excelIsValid = true;
                 }
             }
             /*				6. If file is invalid, redirect to import form and return an error. */
             if (!$excelIsValid) {
                 Input::flash();
                 File::delete($readFile);
                 return Redirect::to('employees/import')->with('message', "Excel file has invalid attributes. Please download the form.");
             }
             /*				
              * 				CHECKING EXCEL FILE FOR ERRORS WHILE READING THE ROWS
              * 
              * 				1. $hasError is a Boolean variable that is simply used to tell if any error has been found.
              * 					This variable is, by default, set to false. If any error has been detected, it is set to true,
              * 					regardless of how many errors has been detected.
              * 
              * 				2. $rowIndex indexes which row the reader is currently reading. Default value set to 1 because
              * 					the first row of excel files is automatically set as the attribute row. When the reader reads each row,
              * 					$rowIndex is incremented. For example, reader is currently reading row 2, $rowIndex will then be incremented,
              * 					setting its value to 2, thus the row number.
              * 
              * 				3. $rowsWithErrors is the array of the rows with errors. To explain further, let's say excel file has 10 readable (non-attrib)
              * 					rows. No errors were found from rows number 2-8, but errors were found in rows 9, 10, and 11. These 9, 10, and 11
              * 					will then be in the $rowsWithError.
              * 
              * 				4. $error array is the variable that will be used to collect all errors found from the excel file.
              * 					This is a two-dimensional array.
              * 
              * 
              */
             $hasError = false;
             //Detects if there are any errors.
             $hasCorrectRows = false;
             $rowIndex = 1;
             //Indexes which row the reader is reading.
             $rowsWithErrors = array();
             //This is used to contain in an array the row numbers of the rows with error.
             $error = array();
             //Error details collector.
             foreach ($reader as $r) {
                 /*
                  * 				5. Here, we immediately increment the value of $rowIndex, since the variable will be used in the core logic of this method.
                  * 				
                  * 				6. $errorCount variable is a variable used in every loop. Set to 0 when the loop begins, so it always comes back to 0 for every loop.
                  * 					$errorCount is used to track the number of errors for the current row. This variable goes hand in hand with the
                  * 					$rowsWithError array when publishing the rows with errors, and the error details for each row with error.
                  * 
                  * 					This is how $rowsWithError and $rowCount will be used:
                  * 
                  * 					for each $rowWithErrors:
                  * 						Row $rowWithErrors Index:
                  * 							Errors Found :
                  * 							$rowCount 1. Foo bar
                  * 							$rowCount 2. Jane Doe etc..
                  * 
                  * 
                  */
                 $rowIndex += 1;
                 $errorCount = 0;
                 //Counts the number of errors for the currect row.
                 $rowHasError = false;
                 //Check if this row has error. I will use this before the reading of the row ends.
                 //					If $rowHasError is still false by end of the reading, then I will write it in the database.
                 /*
                  * 
                  */
                 $start_date = !empty(trim($r->startdate)) ? trim($r->startdate) : "1994-04-16";
                 $validator = Validator::make(array("employee number" => trim($r->employeenumber), "last name" => trim($r->lastname), "first name" => trim($r->firstname), "username" => trim($r->username), "start date" => trim($r->startdate), "end date" => trim($r->enddate), "email" => trim($r->email), "status" => trim($r->status)), array("employee number" => "required|numeric|unique:tbl_employees,employee_number", "last name" => "required", "first name" => "required", "username" => "unique:tbl_employees,username", "start date" => "required|date:Y-m-d", "end date" => "date:Y-m-d|after:" . $start_date, "email" => "unique:tbl_employees,email", "status" => "required"), array("after" => "The :attribute must be after the employee start date."));
                 if ($validator->fails()) {
                     /* 					7. When error has been found, $rowsWithError is immediately updated. Also, $hasError and $rowHasError are set to true.*/
                     $hasError = true;
                     $rowHasError = true;
                     $rowsWithErrors[$rowIndex] = $rowIndex;
                     /* 					8. Then I will check which fields has error.
                      * 
                     *					9. If an error has been found in a certain field,
                     *					   I will loop through the errors found on that field, increment the $errorCount (which, again, tracks
                     *					   how many errors has been found on a certain row.), update the two-dimensional $error array. 
                     *					   Please note that the first array of $error contains the row number which the errors found belong to.
                     *
                     */
                     if ($validator->messages()->get("employee number")) {
                         foreach ($validator->messages()->get("employee number") as $e) {
                             $errorCount += 1;
                             $error[$rowIndex][$errorCount] = $errorCount . ". " . $e . "<br/>";
                         }
                     }
                     if ($validator->messages()->get("last name")) {
                         foreach ($validator->messages()->get("last name") as $e) {
                             $errorCount += 1;
                             $error[$rowIndex][$errorCount] = $errorCount . ". " . $e . "<br/>";
                         }
                     }
                     if ($validator->messages()->get("first name")) {
                         foreach ($validator->messages()->get("first name") as $e) {
                             $errorCount += 1;
                             $error[$rowIndex][$errorCount] = $errorCount . ". " . $e . "<br/>";
                         }
                     }
                     if ($validator->messages()->get("username")) {
                         foreach ($validator->messages()->get("username") as $e) {
                             $errorCount += 1;
                             $error[$rowIndex][$errorCount] = $errorCount . ". " . $e . "<br/>";
                         }
                     }
                     if ($validator->messages()->get("start date")) {
                         foreach ($validator->messages()->get("start date") as $e) {
                             $errorCount += 1;
                             $error[$rowIndex][$errorCount] = $errorCount . ". " . $e . "<br/>";
                         }
                     }
                     if ($validator->messages()->get("end date")) {
                         foreach ($validator->messages()->get("end date") as $e) {
                             $errorCount += 1;
                             $error[$rowIndex][$errorCount] = $errorCount . ". " . $e . "<br/>";
                         }
                     }
                     if ($validator->messages()->get("email")) {
                         foreach ($validator->messages()->get("email") as $e) {
                             $errorCount += 1;
                             $error[$rowIndex][$errorCount] = $errorCount . ". " . $e . "<br/>";
                         }
                     }
                     if ($validator->messages()->get("status")) {
                         foreach ($validator->messages()->get("status") as $e) {
                             $errorCount += 1;
                             $error[$rowIndex][$errorCount] = $errorCount . ". " . $e . "<br/>";
                         }
                     }
                 }
                 if (!preg_match('/^[\\pL.-\\s]+$/u', $r->firstname) || !preg_match('/^[\\pL.-\\s]+$/u', $r->lastname)) {
                     $hasError = true;
                     //This will only matter if no errors has been found above.
                     $rowHasError = true;
                     //This will only matter if no errors has been found above.
                     $rowsWithErrors[$rowIndex] = $rowIndex;
                     //This will only matter if no errors has been found above.
                     $errorCount += 1;
                     $error[$rowIndex][$errorCount] = $errorCount . ". " . "First name/last name fields must only contain alphabetic characters and whitespaces." . "<br/>";
                 }
                 if (!is_numeric($r->manager)) {
                     $hasError = true;
                     //This will only matter if no errors has been found above.
                     $rowHasError = true;
                     //This will only matter if no errors has been found above.
                     $rowsWithErrors[$rowIndex] = $rowIndex;
                     //This will only matter if no errors has been found above.
                     $errorCount += 1;
                     $error[$rowIndex][$errorCount] = $errorCount . ". " . "Manager ID should be numeric." . "<br/>";
                 }
                 if (is_numeric($r->manager) && !Manager::find($r->manager)) {
                     $hasError = true;
                     //This will only matter if no errors has been found above.
                     $rowHasError = true;
                     //This will only matter if no errors has been found above.
                     $rowsWithErrors[$rowIndex] = $rowIndex;
                     //This will only matter if no errors has been found above.
                     $errorCount += 1;
                     $error[$rowIndex][$errorCount] = $errorCount . ". " . "Invalid manager ID." . "<br/>";
                 }
                 if (empty(trim($r->nsnid)) && !in_array(strtolower($r->status), array("academy", "ojt", "contractual", "graduate", "obsolete"))) {
                     $hasError = true;
                     //This will only matter if no errors has been found above.
                     $rowHasError = true;
                     //This will only matter if no errors has been found above.
                     $rowsWithErrors[$rowIndex] = $rowIndex;
                     //This will only matter if no errors has been found above.
                     $errorCount += 1;
                     $error[$rowIndex][$errorCount] = $errorCount . ". " . "The NSN ID is required." . "<br/>";
                 }
                 if (!empty($r->nsnid) && !is_numeric(trim($r->nsnid)) && !in_array($r->status, array("academy", "ojt", "contractual", "graduate", "obsolete"))) {
                     $hasError = true;
                     //This will only matter if no errors has been found above.
                     $rowHasError = true;
                     //This will only matter if no errors has been found above.
                     $rowsWithErrors[$rowIndex] = $rowIndex;
                     //This will only matter if no errors has been found above.
                     $errorCount += 1;
                     $error[$rowIndex][$errorCount] = $errorCount . ". " . "The NSN ID should be numeric." . "<br/>";
                 }
                 if (!empty($r->nsnid) && Employee::where("nsn_id", "=", $r->nsnid)->first()) {
                     $hasError = true;
                     //This will only matter if no errors has been found above.
                     $rowHasError = true;
                     //This will only matter if no errors has been found above.
                     $rowsWithErrors[$rowIndex] = $rowIndex;
                     //This will only matter if no errors has been found above.
                     $errorCount += 1;
                     $error[$rowIndex][$errorCount] = $errorCount . ". " . "NSN ID already exists." . "<br/>";
                 }
                 if (!empty($r->email) && !filter_var(trim($r->email), FILTER_VALIDATE_EMAIL)) {
                     $hasError = true;
                     //This will only matter if no errors has been found above.
                     $rowHasError = true;
                     //This will only matter if no errors has been found above.
                     $rowsWithErrors[$rowIndex] = $rowIndex;
                     //This will only matter if no errors has been found above.
                     $errorCount += 1;
                     $error[$rowIndex][$errorCount] = $errorCount . ". " . "Invalid e-mail address." . "<br/>";
                 }
                 if (is_numeric($r->businessline) && !BusinessLine::find($r->businessline)) {
                     $hasError = true;
                     //This will only matter if no errors has been found above.
                     $rowHasError = true;
                     //This will only matter if no errors has been found above.
                     $rowsWithErrors[$rowIndex] = $rowIndex;
                     //This will only matter if no errors has been found above.
                     $errorCount += 1;
                     $error[$rowIndex][$errorCount] = $errorCount . ". " . "Invalid Business Line ID." . "<br/>";
                 }
                 if (is_numeric($r->unit) && !Unit::find($r->unit)) {
                     $hasError = true;
                     //This will only matter if no errors has been found above.
                     $rowHasError = true;
                     //This will only matter if no errors has been found above.
                     $rowsWithErrors[$rowIndex] = $rowIndex;
                     //This will only matter if no errors has been found above.
                     $errorCount += 1;
                     $error[$rowIndex][$errorCount] = $errorCount . ". " . "Invalid Unit ID." . "<br/>";
                 }
                 if (is_numeric($r->unit) && is_numeric($r->businessline) && (Unit::find($r->unit) && !Unit::where("id", "=", $r->unit)->where("businessline_id", "=", $r->businessline)->first())) {
                     $hasError = true;
                     //This will only matter if no errors has been found above.
                     $rowHasError = true;
                     //This will only matter if no errors has been found above.
                     $rowsWithErrors[$rowIndex] = $rowIndex;
                     //This will only matter if no errors has been found above.
                     $errorCount += 1;
                     $error[$rowIndex][$errorCount] = $errorCount . ". " . "Selected Unit ID does not belong to the selected Business Line ID." . "<br/>";
                 }
                 if (!in_array(strtolower($r->status), array("ojt", "contractual", "nsn guest", "academy", "graduate", "on-board", "resigned", "obsolete"))) {
                     $hasError = true;
                     //This will only matter if no errors has been found above.
                     $rowHasError = true;
                     //This will only matter if no errors has been found above.
                     $rowsWithErrors[$rowIndex] = $rowIndex;
                     //This will only matter if no errors has been found above.
                     $errorCount += 1;
                     $error[$rowIndex][$errorCount] = $errorCount . ". " . "Invalid employee status." . "<br/>";
                 }
                 if (!$rowHasError) {
                     $hasCorrectRows = true;
                     $desc = "(" . Session::get('user_type') . ") " . "<strong>" . Session::get('username') . "</strong> has added employee <strong>" . trim($r->firstname) . " " . trim($r->lastname) . "</strong>, employee number <strong>" . trim($r->employeenumber) . "</strong>, with status <strong>" . trim($r->status) . "</strong>.";
                     $employee = new Employee();
                     $employee->employee_number = $r->employeenumber;
                     $employee->last_name = trim($r->lastname);
                     $employee->first_name = trim($r->firstname);
                     $employee->username = trim($r->username) != null ? trim($r->username) : null;
                     $employee->nickname = trim($r->nickname) != null ? trim($r->nickname) : null;
                     $employee->manager_id = $r->manager != null ? $r->manager : null;
                     $employee->start_date = $r->startdate;
                     $employee->end_date = $r->enddate != null ? $r->enddate : null;
                     $employee->nsn_id = $r->nsnid != null ? $r->nsnid : null;
                     $employee->email = trim($r->email) != null ? trim($r->email) : null;
                     $employee->business_line_id = $r->businessline != null ? $r->businessline : null;
                     $employee->unit_id = $r->unit != null ? $r->unit : null;
                     $employee->subunit = trim($r->subunit) != null ? trim($r->subunit) : null;
                     $employee->cellphone_number = trim($r->cellphonenumber) != null ? trim($r->cellphonenumber) : null;
                     $employee->status = trim($r->status);
                     $employee->save();
                     //Log the changes made
                     $newLog = new UserLog();
                     $newLog->description = $desc;
                     $newLog->user_id = Session::get('user_id');
                     $newLog->type = "Employees";
                     $newLog->save();
                 }
             }
             File::delete($readFile);
             if ($hasCorrectRows) {
                 //Log the changes made
                 $desc = "(" . Session::get("user_type") . ") <b>" . Session::get("username") . "</b> has imported data to the employees database. ";
                 $newLog = new UserLog();
                 $newLog->description = $desc;
                 $newLog->user_id = Session::get('user_id');
                 $newLog->type = "Employees";
                 $newLog->save();
             }
             return $this->importResult($hasError, $hasCorrectRows, $rowsWithErrors, $error);
         }
     } else {
         return Redirect::to('/');
     }
 }
Esempio n. 8
0
 public function exportroleAction($type)
 {
     $manager = $this->session->get('Manager');
     if (empty($manager)) {
         $this->dataReturn(array('error' => '用户信息失效,请重新登录!'));
         return;
     }
     try {
         $excelExport = new ExcelExport();
         $file_name = '';
         switch ($type) {
             case 1:
                 $result = Examinee::find(array('project_id = ?1 AND type = 0 ', 'bind' => array(1 => $manager->project_id)));
                 $file_name = $excelExport->ExamineeExport($result, $manager->project_id);
                 $this->dataReturn(array('success' => $file_name));
                 return;
                 break;
             case 2:
                 $result = Manager::find(array('project_id = ?1 AND role = \'I\'', 'bind' => array(1 => $manager->project_id)));
                 $file_name = $excelExport->InterviewerExport($result, $manager->project_id);
                 $this->dataReturn(array('success' => $file_name));
                 return;
                 break;
             case 3:
                 $result = Manager::find(array('project_id = ?1 AND role = \'L\'', 'bind' => array(1 => $manager->project_id)));
                 $file_name = $excelExport->LeaderExport($result, $manager->project_id);
                 $this->dataReturn(array('success' => $file_name));
                 return;
                 break;
             default:
                 $this->dataReturn(array('error' => '参数错误-' . $type));
                 return;
         }
     } catch (Exception $e) {
         $this->dataReturn(array('error' => '列表生成失败'));
         return;
     }
 }
Esempio n. 9
0
 public static function insertInterviewer($data, $project_id)
 {
     //对原有数据整理
     $interviewer = Manager::find(array('project_id =?0 and role=?1', "order" => "username desc", 'bind' => array(0 => $project_id, 1 => 'I')));
     $new_count = count($data);
     //1501 101
     $already_number = 0;
     if (count($interviewer) == 0) {
         $already_number = 0;
     } else {
         $already_number = $interviewer[0]->username - $project_id * 1000 - 100;
     }
     #异常
     if ($new_count + $already_number > 99) {
         throw new Exception('项目人数超限-99');
     }
     $start = $project_id * 1000 + 100 + $already_number + 1;
     try {
         $manager = new TxManager();
         $transaction = $manager->get();
         foreach ($data as $value) {
             $manager = new Manager();
             $manager->setTransaction($transaction);
             $manager->project_id = $project_id;
             $manager->role = "I";
             $manager->username = $start++;
             $manager->password = self::getRandString();
             $manager->name = $value;
             if ($manager->save() == false) {
                 $transaction->rollback("数据插入失败");
             }
         }
         $transaction->commit();
         return true;
     } catch (TxFailed $e) {
         throw new Exception($e->getMessage());
     }
 }