This commit is contained in:
2025-10-04 11:46:59 +07:00
commit 97427d7cff
498 changed files with 47596 additions and 0 deletions

View File

@@ -0,0 +1,128 @@
<?php
namespace Hura8\Components\Customer\Model;
use Hura8\Interfaces\AppResponse;
use Hura8\Interfaces\iSearch;
use Hura8\System\IDGenerator;
use Hura8\System\Model\aEntityBaseModel;
use Hura8\Interfaces\iEntityModel;
use Hura8\Interfaces\EntityType;
use Hura8\System\Security\DataValidator;
class CustomerModel extends aEntityBaseModel implements iEntityModel
{
protected $user_types = [
"auto" => "Chưa đăng ký",
"register" => "Đăng ký thành viên",
];
/* @var iSearch $objSearchModel */
protected $objSearchModel;
public function __construct() {
$this->objSearchModel = new CustomerSearchModel();
parent::__construct(
EntityType::CUSTOMER,
"",
$this->objSearchModel
);
}
protected function extendedFilterOptions() : array
{
return [
'province' => 0,
'user_type' => '',
];
}
public function getInfoByCRMCode($code)
{
$query = $this->db->runQuery("SELECT * FROM `".$this->tb_entity."` WHERE `crm_code` = ? LIMIT 1 ", ['s'], [$code]) ;
if( $item_info = $this->db->fetchAssoc($query)){
return $this->formatItemInfo($item_info);
}
return false;
}
public function getInfoByEmail($email, $user_type='register')
{
$query = $this->db->runQuery(
"SELECT * FROM `".$this->tb_entity."` WHERE `email` = ? AND `type` = ? LIMIT 1 ",
['s', 's'], [$email, $user_type]
) ;
if( $item_info = $this->db->fetchAssoc($query)){
return $this->formatItemInfo($item_info);
}
return null;
}
public function getInfoByVerifiedEmail($email)
{
$info = $this->getInfoByEmail($email);
if($info && $info['is_email_verify']) {
return $info;
}
return null;
}
protected function _buildQueryConditionExtend(array $filter_condition): ?array
{
/*$condition = array(
"user_type" => ''
"q" => "",
"status" => 0,
);*/
$catCondition = [];
$bind_types = [];
$bind_values = [];
if(isset($filter_condition["province"]) && $filter_condition["province"]) {
$catCondition[] = " AND `province` = ? ";
$bind_types[] = 'd';
$bind_values[] = $filter_condition["province"];
}
// user_type
if(isset($filter_condition["user_type"]) && array_key_exists($filter_condition["user_type"], $this->user_types) ){
$catCondition[] = " AND `type` = ? ";
$bind_types[] = 's';
$bind_values[] = $filter_condition["user_type"];
}
return array( join(" ", $catCondition), $bind_types, $bind_values);
}
protected function formatItemInfo(array $item_info): array
{
if($item_info["birth_day"] && $item_info["birth_year"]) {
$item_info["birth_day"] = $item_info["birth_day"]."-".$item_info["birth_year"];
}
return $item_info;
}
protected function createWebCRMCode($input_code = '') {
return $input_code ?: "Web-".IDGenerator::createStringId(8);
}
}