From: fomichev Date: Mon, 16 Dec 2024 08:30:58 +0000 (+0300) Subject: Рефакторинг X-Git-Tag: 1.7~161^2~3 X-Git-Url: https://gitweb.erp-flowers.ru/?a=commitdiff_plain;h=5b0cd31135c99428eed3d0090857a58ae10c14e4;p=erp24_rep%2Fyii-erp24%2F.git Рефакторинг --- diff --git a/erp24/controllers/UsersMessageManagementController.php b/erp24/controllers/UsersMessageManagementController.php index a8d0690c..5f39a7ee 100644 --- a/erp24/controllers/UsersMessageManagementController.php +++ b/erp24/controllers/UsersMessageManagementController.php @@ -172,52 +172,19 @@ class UsersMessageManagementController extends Controller public function actionGenerateExcel($date, $type) { try { - $users = Users::getUsersListForKogort($date); - if (empty($users)) { + $data = Users::getUsersListForKogort($date, $type); + if (empty($data)) { Yii::$app->session->setFlash('error', 'Нет данных для экспорта.'); return $this->redirect(Yii::$app->request->referrer); } - $data = []; - foreach ($users as $user) { - $userPhone = $user['phone']; - - $memorableDateCount = UsersEvents::find()->where(['phone' => $userPhone])->count(); - $memorableDateExists = UsersEvents::find() - ->where(['phone' => $userPhone, 'date' => $date]) - ->exists() ? 1 : 0; - - $lastSale = Sales::find() - ->where(['phone' => $userPhone]) - ->orderBy(['date' => SORT_DESC]) - ->one(); - $lastDate = $lastSale ? $lastSale->date : null; - $dealsCount = Sales::find()->where(['phone' => $userPhone])->count(); - $totalSum = Sales::find()->where(['phone' => $userPhone])->sum('summ') ?? 0; - - $userData = [ - 'phone' => $userPhone, - ]; - - if ($type === 'call') { - $userData['name'] = $user['name']; - $userData['memorable_date_count'] = $memorableDateCount; - // $userData['memorable_date'] = $memorableDateExists; - $userData['last_date'] = $lastDate; - $userData['deals_count'] = $dealsCount; - $userData['total_sum'] = $totalSum; - } - - $data[] = $userData; - } - $columns = ['phone']; if ($type === 'call') { $columns = array_merge($columns, [ 'last_date', 'deals_count', 'total_sum', - // 'memorable_date_count', + 'memorable_date_count', 'memorable_date', 'name', ]); @@ -266,49 +233,7 @@ class UsersMessageManagementController extends Controller public function actionViewKogortUsers($date, $type) { - $users = Users::getUsersListForKogort($date); - $data = []; - - foreach ($users as $user) { - $userPhone = $user['phone']; - - $memorableDateCount = UsersEvents::find() - ->where(['phone' => $userPhone]) - ->count(); - - $memorableDateExists = UsersEvents::find() - ->where(['phone' => $userPhone]) - ->exists() ? 1 : 0; - - $lastSale = Sales::find() - ->where(['phone' => $userPhone]) - ->orderBy(['date' => SORT_DESC]) - ->one(); - - $lastDate = $lastSale ? $lastSale->date : 'нет данных'; - $dealsCount = Sales::find() - ->where(['phone' => $userPhone]) - ->count(); - $totalSum = Sales::find() - ->where(['phone' => $userPhone]) - ->sum('summ') ?? 0; - - - $userData = [ - 'phone' => $userPhone, - ]; - - if ($type === 'call') { - $userData['last_date'] = $lastDate; - $userData['deals_count'] = $dealsCount; - $userData['total_sum'] = $totalSum; - // $userData['memorable_date_count'] = $memorableDateCount; - $userData['memorable_date'] = $memorableDateExists; - $userData['name'] = $user['name']; - } - - $data[] = $userData; - } + $data = Users::getUsersListForKogort($date, $type); $dataProvider = new ArrayDataProvider([ 'allModels' => $data, diff --git a/erp24/records/Users.php b/erp24/records/Users.php index c20ebfcd..ffa32846 100755 --- a/erp24/records/Users.php +++ b/erp24/records/Users.php @@ -290,15 +290,14 @@ class Users extends \yii\db\ActiveRecord * https://tracker.yandex.ru/ERP-252 * @return array */ - public static function getUsersListForKogort($startDate = null, $endDate = null) + public static function getUsersListForKogort($startDate = null, $type = 'target'): array { - $startDate = $startDate ?? date('Y-m-d'); $monthDay = date('m-d', strtotime($startDate)); $salesPhone = Sales::find() ->where(new \yii\db\Expression("TO_CHAR(date, 'MM-DD') = :monthDay", [':monthDay' => $monthDay])) - ->andWhere(new \yii\db\Expression("date >= NOW() - INTERVAL '3 years'")) + ->andWhere(new \yii\db\Expression("date <= NOW()")) ->distinct('phone') ->select('phone') ->column(); @@ -313,9 +312,50 @@ class Users extends \yii\db\ActiveRecord $users = Users::find() ->andWhere(['phone' => $usersArray]) -// ->andWhere() //заглушка на проверку что он уже участвовал в +// ->andWhere() //заглушка на проверку что он уже участвовал в ->all(); - return $users; + + $data = []; + + foreach ($users as $user) { + $userPhone = $user['phone']; + + $memorableDateExists = UsersEvents::find() + ->where(['phone' => $userPhone]) + ->exists() ? 1 : 0; + + $lastSale = Sales::find() + ->where(['phone' => $userPhone]) + ->orderBy(['date' => SORT_DESC]) + ->one(); + + $lastDate = $lastSale ? date('d-m-Y', strtotime($lastSale->date)) : 'нет данных'; + + $dealsCount = Sales::find() + ->where(['phone' => $userPhone]) + ->count(); + + $totalSum = Sales::find() + ->where(['phone' => $userPhone]) + ->sum('summ') ?? 0; + + + $userData = [ + 'phone' => $userPhone, + ]; + + if ($type === 'call') { + $userData['last_date'] = $lastDate; + $userData['deals_count'] = $dealsCount; + $userData['total_sum'] = $totalSum; + + $userData['memorable_date'] = $memorableDateExists; + $userData['name'] = $user['name']; + } + + $data[] = $userData; + } + return $data; } } \ No newline at end of file