Выполнение задач по временному рассписанию в asp.net
В проекте должна быть сущность 'Расписание', которая состоит, например,
из n рабочих дней, разбитых на слоты по m минут.
При запросе Get надо получать n * m слотов, что-то типа такого:
[HttpGet]
public async Task<ActionResult<List<SlotsResponse>>> GetSheduleDays([FromQuery] SheduleDaysRequest request)
{}
Можно ли создать в контроллере метод типа CreateShedule(n, m, UserId),
который будет запускаться каждый день в 00.01 и писать в БД новое расписание (или, что вернее, дописывать в таблицу одну новую строчку, чтобы не стереть предыдущие данные).
Так делается? или расписание вообще по другому проектируется и создаётся?
Ответы (2 шт):
Если вам нужно выполнять какую-то работу с назначенное время, вам поможет hangfire. Это планировщик background задач для .net. Документация для конфигурации под asp.net
Расписанием может быть таблица в бд, содержащя следующие поля: дата, таймслот, исполнитель, задача (или наряд, что там мы планируем?), статус выполнения, тип работ (чтобы ограничить наряды по типам работ, или, например по районам чтоб исполнитель не мотался из конца в конец города).
Админка - инструмент, где исполнителям можно назначить дни работы, таймслоты и ограничения по типу работ. При настройке задействованные таймслоты добавляются в таблицу.
Само расписание может выглядеть как таблица с днями влево, таймслотами вниз. В ячейках - свободные/недоступные/занятые нарядами ячейки по исполнителям.
Ячейки могут быть цветные, обозначающие, что они свободны для наряда, либо заняты, а также цвет может указывать на статус исполнения.
Отображение расписания может быть настраиваемым. Например только для одного исполнителя (в таком виде его можно отдавать самим исполнителям); С настраиваемым диапазоном дат; Для операторов с возможностью заполнять пустые ячейки или изменять статус.
Если страница с расписанием будет подключена в режиме онлайн, например через Websocket, её же можно использовать и для мониторинга.
Дальше - как фантазия позволит.