0,'m'=>'']; $dates = []; $day = 60*60*24; $startTime = strtotime($begin); $endTime = strtotime($end); for($i=$startTime;$i<=$endTime;$i+=$day){ $dates[] = date('Y-m-d',$i); } if(!$begin){ $res['e']=1; $res['m']='Укажите дату начала'; } else if(!$end){ $res['e']=1; $res['m']='Укажите дату окончания'; } else if($endTime<$startTime){ $res['e']=1; $res['m']='Дата окончания должна быть больше, чем дата начала'; } else if(!$emp_id){ $res['e']=1; $res['m']='Укажите сотрудника'; } if(!$res['e']) { if ($dates) { $r = self::delete(new \Where(\Where::_and([ \Where::_operator(self::$EMP, '=', $emp_id), \Where::_in(self::$DATE, $dates), ]))); Time::delete(new \Where(\Where::_and([ \Where::_operator(Time::$EMP, '=', $emp_id), \Where::_in(Time::$DATE, $dates), \Where::_operator(Time::$IS_OVER, '=', 0), ]))); } if ($absence_id and $emp_id) { foreach ($dates as $date) { $r = self::insert([ self::$EMP => $emp_id, self::$ABSENCE => $absence_id, self::$DATE => $date ]); $res[] = Cache::removeRows($date,$emp_id); } } $res['m'] = 'Успешно сохранено'; } return $res; } public function _insert(array $values, array $options = array()) { $options[\Query::ON_DUPLICATE_KEY_UPDATE] = [ self::$ABSENCE => $values[self::$ABSENCE], ]; return parent::_insert($values, $options); // TODO: Change the autogenerated stub } public static function afterUadd($values, $id, $result) { $res = parent::afterUadd($values, $id, $result); if($id and !$values[self::$ABSENCE]){ self::deleteByID($id); } if($values[self::$DATE] and $values[self::$EMP] and !$values[self::$ABSENCE]){ self::delete(new \Where(\Where::_and([ \Where::_operator(self::$EMP,'=',$values[self::$EMP]), \Where::_operator(self::$DATE,'=',$values[self::$DATE]), ]))); } if($values[self::$DATE]){ Time::delete(new \Where(\Where::_and([ \Where::_operator(Time::$EMP,'=',$values[self::$EMP]), \Where::_operator(Time::$DATE,'=',$values[self::$DATE]), \Where::_operator(Time::$IS_OVER,'=',0), ]))); } return $res; } static function getFormInputs(\ModuleBZ\Form &$form, array $data, $C, bool $isEdit) { $form ->addInput((new Hidden())->setName(self::$ID)->setValue( intval($C[self::$ID]?:$data['id']) )) ->addInput((new Hidden())->setName(self::$EMP)->setValue( intval($C[self::$EMP]?:($data['emp']?:Emp::$AUTH_ID)) )) ->addInput((new Hidden())->setName(self::$DATE)->setValue( $C[self::$DATE]?:($data['date']?:date('Y-m-d')) )) ->addRow((new Row()) /* ->addColumn(((new DatePicker()) ->setName(self::$DATE) ->setValue($C[self::$DATE]) ->setClassAll('c-50') ->setLabel($c = V::get(Vars::$DATE)) ->setPlaceholder($c) )) */ ->addColumn(((new Select()) ->setName(self::$ABSENCE) ->setValue(intval($C[self::$ABSENCE])) ->setClassAll('c-100') ->setLabel($c = V::get(Vars::$ABSENCE)) ->setPlaceholder($c) ->setLabel($c) ->setOptions(DAbsence::getNameList(([ 'zero'=>true, \Query::WHERE => new \Where(\Where::_or([ \Where::_operator(DAbsence::$VIS,'=',1), $isEdit ? \Where::_operator(DAbsence::$ID,'=',intval($C[self::$ABSENCE])) : null, ])) ]))) )) ) ; } static function columnInfo() : array { return [ new C([ C::VAR_NAME =>&self::$ID, C::TYPE =>eColumnType::INT, C::AUTO_INCREMENT =>true, C::PRIMARY =>true, C::DEFAULT =>0, C::HIDDEN =>true, C::TH =>V::get(Vars::$ID), ]), new C([ C::VAR_NAME => &self::$EMP, C::TYPE => eColumnType::INT, C::DEFAULT => intval(Emp::$AUTH_ID), c::HIDDEN => true, ]), new C([ C::VAR_NAME => &self::$DATE, C::TYPE => eColumnType::DATE, C::TH => V::get(Vars::$DATE), C::FUNC_VALUE_DATA => function($v){ return Merakomis::fdate($v[self::$DATE]); } ]), new C([ C::VAR_NAME => &self::$ABSENCE, C::TYPE => eColumnType::INT, C::TH => V::get(Vars::$ABSENCE), C::FUNC_VALUE_DATA => function($v){ return DAbsence::getName(DAbsence::getByID(intval($v[self::$ABSENCE]))); } ]), new C([ C::VAR_NAME => &self::$PORTAL, C::TYPE => eColumnType::INT, C::DEFAULT => intval(\Site::$portal_id), c::HIDDEN => true, ]), new C([ C::VAR_NAME => &self::$ACCOUNT, C::TYPE => eColumnType::INT, C::DEFAULT => intval(\Site::$owner_id), //C::TH => V::get(Vars::$ACCOUNT), c::HIDDEN => true, ]), ]; } } new Absence(); ///