class UsersMessageManagementController extends Controller
{
- public static function saveLogs($old, $new) {
+ public static function saveLogs($old, $new)
+ {
$cnt = 0;
foreach (array_keys($old) as $oldKey) {
if ($new[$oldKey] != $old[$oldKey]) {
}
}
foreach (array_keys($old) as $oldKey) {
- if ($cnt >1 && $new[$oldKey] != $old[$oldKey]) {
+ if ($cnt > 1 && $new[$oldKey] != $old[$oldKey]) {
$log = new UsersMessageManagementLogs;
$log->field_name = $oldKey;
$log->value_old = '' . $old[$oldKey];
$request = Yii::$app->request;
$model = UsersMessageManagement::find()->one();
$month = date('m');
- $year = date('Y');
+ $year = date('Y');
$startDate = date('Y-m-d', strtotime("$year-$month-01"));
$endDate = date('Y-m-t', strtotime($startDate));
$dates = [];
$currentDate = strtotime($startDate);
-
+ $types = array_keys(Users::KOGORT_TYPES);
while ($currentDate <= strtotime($endDate)) {
$formattedDate = date('Y-m-d', $currentDate);
$dates[$formattedDate] = [
'target' => [
$this->generateLink($formattedDate, 'target', 'generate-excel'),
- $this->generateLink($formattedDate, 'target', 'view-kogort-users')
+ $this->generateLink($formattedDate, 'target', 'view-kogort-users'),
+ // count(Users::getUsersListForKogort($formattedDate))
],
'whatsapp' => [
$this->generateLink($formattedDate, 'whatsapp', 'generate-excel'),
- $this->generateLink($formattedDate, 'whatsapp', 'view-kogort-users')
+ $this->generateLink($formattedDate, 'whatsapp', 'view-kogort-users'),
+ // count(Users::getUsersListForKogort($formattedDate, 'whatsapp'))
],
'call' => [
$this->generateLink($formattedDate, 'call', 'generate-excel'),
- $this->generateLink($formattedDate, 'call', 'view-kogort-users')
+ $this->generateLink($formattedDate, 'call', 'view-kogort-users'),
+ // count(Users::getUsersListForKogort($formattedDate, 'call'))
],
];
$currentDate = strtotime('+1 day', $currentDate);
return $this->redirect(Yii::$app->request->referrer);
} else {
- if (!empty(array_intersect_key($model->getErrors(), ['offer_1' => 1, 'offer_2' => 2, 'offer_whatsapp' => 3, 'offer_text' => 4]))) {
- Yii::$app->session->setFlash('error', "Перейдите на вкладку Сообщения рассылки, чтобы заполнить пустые поля");
+ if (
+ !empty(
+ array_intersect_key(
+ $model->getErrors(),
+ ['offer_1' => 1, 'offer_2' => 2, 'offer_whatsapp' => 3, 'offer_text' => 4]
+ )
+ )
+ ) {
+ Yii::$app->session->setFlash(
+ 'error',
+ "Перейдите на вкладку Сообщения рассылки, чтобы заполнить пустые поля"
+ );
$tab = 2;
}
}
'links' => $dates,
'month' => $month,
'year' => $year,
- 'tab' => $tab,
+ 'tab' => $tab,
]);
}
$dates = [];
$currentDate = strtotime($startDate);
+ $types = array_keys(Users::KOGORT_TYPES);
while ($currentDate <= strtotime($endDate)) {
$formattedDate = date('Y-m-d', $currentDate);
$dates[$formattedDate] = [
'target' => [
$this->generateLink($formattedDate, 'target', 'generate-excel'),
- $this->generateLink($formattedDate, 'target', 'view-kogort-users')
+ $this->generateLink($formattedDate, 'target', 'view-kogort-users'),
+ // count(Users::getUsersListForKogort($formattedDate))
],
'whatsapp' => [
$this->generateLink($formattedDate, 'whatsapp', 'generate-excel'),
- $this->generateLink($formattedDate, 'whatsapp', 'view-kogort-users')
+ $this->generateLink($formattedDate, 'whatsapp', 'view-kogort-users'),
+ // count(Users::getUsersListForKogort($formattedDate, 'whatsapp'))
],
'call' => [
$this->generateLink($formattedDate, 'call', 'generate-excel'),
- $this->generateLink($formattedDate, 'call', 'view-kogort-users')
+ $this->generateLink($formattedDate, 'call', 'view-kogort-users'),
+ // count(Users::getUsersListForKogort($formattedDate, 'call'))
],
];
$currentDate = strtotime('+1 day', $currentDate);
$filename = "users-{$type}-{$date}.xlsx";
$response = Yii::$app->response;
$response->format = \yii\web\Response::FORMAT_RAW;
- $response->headers->set('Content-Type', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
+ $response->headers->set(
+ 'Content-Type',
+ 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
+ );
$response->headers->set('Content-Disposition', "attachment; filename=\"{$filename}\"");
$response->headers->set('Cache-Control', 'max-age=0');
$response->headers->add('Pragma', 'public');
$writer = new Xlsx($spreadsheet);
$writer->save('php://output');
die;
-
} catch (\Exception $e) {
Yii::error("Excel generation error: " . $e->getMessage());
Yii::$app->session->setFlash('error', 'Произошла ошибка при генерации Excel файла.');
'type' => $type,
]);
}
+
public function actionLogs()
{
$model = DynamicModel::validateData([
$dataProvider = new ActiveDataProvider(['query' => $query]);
- $fieldNames = array_merge([null => '__Любые__'], (new UsersMessageManagement)->attributeLabels());
+ $fieldNames = array_merge([null => '__Любые__'], (new UsersMessageManagement())->attributeLabels());
$adminArr = [];
$adminArrOther = [];
foreach (\yii_app\records\Admin::find()->with('adminGroup')->all() as $admin) {
if ($admin->group_id > 0) {
- $tmp = ['id' => $admin->id, 'name' => $admin->name, 'groupName' => $admin->adminGroup->name ?? "Другие"];
+ $tmp = [
+ 'id' => $admin->id,
+ 'name' => $admin->name,
+ 'groupName' => $admin->adminGroup->name ?? "Другие"
+ ];
if ($tmp['groupName'] == 'Другие') {
$adminArrOther[] = $tmp;
} else {
}
}
}
- $adminArr = ArrayHelper::merge([['id' => null, 'name' => '__Любой__', 'groupName' => '__Любой__']], $adminArr, $adminArrOther);
+ $adminArr = ArrayHelper::merge(
+ [['id' => null, 'name' => '__Любой__', 'groupName' => '__Любой__']],
+ $adminArr,
+ $adminArrOther
+ );
$admins = ArrayHelper::map($adminArr, 'id', 'name', 'groupName');
return $this->render('logs', compact('model', 'fieldNames', 'dataProvider', 'admins'));
}
+
+
+ public function actionGetUserCount()
+ {
+ Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
+
+ $request = Yii::$app->request;
+ // var_dump($request); die();
+ if ($request->isAjax) {
+ $date = $request->get('date');
+ $type = $request->get('type');
+
+ // var_dump($date); die();
+ if ($date && $type) {
+ $count = count(Users::getUsersListForKogort($date, $type));
+ return ['success' => true, 'count' => $count];
+ }
+ }
+
+ return ['success' => false, 'message' => 'Invalid request'];
+ }
}
addCharCounter("#usersmessagemanagement-offer_2", 10000);
addCharCounter("#usersmessagemanagement-offer_text", 900);
addCharCounter("#usersmessagemanagement-offer_whatsapp", 900);
-})
+});
+
+function fetchUsersCount () {
+ const placeholders = document.querySelectorAll('.count-placeholder');
+
+ placeholders.forEach(function (el) {
+ const date = el.getAttribute('data-date');
+ const type = el.getAttribute('data-type');
+
+ console.log(date, type);
+
+ if (!date || !type) {
+ return;
+ }
+
+ const params = new URLSearchParams({ date, type });
+ const url = '/users-message-management/get-user-count?' + params.toString();
+
+ fetch(url, {
+ method: 'GET',
+ headers: {
+ //'Content-Type': 'application/json',
+ //'X-CSRF-Token': yii.getCsrfToken(),
+ 'X-Requested-With': 'XMLHttpRequest'
+ },
+ // body: JSON.stringify({ date: date, type: type })
+ })
+ .then(response => response.json())
+ .then(data => {
+ console.log(data);
+ if (data.success) {
+ el.textContent = data.count;
+ } else {
+ el.textContent = 'Ошибка';
+ }
+ })
+ .catch(error => {
+ console.error('Ошибка при загрузке данных:', error);
+ el.textContent = 'Ошибка';
+ });
+ });
+}
document.addEventListener('DOMContentLoaded', function () {
const monthSelect = document.getElementById('month-select');
fetch(url, {
method: 'GET',
headers: {
- 'X-Requested-With': 'XMLHttpRequest' // Указываем, что это AJAX-запрос
+ 'X-Requested-With': 'XMLHttpRequest'
},
})
.then(response => response.text())
.then(html => {
// Обновляем таблицу с данными
document.querySelector('#data-table').innerHTML = html;
+ fetchUsersCount ();
})
.catch(error => {
console.error('Ошибка:', error);
});
+
}
monthSelect.addEventListener('change', handleFormChange);
yearSelect.addEventListener('change', handleFormChange);
});
+
+
+document.addEventListener("DOMContentLoaded", function () {
+ fetchUsersCount ();
+});