Exemplo n.º 1
0
 /**
  * 保存会议数据
  *
  * @param $data
  */
 public function onSave(Tudu_Model_Tudu_Entity_Tudu $tudu, Tudu_Model_Tudu_Entity_Extension_Abstract $data)
 {
     /* @var $daoCycle Dao_Td_Tudu_Cycle */
     $daoCycle = Tudu_Dao_Manager::getDao('Dao_Td_Tudu_Cycle', Tudu_Dao_Manager::DB_TS);
     $cycle = $data->getAttributes();
     if (null !== $daoCycle->getCycle(array('cycleid' => $tudu->cycleId))) {
         $daoCycle->updateCycle($tudu->cycleId, $cycle);
     } else {
         $daoCycle->createCycle($cycle);
     }
 }
Exemplo n.º 2
0
 /**
  * 保存会议数据
  *
  * @param $data
  */
 public function onSave(Tudu_Model_Tudu_Entity_Tudu $tudu, Tudu_Model_Tudu_Entity_Extension_Abstract $data)
 {
     /* @var $daoMeeting Dao_Td_Tudu_Meeting */
     $daoMeeting = Tudu_Dao_Manager::getDao('Dao_Td_Tudu_Meeting', Tudu_Dao_Manager::DB_TS);
     $attrs = $data->getAttributes();
     if ($daoMeeting->existsMeeting($tudu->tuduId)) {
         if (empty($attrs)) {
             return true;
         }
         $ret = $daoMeeting->updateMeeting($tudu->tuduId, $attrs);
     } else {
         $attrs['tuduid'] = $tudu->tuduId;
         $attrs['orgid'] = $tudu->orgId;
         $ret = $daoMeeting->createMeeting($attrs);
     }
 }
Exemplo n.º 3
0
 /**
  * 保存会议数据
  *
  * @param $data
  */
 public function onSave(Tudu_Model_Tudu_Entity_Tudu $tudu, Tudu_Model_Tudu_Entity_Extension_Abstract $data)
 {
     /* @var $daoMeeting Dao_Td_Tudu_Meeting */
     $daoVote = Tudu_Dao_Manager::getDao('Dao_Td_Tudu_Vote', Tudu_Dao_Manager::DB_TS);
     $attrs = $data->getAttributes();
     $options = $data->getOptions();
     $vote = array();
     if (isset($attrs['maxchoices']) && is_int($attrs['maxchoices'])) {
         $vote['maxchoices'] = $attrs['maxchoices'];
     }
     if (isset($attrs['privacy'])) {
         $vote['privacy'] = $attrs['privacy'] ? 1 : 0;
     }
     if (isset($attrs['visible'])) {
         $vote['visible'] = $attrs['visible'] ? 1 : 0;
     }
     if (isset($attrs['expiretime']) && is_int($attrs['expiretime'])) {
         $vote['expiretime'] = $attrs['expiretime'];
     }
     if (isset($attrs['votecount'])) {
         $vote['votecount'] = (int) $attrs['votecount'];
     }
     $vote['tuduid'] = $tudu->tuduId;
     if ($daoVote->existsVote($tudu->tuduId)) {
         $ret = $daoVote->updateVote($tudu->tuduId, $vote);
     } else {
         $ret = $daoVote->createVote($vote);
     }
     foreach ($options as $option) {
         if (!empty($option['isnew'])) {
             $option['tuduid'] = $tudu->tuduId;
             $daoVote->createOption($option);
         } else {
             $daoVote->updateOption($tudu->tuduId, $option['optionid'], $option);
         }
     }
 }
Exemplo n.º 4
0
 /**
  *
  * @param Tudu_Model_Tudu_Entity_Extension_Abstract $extension
  */
 public function addExtension(Tudu_Model_Tudu_Entity_Extension_Abstract $extension)
 {
     $this->_extensions[] = $extension;
     $extension->init($this);
 }
