| | 1 | | using Syki.Back.Features.Student.CreateClassActivityWork; |
| | 2 | |
|
| | 3 | | namespace Syki.Back.Features.Teacher.CreateClassActivity; |
| | 4 | |
|
| | 5 | | /// <summary> |
| | 6 | | /// Atividade vinculada à uma Turma |
| | 7 | | /// </summary> |
| | 8 | | public class ClassActivity : Entity |
| | 9 | | { |
| 934 | 10 | | public Guid Id { get; set; } |
| 610 | 11 | | public Guid ClassId { get; set; } |
| 1114 | 12 | | public ClassNoteType Note { get; set; } |
| | 13 | |
|
| 342 | 14 | | public string Title { get; set; } |
| 342 | 15 | | public string Description { get; set; } |
| 342 | 16 | | public ClassActivityType Type { get; set; } |
| 6 | 17 | | public ClassActivityStatus Status { get; set; } |
| | 18 | |
|
| | 19 | | /// <summary> |
| | 20 | | /// Peso no intervalo: 0 ≤ Weight ≤ 100 |
| | 21 | | /// </summary> |
| 942 | 22 | | public int Weight { get; set; } |
| | 23 | |
|
| 342 | 24 | | public DateTime CreatedAt { get; set; } |
| 342 | 25 | | public DateOnly DueDate { get; set; } |
| 342 | 26 | | public Hour DueHour { get; set; } |
| | 27 | |
|
| 408 | 28 | | public List<ClassActivityWork> Works { get; set; } |
| | 29 | |
|
| 680 | 30 | | private ClassActivity() {} |
| | 31 | |
|
| 318 | 32 | | private ClassActivity( |
| 318 | 33 | | Guid classId, |
| 318 | 34 | | ClassNoteType note, |
| 318 | 35 | | string title, |
| 318 | 36 | | string description, |
| 318 | 37 | | ClassActivityType type, |
| 318 | 38 | | int weight, |
| 318 | 39 | | DateOnly dueDate, |
| 318 | 40 | | Hour dueHour, |
| 318 | 41 | | List<Guid> students |
| 318 | 42 | | ) { |
| 318 | 43 | | Id = Guid.CreateVersion7(); |
| 318 | 44 | | ClassId = classId; |
| 318 | 45 | | Note = note; |
| 318 | 46 | | Title = title; |
| 318 | 47 | | Description = description; |
| 318 | 48 | | Type = type; |
| 318 | 49 | | Weight = weight; |
| 318 | 50 | | CreatedAt = DateTime.UtcNow; |
| 318 | 51 | | DueDate = dueDate; |
| 318 | 52 | | DueHour = dueHour; |
| | 53 | |
|
| 388 | 54 | | Works = students.ConvertAll(x => new ClassActivityWork(Id, x)); |
| | 55 | |
|
| 318 | 56 | | AddDomainEvent(new ClassActivityCreatedDomainEvent(Id)); |
| 318 | 57 | | } |
| | 58 | |
|
| | 59 | | public static OneOf<ClassActivity, SykiError> New( |
| | 60 | | Guid classId, |
| | 61 | | ClassNoteType note, |
| | 62 | | string title, |
| | 63 | | string description, |
| | 64 | | ClassActivityType type, |
| | 65 | | int weight, |
| | 66 | | DateOnly dueDate, |
| | 67 | | Hour dueHour, |
| | 68 | | List<Guid> students |
| | 69 | | ) { |
| 342 | 70 | | if (weight < 0 || weight > 100) return new InvalidClassActivityWeight(); |
| | 71 | |
|
| 318 | 72 | | return new ClassActivity(classId, note, title, description, type, weight, dueDate, dueHour, students); |
| | 73 | | } |
| | 74 | |
|
| | 75 | | public TeacherClassActivityOut ToListOut() |
| | 76 | | { |
| 12 | 77 | | return new() |
| 12 | 78 | | { |
| 12 | 79 | | Id = Id, |
| 12 | 80 | | ClassId = ClassId, |
| 12 | 81 | | Note = Note, |
| 12 | 82 | | Title = Title, |
| 12 | 83 | | Description = Description, |
| 12 | 84 | | Type = Type, |
| 12 | 85 | | Weight = Weight, |
| 12 | 86 | | CreatedAt = CreatedAt, |
| 12 | 87 | | DueDate = DueDate, |
| 12 | 88 | | DueHour = DueHour, |
| 0 | 89 | | DeliveredWorks = Works != null ? Works.Count(w => w.Status.IsIn(ClassActivityWorkStatus.Delivered, ClassActi |
| 12 | 90 | | TotalWorks = Works != null ? Works.Count : 0, |
| 12 | 91 | | Works = [], |
| 12 | 92 | | }; |
| | 93 | | } |
| | 94 | |
|
| | 95 | | public TeacherClassActivityOut ToOut() |
| | 96 | | { |
| 6 | 97 | | return new() |
| 6 | 98 | | { |
| 6 | 99 | | Id = Id, |
| 6 | 100 | | ClassId = ClassId, |
| 6 | 101 | | Note = Note, |
| 6 | 102 | | Title = Title, |
| 6 | 103 | | Description = Description, |
| 6 | 104 | | Type = Type, |
| 6 | 105 | | Weight = Weight, |
| 6 | 106 | | CreatedAt = CreatedAt, |
| 6 | 107 | | DueDate = DueDate, |
| 6 | 108 | | DueHour = DueHour, |
| 4 | 109 | | DeliveredWorks = Works != null ? Works.Count(w => w.Status.IsIn(ClassActivityWorkStatus.Delivered, ClassActi |
| 6 | 110 | | TotalWorks = Works != null ? Works.Count : 0, |
| 4 | 111 | | Works = Works != null ? Works.Select(w => w.ToOut()).OrderBy(x => x.StudentName).ToList() : [], |
| 6 | 112 | | }; |
| | 113 | | } |
| | 114 | |
|
| | 115 | | public CreateClassActivityOut ToCreateOut() |
| | 116 | | { |
| 144 | 117 | | return new() |
| 144 | 118 | | { |
| 144 | 119 | | Id = Id, |
| 144 | 120 | | }; |
| | 121 | | } |
| | 122 | | } |