コード例 #1
0
 public function indexAction()
 {
     $request = $this->getRequest();
     $cards = new Rp_Db_Table_Ach_Cards();
     $id = $request->getParam('id', null);
     if ($id !== null) {
         $card = $cards->find($id)->current();
         if (empty($card)) {
             throw new Exception('Карточка достижений с указанным идентификатором не найдена.');
         }
     } else {
         $personId = $request->getParam('personid', null);
         $period = $request->getParam('period', date('Y'));
         $card = $cards->findByPersonIdAndPeriod($personId, $period);
     }
     $user = Rp_User::getInstance();
     $emp = $card->getEmployee();
     $person = $emp->getPerson();
     $periods = range(2006, date('Y') + 1);
     $periods = array_combine($periods, $periods);
     $statuses = new Rp_Db_Table_Ach_Cards_Statuses();
     $status = $statuses->find($card->status_id)->current();
     $months = new Rp_Db_Table_Months();
     $ratings = new Rp_Db_Table_Ach_Ratings();
     $trainsGroupsMethods = new Rp_Db_Table_Ach_Trainings_GroupsMethods();
     $trainsRespons = new Rp_Db_Table_Ach_Trainings_Respons();
     $careerFlags = new Rp_Db_Table_Ach_Cards_CareerFlags();
     $view = $this->initView();
     $view->title = Rp::getTitle(array($person->fullname, "Карточка достижений {$card->period}"));
     $view->emp = $emp;
     $view->person = $person;
     $view->user = $user;
     $view->userRole = $this->_getUserRole($card, $user);
     $view->card = $card;
     $view->periods = $periods;
     $view->status = $status;
     $view->tasks = $card->fetchTasks();
     $view->personalTasks = $card->fetchPersonalTasks();
     $view->competences = $card->fetchCompetences();
     $view->personalCompetences = $card->fetchPersonalCompetences();
     $view->trainings = $card->fetchTrainings();
     $view->personalTrainings = $card->fetchPersonalTrainings();
     $view->approvals = new Achievs_ApprovalsModel($card);
     $view->months = $months->fetchNames();
     $view->ratings = $ratings->fetchNames();
     $view->rate_weights = $ratings->fetchWeights();
     $view->rate_name_weights = $ratings->fetchNameWeights();
     $view->trainsGroupsMethods = $trainsGroupsMethods->toArrayNames();
     $view->trainsGroupsMethodsActual = $trainsGroupsMethods->toArrayNamesWithoutDisabled();
     $view->trainsRespons = $trainsRespons->fetchNames();
     $view->careerFlags = $careerFlags->fetchNames();
     $view->count_func = count($emp->getFuncManagers()->getCol('person_id'));
     $view->emails = $this->_getEmails($card, $user);
     $view->tab = isset($_SESSION['tab']) ? $_SESSION['tab'] : 'tasks';
 }
コード例 #2
0
 private function CalculateWeights($tasks, $rate_weights, $card)
 {
     $sum = 0;
     $func_sum = 0;
     foreach ($tasks as $item) {
         if ($item->weight && $item->status != 0 && $item->is_personal == null) {
             if ($item->is_functional) {
                 $val = $rate_weights[$item->rating_id][weight];
                 // вес рейтинга
                 $wght = $item->weight;
                 $func_sum += $val * $wght;
             } else {
                 $value = $rate_weights[$item->rating_id][weight];
                 // вес рейтинга
                 $weight = $item->weight;
                 $sum += $value * $weight;
             }
         }
     }
     $sum /= 100;
     $func_sum /= 100;
     $result = 0;
     if ($func_sum > 0) {
         $rate_sum = round($sum);
         $rate_func_sum = round($func_sum);
         $result = round(($rate_sum * $card->ratio_mng + $rate_func_sum * $card->ratio_fnc) / 100);
     } else {
         $result = round($sum);
     }
     $rate = new Rp_Db_Table_Ach_Ratings();
     $name = $rate->fetchNameWeights();
     $ret = null;
     foreach ($name as $key => $value) {
         if ($value[weight] == $result) {
             $ret = $key;
         }
     }
     return $ret;
 }
コード例 #3
0
 private function CalculateWeights($competences, $rate_weights)
 {
     $sum = 0;
     $count = 0;
     foreach ($competences as $item) {
         if (!$item['disabled'] && $item['rating_id']) {
             $val = $rate_weights[$item['rating_id']][weight];
             // вес рейтинга
             $sum += $val;
             $count++;
         }
     }
     $result = 0;
     if ($count) {
         $result = round($sum / $count);
     }
     $rate = new Rp_Db_Table_Ach_Ratings();
     $name = $rate->fetchNameWeights();
     $ret = null;
     foreach ($name as $key => $value) {
         if ($value[weight] == $result) {
             $ret = $key;
         }
     }
     return $ret;
 }