use yii\base\DynamicModel;
use yii\data\ArrayDataProvider;
use yii\web\Controller;
+use yii_app\records\Sales;
use yii_app\records\Users;
+use yii_app\records\UsersEvents;
use yii_app\records\UsersMessageManagement;
class UsersMessageManagementController extends Controller
if (!$model) {
- $model = new UsersMessageManagement;
+ $model = new UsersMessageManagement();
}
if (Yii::$app->request->isPost && $model->load(Yii::$app->request->post())) {
public function actionGenerateExcel($date, $type)
{
try {
- $data = Users::getUsersListForKogort($date);
- if (empty($data)) {
+ $users = Users::getUsersListForKogort($date);
+ if (empty($users)) {
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',
+ 'name',
+ ]);
+ }
+
$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
$sheet->setTitle('Users');
public function actionViewKogortUsers($date, $type)
{
- $data = Users::getUsersListForKogort($date);
+ $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, 'date' => $date])
+ ->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;
+ }
$dataProvider = new ArrayDataProvider([
'allModels' => $data,
return $this->render('view-kogort', [
'dataProvider' => $dataProvider,
'date' => $date,
+ 'type' => $type,
]);
}