aboutsummaryrefslogtreecommitdiffstats
path: root/code/api/src/Data/Database/Time/TimeEntry.cs
blob: 0405df2065d0781d78dd811badb975a3c905b571 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
namespace IOL.GreatOffice.Api.Data.Database;

public class TimeEntry : BaseWithOwner
{
    public TimeEntry() { }

    public TimeEntry(LoggedInUserModel loggedInUserModel) : base(loggedInUserModel) { }
    public DateTime Start { get; set; }
    public DateTime Stop { get; set; }
    public string Description { get; set; }
    public ICollection<TimeLabel> Labels { get; set; }
    public TimeCategory Category { get; set; }
    public TimeEntryDto AsDto => new(this);

    public class TimeEntryDto
    {
        public TimeEntryDto() { }

        public TimeEntryDto(TimeEntry sourceEntry = default) {
            if (sourceEntry == default) {
                return;
            }

            Id = sourceEntry.Id;
            ModifiedAt = sourceEntry.ModifiedAt;
            Stop = sourceEntry.Stop;
            Start = sourceEntry.Start;
            Description = sourceEntry.Description;
            if (sourceEntry.Labels != default) {
                Labels = sourceEntry.Labels
                    .Select(t => t.AsDto)
                    .ToList();
            }

            Category = sourceEntry.Category.AsDto;
        }

        public Guid? Id { get; set; }
        public DateTime? ModifiedAt { get; set; }
        public DateTime Start { get; set; }
        public DateTime Stop { get; set; }
        public string Description { get; set; }
        public List<TimeLabel.TimeLabelDto> Labels { get; set; }
        public TimeCategory.TimeCategoryDto Category { get; set; }
    }
}