Выполнение задач по временному рассписанию в 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 шт):

Автор решения: Faraday

Если вам нужно выполнять какую-то работу с назначенное время, вам поможет hangfire. Это планировщик background задач для .net. Документация для конфигурации под asp.net

→ Ссылка
Автор решения: Solt

Расписанием может быть таблица в бд, содержащя следующие поля: дата, таймслот, исполнитель, задача (или наряд, что там мы планируем?), статус выполнения, тип работ (чтобы ограничить наряды по типам работ, или, например по районам чтоб исполнитель не мотался из конца в конец города).

Админка - инструмент, где исполнителям можно назначить дни работы, таймслоты и ограничения по типу работ. При настройке задействованные таймслоты добавляются в таблицу.

Само расписание может выглядеть как таблица с днями влево, таймслотами вниз. В ячейках - свободные/недоступные/занятые нарядами ячейки по исполнителям.

Ячейки могут быть цветные, обозначающие, что они свободны для наряда, либо заняты, а также цвет может указывать на статус исполнения.

Отображение расписания может быть настраиваемым. Например только для одного исполнителя (в таком виде его можно отдавать самим исполнителям); С настраиваемым диапазоном дат; Для операторов с возможностью заполнять пустые ячейки или изменять статус.

Если страница с расписанием будет подключена в режиме онлайн, например через Websocket, её же можно использовать и для мониторинга.

Дальше - как фантазия позволит.

→ Ссылка