new \Where(\Where::_and([ \Where::_operator(self::$INN,'=',$values[self::$INN]), \Where::_operator(self::$STATUS,'=',$values[self::$STATUS]), ])), \Query::COUNT => 1, ]); if($l = \DB::fetch($r)){ if($l[self::$ID] != $id){ $res[self::$INN][] = 'Такой ИНН уже есть с таким статусом'; } } return $res; } static function format($v){ return [ 'id' => $id = intval($v[self::$ID]), 'name' => self::getName($v), 'text' => $v[self::$TEXT], 'inn' => $v[self::$INN], 'group' => $v[self::$GROUP], 'status' => Status::getName(Status::getByID(intval($v[self::$STATUS]))), 'download_link' => '/api/themes.merakomis.download/contractor/?id='.$id, ]; } static function getFormInputs(\ModuleBZ\Form &$form, array $data, $C, bool $isEdit) { $form->addRow((new Row()) ->addColumn((new Column())->setClassAll('c-40 ')->addRow((new Row()))) ->addColumn( (new Column())->setClassAll('c-20 ') ->addRow((new Row()) ->addColumn(((new Text()) ->setName(self::$NAME) ->setValue($C[self::$NAME]) ->setClassAll('c-100') ->setLabel($c = V::get(Vars::$NAME)) ->setPlaceholder($c) )) ->addColumn(((new Text()) ->setName(self::$INN) ->setValue($C[self::$INN]) ->setClassAll('c-50') ->setLabel($c = V::get(Vars::$INN)) ->setPlaceholder($c) )) ->addColumn(((new Select()) ->setName(self::$STATUS) ->setValue(intval($C[self::$STATUS])) ->setClassAll('c-50') ->setLabel($c = V::get(Vars::$STATUS)) ->setPlaceholder($c) ->setOptions(Status::getNameList([ 'zero'=>true, \Query::WHERE=> new \Where(\Where::_or([ \Where::_operator(Status::$VIS,'=',1), $isEdit ? \Where::_operator(Status::$ID,'=',$C[self::$STATUS]) : null, ])) ])) )) ->addColumn(((new Text()) ->setName(self::$GROUP) ->setValue($C[self::$GROUP]) ->setClassAll('c-50') ->setLabel($c = V::get(Vars::$GROUP)) ->setPlaceholder($c) )) ->addColumn(((new Switcher()) ->setName(self::$VIS) ->setClassAll('c-50 green_switcher') ->setPlaceholder($c = V::get(Vars::$VIS)) ->setLabel(' ') ->setChecked($isEdit ? boolval($C[self::$VIS]) : true) )) )->addRow((new Row()) ->addColumn(((new Textarea()) ->setName(self::$TEXT) ->setValue($C[self::$TEXT]) ->setClassAll('c-100') ->setLabel($c = V::get(Vars::$TEXT)) ->setPlaceholder($c) ->setAutoHeight(true) )) )->addRow((new Row()) ->addColumn(((new InputSave())->setClassAll('c-100')->setName('save'))) ) )) ; } 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::$NAME, C::TYPE => eColumnType::VARCHAR, C::FILTER_TYPE => eFilterType::TEXT, C::LENGTH => 1023, C::TH => V::get(Vars::$NAME), ]), new C([ C::VAR_NAME => &self::$INN, C::TYPE => eColumnType::VARCHAR, C::FILTER_TYPE => eFilterType::TEXT, C::LENGTH => 31, C::TH => V::get(Vars::$INN), ]), new C([ C::VAR_NAME => &self::$TEXT, C::TYPE => eColumnType::TEXT, C::TH => V::get(Vars::$TEXT), C::HIDDEN => true, ]), new C([ C::VAR_NAME => &self::$GROUP, C::TYPE => eColumnType::TEXT, C::FILTER_TYPE => eFilterType::TEXT, C::TH => V::get(Vars::$GROUP), ]), new C([ C::VAR_NAME => &self::$STATUS, C::TYPE => eColumnType::INT, C::FILTER_TYPE => eFilterType::SELECT, C::TH => V::get(Vars::$STATUS), C::FUNC_VALUE_DATA => function($v){ return Status::getName(Status::getByID(intval($v[self::$STATUS]))); }, C::FUNC_FILTER_SELECT_OPTIONS => function(){ return Status::getNameList(); }, ]), new C([ C::VAR_NAME => &self::$VIS, C::TYPE => eColumnType::TINYINT, C::TH => V::get(Vars::$VIS), C::FILTER_TYPE => eFilterType::BOOLEAN, //C::DEFAULT => 1, C::COL_DEFAULT => 1, C::FUNC_VALUE_DATA => function($v){ return Merakomis::fbool($v[self::$VIS]); } ]), 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 Contractor();