Exemplo n.º 5
0
 /**
  * 审批
  *
  * @param $data
  */
 public function onReview(Tudu_Model_Tudu_Entity_Tudu $tudu, Tudu_Model_Tudu_Entity_Extension_Abstract $data)
 {
     // 完成
     if ($tudu->stepId == '^end') {
         // 补签申请的另外处理
         if ($data->getAttribute('categoryid') == '^checkin') {
             return $this->updateCheckinApply($tudu, $data);
         }
         $data = $data->getAttributes();
         /* @var $daoApply Dao_App_Attend_Apply */
         $daoApply = Tudu_Dao_Manager::getDao('Dao_App_Attend_Apply', Tudu_Dao_Manager::DB_APP);
         $daoApply->updateApply($data['applyid'], array('status' => 2));
         $daoApply->updateReviewer($data['applyid'], $tudu->uniqueId, array('status' => 1));
         $startTime = $data['starttime'];
         $endTime = $data['endtime'];
         // 更新考勤信息备注
         /* @var $daoDate Dao_App_Attend_Date */
         $daoDate = Tudu_Dao_Manager::getDao('Dao_App_Attend_Date', Tudu_Dao_Manager::DB_APP);
         /* @var $daoMonth Dao_App_Attend_Month */
         $daoMonth = Tudu_Dao_Manager::getDao('Dao_App_Attend_Month', Tudu_Dao_Manager::DB_APP);
         /* @var $daoTotal Dao_App_Attend_Total */
         $daoTotal = Tudu_Dao_Manager::getDao('Dao_App_Attend_Total', Tudu_Dao_Manager::DB_APP);
         $start = strtotime(date('Y-m-d', $startTime));
         $end = strtotime(date('Y-m-d', $endTime));
         $days = floor(($end - $start) / 86400);
         $period = round($data['period'], 1);
         $memo = array($data['categoryname'], $data['starttime'], $data['endtime'], $period);
         for ($i = 0; $i < $days + 1; $i++) {
             $date = $start + $i * 86400;
             $daoDate->addApply(array('orgid' => $data['orgid'], 'uniqueid' => $data['uniqueid'], 'date' => $date, 'categoryid' => $data['categoryid'], 'memo' => implode('|', $memo)));
             if ($date <= strtotime('today')) {
                 if (!$daoDate->existsRecord($data['uniqueid'], $date)) {
                     $daoDate->create(array('orgid' => $data['orgid'], 'uniqueid' => $data['uniqueid'], 'date' => $date));
                 }
                 $daoDate->update($data['uniqueid'], $date, array('iswork' => 0, 'islate' => 0, 'isleave' => 0, 'checkinstatus' => 0));
             }
         }
         $months = array();
         $months[date('Ym', $start)] = array('year' => date('Y', $start), 'month' => date('m', $start));
         $months[date('Ym', $end)] = array('year' => date('Y', $end), 'month' => date('m', $end));
         foreach ($months as $month => $val) {
             // 判断月统计表是否已有当月的统计记录
             $sum = $daoDate->dateSum(array('uniqueid' => $data['uniqueid'], 'startdate' => mktime(0, 0, 0, $val['month'], 1, $val['year']), 'enddate' => mktime(0, 0, 0, $val['month'] + 1, 1, $val['year'])));
             $monthParams = array();
             if (!empty($sum)) {
                 $monthParams['updatetime'] = time();
                 $monthParams['late'] = (int) $sum['late'];
                 $monthParams['leave'] = (int) $sum['leave'];
                 $monthParams['unwork'] = (int) $sum['unwork'];
                 if (!$daoMonth->existsRecord($data['uniqueid'], $month)) {
                     $monthParams['orgid'] = $data['orgid'];
                     $monthParams['uniqueid'] = $data['uniqueid'];
                     $monthParams['date'] = $month;
                     $daoMonth->create($monthParams);
                 } else {
                     $daoMonth->update($data['uniqueid'], $month, $monthParams);
                 }
             }
             // 统计考勤类型次数等
             if (!$daoTotal->existsRecord($data['categoryid'], $data['uniqueid'], $month)) {
                 $daoTotal->create(array('orgid' => $data['orgid'], 'uniqueid' => $data['uniqueid'], 'categoryid' => $data['categoryid'], 'date' => $month, 'total' => $period, 'updatetime' => time()));
             } else {
                 $daoTotal->updateTotal($data['categoryid'], $data['uniqueid'], $month, $period);
             }
         }
         $manager = Tudu_Tudu_Manager::getInstance();
         $manager->doneTudu($tudu->tuduId, 1, 0);
         // 没有的
     } else {
         /* @var $daoApply Dao_App_Attend_Apply */
         $daoApply = Tudu_Dao_Manager::getDao('Dao_App_Attend_Apply', Tudu_Dao_Manager::DB_APP);
         $apply = $daoApply->getApply(array('tuduid' => $tudu->tuduId));
         // 不同意
         if (!$tudu->isAgree) {
             $daoApply->updateApply($apply->applyId, array('status' => 3));
             //$manager = Tudu_Tudu_Manager::getInstance();
             //$manager->doneTudu($tudu->tuduId, 1, 0);
         } else {
             $daoApply->updateApply($apply->applyId, array('status' => 1));
         }
         if (null !== $apply) {
             $daoApply->updateReviewer($apply->applyId, $tudu->uniqueId, array('status' => $tudu->isAgree ? 1 : 2));
             if ($tudu->recipient) {
                 $recipients = $tudu->recipient;
                 foreach ($recipients as $rec) {
                     if (!empty($rec['isreview'])) {
                         $daoApply->addReviewer($apply->applyId, $rec['uniqueid'], 0);
                     }
                 }
             }
         }
     }
 }
