meraproject/module/vcard/order/model.php

266 lines
9.8 KiB
PHP
Raw Permalink Normal View History

<?
namespace vcard;
use core\db\structure\Column as C;
use core\db\structure\eColumnType;
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 vcard\order\structure\eVcardOrderStatus;
use vcard\order\structure\tLang as Vars;
use widget\video\Video;
class Order extends msModuleTable {
static $self;
static $table_name = 'vcardOrder';
static $controller = 'vcard.order';
static $ID = 'id';
static $NAME = 'name';
static $PHONE = 'phone';
static $EMAIL = 'email';
static $COMMENT = 'comment';
static $PROFILE = 'profile';
static $PROFILE_FROM = 'profile_from';
static $BLOCK_ID = 'block_id';
static $BLOCK_NAME = 'block_name';
static $ITEM_NAME = 'item_name';
static $ITEM_PRICE = 'item_price';
static $STATUS = 'status';
static $POS = 'pos';
static $HASH = 'hash';
static $KEY = 'key';
static $CARD = 'card';
static $ITEM = 'item';
static $VIDEO = 'video';
static $ACCOUNT = 'account';
static $CREATED = 'created';
static $UPDATED = 'updated';
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 static function installUniques() {
\DB::addIndex(self::$table_name,self::$HASH);
\DB::addIndex(self::$table_name,self::$PROFILE);
\DB::addIndex(self::$table_name,self::$STATUS);
}
static function checkStatusID($id){
// TODO: Сделать проверку статусов
return limitIntRange($id,-2,3);
}
static public function format($v){
$form_name = (string)$v[self::$BLOCK_NAME];
if($v[self::$VIDEO]){
$video = Video::getByID($v[self::$VIDEO]);
$form_name = Video::getName($video);
}
return [
'id' => intval($v[Order::$ID]),
'column' => intval($v[Order::$STATUS]),
'index' => intval($v[Order::$POS]),
'date' => date('d.m.Y H:i:s',$v[Order::$CREATED]),
'data' => [
'form_name' => $form_name,
'item_name' => (string)$v[self::$ITEM_NAME],
'name' => (string)$v[self::$NAME],
'phone' => (string)$v[self::$PHONE],
'email' => (string)$v[self::$EMAIL],
'comment' => (string)$v[self::$COMMENT],
'is_video' => boolval($v[self::$VIDEO]),
]
];
}
static function getForm($values = [], $options = []) :array {
return [
self::getCommonFormInputs(),
[
Form::VIEW=>Form::ROW,
Form::COLS => [
[
Form::VIEW =>Form::INPUT,
Form::COL_CLASSES =>'col-12',
Form::KEY_VALUE =>self::$NAME,
Form::TYPE =>eInputType::TEXT,
Form::INPUT_OPT => [
Input::PLACEHOLDER => $c = V::get(Vars::$NAME),
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::$NAME,
C::TYPE => eColumnType::VARCHAR,
C::LENGTH => 1023,
C::TH => V::get(Vars::$NAME),
]),
new C([
C::VAR_NAME => &self::$PHONE,
C::TYPE => eColumnType::VARCHAR,
C::LENGTH => 63,
// C::TH => V::get(Vars::$PHONE),
]),
new C([
C::VAR_NAME => &self::$EMAIL,
C::TYPE => eColumnType::VARCHAR,
C::LENGTH => 63,
// C::TH => V::get(Vars::$EMAIL),
]),
new C([
C::VAR_NAME => &self::$COMMENT,
C::TYPE => eColumnType::TEXT,
//C::LENGTH => 1023,
// C::TH => V::get(Vars::$COMMENT),
]),
new C([
C::VAR_NAME => &self::$PROFILE,
C::TYPE => eColumnType::INT,
C::LENGTH => 11,
C::DEFAULT => 0,
// C::TH => V::get(Vars::$PROFILE),
]),
new C([
C::VAR_NAME => &self::$PROFILE_FROM,
C::TYPE => eColumnType::INT,
C::DEFAULT => intval(PID),
// C::TH => V::get(Vars::$PROFILE_FROM),
]),
new C([
C::VAR_NAME => &self::$BLOCK_ID,
C::TYPE => eColumnType::INT,
C::DEFAULT => 0,
//C::LENGTH => 1023,
// C::TH => V::get(Vars::$BLOCK_ID),
]),
new C([
C::VAR_NAME => &self::$BLOCK_NAME,
C::TYPE => eColumnType::VARCHAR,
C::LENGTH => 1023,
// C::TH => V::get(Vars::$BLOCK_NAME),
]),
new C([
C::VAR_NAME => &self::$ITEM_NAME,
C::TYPE => eColumnType::VARCHAR,
C::LENGTH => 1023,
// C::TH => V::get(Vars::$BLOCK_NAME),
]),
new C([
C::VAR_NAME => &self::$ITEM_PRICE,
C::TYPE => eColumnType::DOUBLE,
//C::LENGTH => 1023,
// C::TH => V::get(Vars::$BLOCK_NAME),
]),
new C([
C::VAR_NAME => &self::$STATUS,
C::TYPE => eColumnType::INT,
C::DEFAULT => eVcardOrderStatus::NEW,
//C::LENGTH => 1023,
// C::TH => V::get(Vars::$STATUS),
]),
new C([
C::VAR_NAME => &self::$POS,
C::TYPE => eColumnType::INT,
C::DEFAULT => time(),
//C::LENGTH => 1023,
// C::TH => V::get(Vars::$POS),
]),
new C([
C::VAR_NAME => &self::$HASH,
C::TYPE => eColumnType::VARCHAR,
C::LENGTH => 63,
// C::TH => V::get(Vars::$HASH),
]),
new C([
C::VAR_NAME => &self::$VIDEO,
C::TYPE => eColumnType::INT,
C::DEFAULT => 0,
]),
new C([
C::VAR_NAME => &self::$KEY,
C::TYPE => eColumnType::VARCHAR,
C::LENGTH => 63,
// C::TH => V::get(Vars::$KEY),
]),
new C([
C::VAR_NAME => &self::$CARD,
C::TYPE => eColumnType::INT,
// C::TH => V::get(Vars::$CARD),
]),
new C([
C::VAR_NAME => &self::$ITEM,
C::TYPE => eColumnType::INT,
// C::TH => V::get(Vars::$CARD),
]),
new C([
C::VAR_NAME => &self::$ACCOUNT,
C::TYPE => eColumnType::INT,
C::LENGTH => 11,
C::TH => V::get(Vars::$ACCOUNT),
C::DEFAULT => intval(\SITE::$owner_id),
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 Order();
///