namespace common; use common\payment\structure\ePaymentType; use common\payment\structure\paymentLink; use core\db\structure\Column as C; use core\db\structure\eColumnType; use ms\MS; use ms\ms\structure\msTo; use shop\Order; use shop\order\Pay; use ui\form\structure\eInputType; use ui\Form; use ui\input\Input; use core\lang\structure\LangVariable as V; use ms\ms\structure\msModuleTable; use common\payment\structure\paymentLang as Vars; class Payment extends msModuleTable { static $self; static $table_name = 'payment'; static $controller = 'common.payment'; static $easy_left_joins; static $ID = 'id'; static $NAME = 'name'; static $TYPE = 'type'; static $DATA = 'data'; static $TO = 'to'; static $OID = 'oid'; static $TEXT = 'text'; static $VIS = 'vis'; static $POS = 'pos'; static $IMAGE = 'image'; static $ACCOUNT = 'account'; static $CREATED = 'created'; static $UPDATED = 'updated'; static $SETTINGS = 'settings'; static function getTitle(){return V::get(Vars::$MODULE_NAME);} static function getSystemLangValues():array{ return Vars::getArray(); } public function _update(\Where $w, array $values) { $values[self::$UPDATED] = time(); return parent::_update($w, $values); } public function __construct($install_id = null) { parent::__construct($install_id); static::$easy_left_joins =[ [Image::$table_name,self::$IMAGE,Image::$ID] ]; } static function getPaymentLink($order,$pay,$options=[]){ if(is_numeric($order)) $order = Order::getByID($order); if(is_numeric($pay)) $pay = Pay::getByID($pay); $order_id = $order[Order::$ID]; if($c = intval($options[paymentLink::PAYMENT_ID])) { $payment = self::getByID($c); } else { $payment = self::getByID($order[Order::$PAYMENT_ID]); } $payment_id = $payment[self::$ID]; $link = ''; switch ($payment[self::$TYPE]){ case ePaymentType::UCSCard: $link = paymentLink::UCSCard($order,$payment,$pay,$options); break; case ePaymentType::ROBOKASSA: $link = paymentLink::Robokassa($order,$payment,$pay,$options); break; case ePaymentType::KASPI: $link = paymentLink::Kaspi($order,$payment,$pay,$options); break; case ePaymentType::YOOKASSA: $link = paymentLink::YooKassa($order,$payment,$pay,$options); break; case ePaymentType::DOLYAMI: $link = paymentLink::Dolyami($order,$payment,$pay,$options); break; case ePaymentType::TINKOFF: $link = paymentLink::Tinkoff($order,$payment,$pay,$options); break; } return $link; } /* static function getOrderPaymentForm($order,$options=[]){ $link = self::getPaymentLink($order,$options); return '
'; } /**/ public static function afterUadd($values, $id, $result) { $res = parent::afterUadd($values, $id, $result); if($values['save_just_data']) { $C = self::getByID($id); $type = ePaymentType::getArray()[$C[self::$TYPE]]; $data = []; foreach ($type['data'] as $k=>$v){ if(isset($values[$k])) { $data[$k] = $values[$k]; } } self::updateById($id,[self::$DATA=>je($data)]); } return $res; } static function getForm($values = [], $options = []) :array { $isNew = intval($values[self::$ID])==0; return [ self::getCommonFormInputs(), $isNew?[ Form::VIEW =>Form::INPUT, Form::KEY_VALUE =>self::$TO, Form::TYPE =>eInputType::HIDDEN, ]:null, $isNew?[ Form::VIEW =>Form::INPUT, Form::KEY_VALUE =>self::$OID, Form::TYPE =>eInputType::HIDDEN, ]:null, [ Form::VIEW=>Form::ROW, Form::COLS => [ [ Form::VIEW =>Form::INPUT, Form::COL_CLASSES =>'c c-100', Form::KEY_VALUE =>self::$IMAGE, Form::TYPE =>eInputType::IMAGE, Form::INPUT_OPT => [ Input::PLACEHOLDER => $c = V::get(Vars::$IMAGE), Input::LABEL => $c, ], ], [ Form::VIEW =>Form::INPUT, Form::COL_CLASSES =>'c c-1-3', Form::KEY_VALUE =>self::$NAME, Form::TYPE =>eInputType::TEXT, Form::INPUT_OPT => [ Input::PLACEHOLDER => $c = V::get(Vars::$NAME), Input::LABEL => $c, ], ], [ Form::VIEW =>Form::INPUT, Form::COL_CLASSES =>'c c-1-3', Form::KEY_VALUE =>self::$TYPE, Form::TYPE =>eInputType::SELECT, Form::INPUT_OPT => [ Input::PLACEHOLDER => $c = V::get(Vars::$TYPE), Input::LABEL => $c, Input::OPTIONS => ePaymentType::getNameList(), ], ], [ Form::VIEW =>Form::INPUT, Form::COL_CLASSES =>'c c-1-3', Form::KEY_VALUE =>self::$VIS, Form::TYPE =>eInputType::CHECKBOX, Form::INPUT_OPT => [ Input::PLACEHOLDER => $c = V::get(Vars::$VIS), Input::LABEL => $c, Input::VALUE => 1, Input::CHECKED => boolval($values[self::$VIS]), ], ], [ Form::VIEW =>Form::INPUT, Form::COL_CLASSES =>'c', Form::KEY_VALUE =>self::$TEXT, Form::TYPE =>eInputType::TEXTAREA, Form::INPUT_OPT => [ Input::PLACEHOLDER => $c = V::get(Vars::$TEXT), Input::LABEL => $c, ], ], ] ], self::getCommonFormSubmits($values), ]; } 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::$IMAGE, C::TYPE => eColumnType::INT, C::LENGTH => 11, C::DEFAULT => 0, C::TH => V::get(Vars::$IMAGE), C::HIDDEN => true, ]), new C([ C::VAR_NAME => &self::$NAME, C::TYPE => eColumnType::VARCHAR, C::LENGTH => 1023, C::TH => V::get(Vars::$NAME), ]), new C([ C::VAR_NAME => &self::$TYPE, C::TYPE => eColumnType::TINYINT, C::LENGTH => 3, C::TH => V::get(Vars::$TYPE), C::FUNC_VALUE => function($v){return ePaymentType::getName($v[self::$TYPE]);}, C::FUNC_VALUE_DATA => function($v){return ePaymentType::getName($v[self::$TYPE]);}, ]), new C([ C::VAR_NAME => &self::$DATA, C::TYPE => eColumnType::VARCHAR, C::LENGTH => 1023, C::TH => V::get(Vars::$DATA), C::HIDDEN => true, ]), new C([ C::VAR_NAME => &self::$TO, C::TYPE => eColumnType::INT, C::HIDDEN => true, ]), new C([ C::VAR_NAME => &self::$OID, C::TYPE => eColumnType::INT, C::HIDDEN => true, ]), 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::$VIS, C::TYPE => eColumnType::TINYINT, C::LENGTH => 1, C::TH => V::get(Vars::$VIS), C::FUNC_VALUE => function($v){return MS::getBoolValText($v[self::$VIS]);}, C::FUNC_VALUE_DATA => function($v){return MS::getBoolValText($v[self::$VIS]);}, // C::HIDDEN => true, ]), new C([ C::VAR_NAME => &self::$POS, C::TYPE => eColumnType::INT, C::DEFAULT => time(), C::HIDDEN => true, ]), new C([ C::VAR_NAME => &self::$SETTINGS, C::TYPE => eColumnType::NONE, C::TH => V::get(Vars::$SETTINGS), C::FUNC_VALUE_DATA => function($v){return 'Настройки';}, ]), new C([ C::VAR_NAME => &self::$ACCOUNT, C::TYPE => eColumnType::INT, C::LENGTH => 11, C::TH => V::get(Vars::$ACCOUNT), C::DEFAULT => intval(UID), c::HIDDEN=>true, c::FUNC_VALUE => function($v){ if($id = $v[self::$ACCOUNT]) { return \Account::getName( \Account::getByID($id) ); } else return '-'; }, ]), new C([ C::VAR_NAME => &self::$CREATED, C::TYPE => eColumnType::INT, C::LENGTH => 11, C::TH => V::get(Vars::$CREATED), C::DEFAULT => time(), c::FUNC_VALUE => function($v){return self::formatDate($v[self::$CREATED]);}, c::HIDDEN=>true, ]), new C([ C::VAR_NAME => &self::$UPDATED, C::TYPE => eColumnType::INT, C::DEFAULT => time(), C::TH => V::get(Vars::$UPDATED), c::FUNC_VALUE => function($v){return self::formatDate($v[self::$UPDATED]);}, c::HIDDEN=>true, ]), ]; } } new Payment();