Exemplo n.º 6
0
 public function prevSave(Tudu_Model_Tudu_Entity_Tudu $tudu, Tudu_Model_Tudu_Entity_Extension_Abstract &$data)
 {
     $steps = $data->getSteps();
     $currentStepId = null;
     // 没有预订流程,按照图度参数生成流程步骤
     if (empty($steps)) {
         $steps = array();
         $orderNum = 1;
         if ($tudu->reviewer) {
             $stepId = Dao_Td_Tudu_Step::getStepId();
             $reviewStep = new Tudu_Model_Tudu_Entity_Step(array('orgid' => $tudu->orgId, 'tuduid' => $tudu->tuduId, 'uniqueid' => $tudu->uniqueId, 'stepid' => $stepId, 'type' => Dao_Td_Tudu_Step::TYPE_EXAMINE, 'prevstepid' => self::NODE_HEAD, 'nextstepid' => self::NODE_END, 'ordernum' => $orderNum++));
             foreach ($tudu->reviewer as $sec) {
                 $reviewStep->addSection($sec);
             }
             $steps[$stepId] = $reviewStep;
             $currentStepId = $stepId;
         }
         if ($tudu->to) {
             $stepId = Dao_Td_Tudu_Step::getStepId();
             $prevId = self::NODE_HEAD;
             if ($currentStepId) {
                 $steps[$currentStepId]->nextStepId = $stepId;
                 $prevId = $currentStepId;
             } else {
                 $currentStepId = $stepId;
             }
             $step = new Tudu_Model_Tudu_Entity_Step(array('orgid' => $tudu->orgId, 'tuduid' => $tudu->tuduId, 'uniqueid' => $tudu->uniqueId, 'stepid' => $stepId, 'type' => $tudu->acceptMode ? Dao_Td_Tudu_Step::TYPE_CLAIM : Dao_Td_Tudu_Step::TYPE_EXECUTE, 'prevstepid' => $prevId, 'nextstepid' => self::NODE_END, 'ordernum' => $orderNum++));
             $sec = array();
             foreach ($tudu->to as $user) {
                 $sec[] = $user;
             }
             $step->addSection($sec);
             $steps[$stepId] = $step;
         }
     } else {
         $from = explode(' ', $tudu->target);
         $prevUsers = array(array('email' => $from[0], 'truename' => $from[1]));
         $addressBook = Tudu_AddressBook::getInstance();
         foreach ($steps as $step) {
             $users = $step->getAttribute('users');
             // 解析步骤人员
             if (is_string($users)) {
                 if (0 === strpos($users, '^')) {
                     foreach ($prevUsers as $u) {
                         $u = $addressBook->searchUser($tudu->orgId, $u['email']);
                         $sections = $this->_getHeigherUsers($u['email'], $tudu->orgId, $u['deptid'] === null ? '^root' : $u['deptid'], $users == '^uppers');
                         if (null === $sections) {
                             require_once 'Tudu/Model/Tudu/Exception.php';
                             throw new Tudu_Model_Tudu_Exception('Missing flow steps upper reviewer');
                         }
                     }
                 } else {
                     $sections = $this->parseStepUsers($steps, $users);
                 }
             }
             $step->setAttribute('tuduid', $tudu->tuduId);
             $step->setAttribute('orgid', $tudu->orgId);
             foreach ($sections as $section) {
                 $step->addSection($section);
             }
             $prevUsers = array_pop($sections);
         }
     }
     $data->setAttribute('flowsteps', $steps);
 }