Я бы рекомендовал обновлять статус каждый раз, когда запрашивается статус. Или, что еще лучше, даже не храните статус в базе данных, а просто вычисляйте его каждый раз, когда запрашивается на основе других переменных. Таким образом, всякий раз, когда у вас есть таблица со списком статуса или кто-то запрашивает статус, просто возьмите дату события, сравните ее с сегодняшней датой и отправьте их «не началось», «продолжается» или «закончено».
Если, конечно, вам не нужно больше возможных статусов («планирование», «подготовка», «настройка» и т. Д.). Затем вам потребуется либо запланированные даты / время для каждого из этих статусов, либо вам необходимо сохранить переменную состояния. В любом случае вы можете обновить статус (в соответствии с сегодняшней датой и любой другой соответствующей информацией) в тот момент, когда он запрашивается.