Содержание
Как отправить презентацию?
На текущий момент рассылка презентаций происходит только с Foodretail. И для того, чтобы появилась возможность отправки презентации, необходимо быть авторизированным на сайте, с правами доступа — менеджера.
Сама панель отправки презентаций находиться в Менеджерском разделе компании. Для примера, есть на сайте Foodretail тестовая компания, на ее примере далее будет продолжаться повествование.
Рис. 1.1. - Пример панели рассылки.
На примере Рис. 1.1., можно увидеть, что отправка происходит с помощью чек боксов.
Причем:
Отмеченные чек боксы | Не отмеченные чек боксы |
---|---|
Рассылка производилась не ранее 6 месяцев. | Рассылки либо не было, либо в базе данных сохранились значения и прошло более 6 месяцев. |
Сама рассылка происходит по следующему алгоритму:
- Нажимаем на нужный нам чекбокс;
- Подтверждаем рассылку, нажав на кнопку "ОК".
Рис. 1.2. - Пример отправки письма с презентацией от сайта Meatinfo.
Так же, нужно уточнить, что с недавней задачей, письма перестали отправляться с отправителем Foodretail <noreply@foodretail.ru>
.
Теперь каждая презентация сайта отправляется с названием самого сайта.
И письма приходят не сотрудникам компании, а на электронный адрес самой компании.
"Как убрать чекбокс?" - смотри здесь.
Как это работает?
Controller
В файле LitecatModule
есть блок кода в котором происходит вывод во View
элемент данных презентаций. Данный массив $presentations
, хранит название и id
презентации. И в этом же блоке кода происходит поиск последних отправленных презентаций для текущей компании.
if ($this->isManager) {
####### presentations #############
$presentations = [
1 => ['id' => 1, 'title' => "Grainboard - Портал участников рынка зерна, муки и смежных отраслей"],
2 => ['id' => 2, 'title' => "Milknet - Портал участников рынка молочных продуктов"],
3 => ['id' => 3, 'title' => "Fruitinfo - Портал участников рынка овощей, фруктов и смежных отраслей"],
4 => ['id' => 4, 'title' => "MeatInfo - Портал для участников рынка мяса и мясопродуктов"],
5 => ['id' => 5, 'title' => "Fishretail.ru - Портал для участников рыбного рынка"],
];
$companyId = (int)$companyData['id'];
$res = \AE_Registry::get('db')->query(
"SELECT presentation_id
FROM catalogue.company_presentation
WHERE date(created_at) >= date_sub(date(now()), interval 6 month)
AND company_id={$companyId}"
);
while ($row = $res->fetch()) {
$presentations[$row['presentation_id']]['sent'] = 1;
}
$this->assign('presentations', $presentations);
####################
}
View
Все что нужно знать, так это отображение чек боксов и связь с моделью происходит в файле m16/layout/litecat/details.html
.
Отправка осуществляется с помощью JS. Пример с файла details.html
:
$(document).ready(function() {
$('ul#presentations input').on('click', function() {
if (!confirm("Отправить презентацию " + $(this).parent().text() + "?")) {
return false;
}
$(this).attr('disabled', 'disabled');
var presId = this.value;
$.get( "/litecat/setPresentation?pres_id=" + presId + '&comp_id={$companyData.id}', function( data2 ) {
console.log('');
}, 'json');
});
});
Model
Модель принимает два параметра:
-
comp_id
: ИД компании, -
pres_id
: ИД презентации.
Далее, через проверку на ранее отправленные презентации происходит попытка рассылки.
$res = $db->query(
"SELECT *
FROM catalogue.company_presentation
WHERE company_id=$companyId AND presentation_id=$presId"
);
Теперь, для того, чтобы понять, откуда берутся письма мы переходим в папку litecat/presentations/
.
Рис. 2.1. - Папка с письмами презентаций.
Идем далее по коду. И видим следующие строки. Они означают, что презентация не будет отправлена, если у компании не указан хотя бы один email адрес и конфигурация — не продакшн.
if ($emails && \AE_Registry::get('config')->production) {
И, для того чтобы тестировать отправку, необходимо временно отключить данное условие на локальном, либо на стейдж сервере.
Ну и последнее, чтобы просмотреть презентации из писем. Идем в папку /www/files/presentations/
Рис. 2.2. - Папка с файлами презентаций.
Где ранятся записи?
Рис 3.1. - Таблица отправленных презентации.
Вся информация об отправленных презентаций находиться в catalogue.company_presentation
.
Как убрать чекбокс?
Для этого в adminer находим нужную нам компанию по comany_id
и удаляем/подменяем запись. Таким образом, чекбокс должен стать uncheck. И презентацию можно повторно отправить.