aboutsummaryrefslogtreecommitdiffstats
path: root/code/api/src/Data/Database/Time
diff options
context:
space:
mode:
authorivarlovlie <git@ivarlovlie.no>2022-10-30 16:40:03 +0100
committerivarlovlie <git@ivarlovlie.no>2022-10-30 16:40:03 +0100
commit0725e4f7cf4c6f723264b6d461b91c660d144cb7 (patch)
treeaae5876b5760c80679161d918c34d753ec0e2582 /code/api/src/Data/Database/Time
parentd76c180c9631df015d37138045c79a46cca350e8 (diff)
downloadgreatoffice-0725e4f7cf4c6f723264b6d461b91c660d144cb7.tar.xz
greatoffice-0725e4f7cf4c6f723264b6d461b91c660d144cb7.zip
feat: Apiwork
Diffstat (limited to 'code/api/src/Data/Database/Time')
-rw-r--r--code/api/src/Data/Database/Time/TimeCategory.cs32
-rw-r--r--code/api/src/Data/Database/Time/TimeEntry.cs46
-rw-r--r--code/api/src/Data/Database/Time/TimeLabel.cs32
3 files changed, 110 insertions, 0 deletions
diff --git a/code/api/src/Data/Database/Time/TimeCategory.cs b/code/api/src/Data/Database/Time/TimeCategory.cs
new file mode 100644
index 0000000..c3f013d
--- /dev/null
+++ b/code/api/src/Data/Database/Time/TimeCategory.cs
@@ -0,0 +1,32 @@
+namespace IOL.GreatOffice.Api.Data.Database;
+
+public class TimeCategory : BaseWithOwner
+{
+ public TimeCategory() { }
+
+ public TimeCategory(LoggedInUserModel loggedInUserModel) : base(loggedInUserModel) { }
+ public string Name { get; set; }
+ public string Color { get; set; }
+ public TimeCategoryDto AsDto => new(this);
+
+ public class TimeCategoryDto
+ {
+ public TimeCategoryDto() { }
+
+ public TimeCategoryDto(TimeCategory sourceEntry = default) {
+ if (sourceEntry == default) {
+ return;
+ }
+
+ Id = sourceEntry.Id;
+ ModifiedAt = sourceEntry.ModifiedAt;
+ Name = sourceEntry.Name;
+ Color = sourceEntry.Color;
+ }
+
+ public Guid Id { get; set; }
+ public DateTime? ModifiedAt { get; set; }
+ public string Name { get; set; }
+ public string Color { get; set; }
+ }
+} \ No newline at end of file
diff --git a/code/api/src/Data/Database/Time/TimeEntry.cs b/code/api/src/Data/Database/Time/TimeEntry.cs
new file mode 100644
index 0000000..0405df2
--- /dev/null
+++ b/code/api/src/Data/Database/Time/TimeEntry.cs
@@ -0,0 +1,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; }
+ }
+} \ No newline at end of file
diff --git a/code/api/src/Data/Database/Time/TimeLabel.cs b/code/api/src/Data/Database/Time/TimeLabel.cs
new file mode 100644
index 0000000..365161c
--- /dev/null
+++ b/code/api/src/Data/Database/Time/TimeLabel.cs
@@ -0,0 +1,32 @@
+namespace IOL.GreatOffice.Api.Data.Database;
+
+public class TimeLabel : BaseWithOwner
+{
+ public TimeLabel() { }
+
+ public TimeLabel(LoggedInUserModel loggedInUserModel) : base(loggedInUserModel) { }
+ public string Name { get; set; }
+ public string Color { get; set; }
+
+ [NotMapped]
+ public TimeLabelDto AsDto => new(this);
+
+ public class TimeLabelDto
+ {
+ public TimeLabelDto() { }
+
+ public TimeLabelDto(TimeLabel sourceEntry) {
+ Id = sourceEntry.Id;
+ CreatedAt = sourceEntry.CreatedAt;
+ ModifiedAt = sourceEntry.ModifiedAt;
+ Name = sourceEntry.Name;
+ Color = sourceEntry.Color;
+ }
+
+ public Guid Id { get; set; }
+ public DateTime CreatedAt { get; set; }
+ public DateTime? ModifiedAt { get; set; }
+ public string Name { get; set; }
+ public string Color { get; set; }
+ }
+} \ No newline at end of file