/
d.alekseev
/
SmartMenuBot
Обзор
Документация
Войти
/
d.alekseev
/
SmartMenuBot
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
ConsoleBot/Core/Entities/ToDoItem.cs
74 строки
2 KB
d.alekseev
feat: списки задач, callback-сценарии и рефактор маршрутизации UpdateHandler
13 фев 2026, 17:30
13 фев 2026, 17:30
a225948
Код
Авторство
О чём код?
namespace SmartMenuBot.Core.Entities { public enum ToDoItemState { Active, Completed } public class ToDoItem { public Guid Id { get; } public ToDoUser User { get; } public ToDoList? List { get; } public string Name { get; } public DateTime CreatedAt { get; } public DateTime Deadline { get; } public ToDoItemState State { get; private set; } public DateTime? StateChangedAt { get; private set; } public ToDoItem(ToDoUser user, string name, DateTime deadline, ToDoList? list = null) : this(Guid.NewGuid(), user, name, DateTime.UtcNow, deadline, list, ToDoItemState.Active, null) { } private ToDoItem( Guid id, ToDoUser user, string name, DateTime createdAt, DateTime deadline, ToDoList? list, ToDoItemState state, DateTime? stateChangedAt) { if (id == Guid.Empty) throw new ArgumentException("Поле Id не может быть пустым GUID", nameof(id)); Id = id; User = user ?? throw new ArgumentNullException(nameof(user)); List = list; Name = name ?? throw new ArgumentNullException(nameof(name)); CreatedAt = createdAt; Deadline = deadline; State = state; StateChangedAt = stateChangedAt; } public static ToDoItem Restore( Guid id, ToDoUser user, string name, DateTime createdAt, DateTime deadline, ToDoItemState state, DateTime? stateChangedAt, ToDoList? list = null) { return new ToDoItem(id, user, name, createdAt, deadline, list, state, stateChangedAt); } public void ChangeState(ToDoItemState newState) { if (State == newState) return; State = newState; StateChangedAt = DateTime.UtcNow; } public void Complete() => ChangeState(ToDoItemState.Completed); public void Activate() => ChangeState(ToDoItemState.Active); } }