public async Task HandleAsync(ChangeToDoTaskStatusCommand command) { var status = (ToDoListStatus)command.Status; switch (status) { case ToDoListStatus.InProgress: await _toDoListsService.StartTaskAsync(command.ListId, command.TaskId, command.UserId.Value); break; case ToDoListStatus.Done: await _toDoListsService.CompleteTaskAsync(command.ListId, command.TaskId, command.UserId.Value); break; case ToDoListStatus.OnHold: await _toDoListsService.HoldTaskAsync(command.ListId, command.TaskId, command.UserId.Value); break; case ToDoListStatus.Cancelled: await _toDoListsService.CancelTaskAsync(command.ListId, command.TaskId, command.UserId.Value); break; case ToDoListStatus.Archived: await _toDoListsService.DeleteTaskAsync(command.ListId, command.TaskId, command.UserId.Value); break; default: throw new BusinessLogicException("incorrect_status"); } }