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',
]);
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,
* 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();
$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