Проблема
В данный момент отсутствует возможность определить, в каких организациях превышена квота по сотрудникам.
Решение
Необходимо хранить информацию по квоте предприятий. Ответственный сотрудник может получать письмо с организациями, квота которых достигла 80% и выше по нажатию кнопки с фронта. Для этого необходимо написать новый endpoint. Он должен собирать данные по всем предприятиям, квота которых превышает 80% и отправлять данные на указанный в конфиге email.
Пример
Предприятие "ООО Самая лучшая компания" имеет квоту в 5 человек, в таблице users_asup 4 человека привязаны к этой организации. Должно быть отправлено письмо "Превышена квота на сотрудников для следующих предприятий: ООО Самая лучшая компания"
Миграции примера
INSERT INTO enterprises (objid, objidref, objsname, objstatus, is_root, parents) VALUES (8800000, 8800000, 'Головной офис', null, true, '');
INSERT INTO enterprises (objid, objidref, objsname, objstatus, is_root, parents) VALUES (11111111, 8800000, 'ООО Самая лучшая компания', null, false, null);
INSERT INTO users (id, integration_id, type, created_at, updated_at, deleted_at) VALUES (1, '1', 'user', NOW(), NOW(), null), (2, '2', 'user', NOW(), NOW(), null), (3, '3', 'user', NOW(), NOW(), null), (4, '4', 'user', NOW(), NOW(), null);
INSERT INTO users_asup (number, fullname, email, integration_id, orgid, created_at, updated_at, deleted_at) VALUES (1, 'Тестов Тест Тестович', 'user1@nor.com', '1', 11111111, NOW(), NOW(), null), (2, 'Абрикосов Абрикос Абрикосович', 'user2@nor.com', '2', 11111111, NOW(), NOW(), null), (3, 'Огурцов Огурец Огурцович', 'user3@nor.com', '3', 11111111, NOW(), NOW(), null), (4, 'Молодцов Молодец Молодцович', 'user4@nor.com', '4', 11111111, NOW(), NOW(), null);
Definition Of Done
- Написана миграция
- Написан endpoint в стиле фреймворка Apiato (Route, Controller, Action, Task, Transformer)
- Написан тест и он зелёный, который проверяет работу endpoint заготовка в App\Containers\Enterprise\Tests\V1\SendEmailEnterprisesListTest
Тестовый сценарий
- Сгенерить предприятие и пользователей через фабрику
- Сгенерить квоту на предприятие
- Вызвать endpoint (метод makeCall)
- Проверить, что письмо с предприятием отправлено
Запуск проекта
- Перейти в директорию docker
- Запустить команду docker volume create --name=pgdata или make pg-volume-create
- Запустить docker-compose up -d или make go
- Должны подняться все контейнеры
- Войти в контейнер docker-compose exec php-dev sh
- composer install
Tech notes
- В таблице enterprises хранятся записи всех предприятий
- В таблице users_asup хранятся записи пользователей связь с таблицей enterprises осуществляется по полю orgid