summaryrefslogtreecommitdiffstats
path: root/server/src/Data/Database/TimeEntry.cs
blob: 46c62e106a2c3265dcdd84ab18729cfaf7cbb03a (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
namespace IOL.GreatOffice.Api.Data.Database;

public class TimeEntry : BaseWithOwner
{
	public TimeEntry() { }
	public TimeEntry(Guid userId) : base(userId) { }
	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; }
	}
}