diff options
| author | ivarlovlie <git@ivarlovlie.no> | 2022-06-07 01:36:11 +0200 |
|---|---|---|
| committer | ivarlovlie <git@ivarlovlie.no> | 2022-06-07 01:36:11 +0200 |
| commit | ecdaec6f53cbaf4da2c8a3440d7a288f3497a1cb (patch) | |
| tree | 651f9dd31e019f0b1d85f83a03553bb5812237cc /server/src/Data/Database | |
| parent | a8b44b09a404aee477e735501b828d1b14aad311 (diff) | |
| download | greatoffice-ecdaec6f53cbaf4da2c8a3440d7a288f3497a1cb.tar.xz greatoffice-ecdaec6f53cbaf4da2c8a3440d7a288f3497a1cb.zip | |
feat: Work in progress more module data models
Diffstat (limited to 'server/src/Data/Database')
| -rw-r--r-- | server/src/Data/Database/Base.cs | 1 | ||||
| -rw-r--r-- | server/src/Data/Database/BaseWithOwner.cs | 7 | ||||
| -rw-r--r-- | server/src/Data/Database/Customer.cs | 7 | ||||
| -rw-r--r-- | server/src/Data/Database/CustomerContact.cs | 12 | ||||
| -rw-r--r-- | server/src/Data/Database/CustomerEvent.cs | 7 | ||||
| -rw-r--r-- | server/src/Data/Database/Project.cs | 7 | ||||
| -rw-r--r-- | server/src/Data/Database/Tenant.cs | 1 | ||||
| -rw-r--r-- | server/src/Data/Database/Todo.cs | 13 | ||||
| -rw-r--r-- | server/src/Data/Database/TodoComment.cs | 7 | ||||
| -rw-r--r-- | server/src/Data/Database/TodoLabel.cs | 8 | ||||
| -rw-r--r-- | server/src/Data/Database/TodoProject.cs | 16 | ||||
| -rw-r--r-- | server/src/Data/Database/TodoProjectAccessControl.cs | 11 | ||||
| -rw-r--r-- | server/src/Data/Database/TodoStatus.cs | 45 | ||||
| -rw-r--r-- | server/src/Data/Database/User.cs | 4 |
14 files changed, 140 insertions, 6 deletions
diff --git a/server/src/Data/Database/Base.cs b/server/src/Data/Database/Base.cs index 2439668..90b52da 100644 --- a/server/src/Data/Database/Base.cs +++ b/server/src/Data/Database/Base.cs @@ -10,5 +10,6 @@ public class Base public Guid Id { get; init; } public DateTime CreatedAt { get; init; } public DateTime? ModifiedAt { get; private set; } + public bool Deleted { get; set; } public void Modified() => ModifiedAt = DateTime.UtcNow; } diff --git a/server/src/Data/Database/BaseWithOwner.cs b/server/src/Data/Database/BaseWithOwner.cs index bc60b48..8c54aa2 100644 --- a/server/src/Data/Database/BaseWithOwner.cs +++ b/server/src/Data/Database/BaseWithOwner.cs @@ -11,14 +11,9 @@ public class BaseWithOwner : Base UserId = userId; } - public Guid UserId { get; set; } - public User User { get; init; } + public Guid? UserId { get; set; } public Guid? TenantId { get; init; } - public Tenant Tenant { get; init; } public Guid? ModifiedById { get; init; } - public User ModifiedBy { get; init; } public Guid? CreatedById { get; init; } - public User CreatedBy { get; init; } public Guid? DeletedById { get; init; } - public User DeletedBy { get; init; } } diff --git a/server/src/Data/Database/Customer.cs b/server/src/Data/Database/Customer.cs new file mode 100644 index 0000000..7e83c00 --- /dev/null +++ b/server/src/Data/Database/Customer.cs @@ -0,0 +1,7 @@ +namespace IOL.GreatOffice.Api.Data.Database; + +public class Customer : BaseWithOwner +{ + public string Name { get; set; } + +} diff --git a/server/src/Data/Database/CustomerContact.cs b/server/src/Data/Database/CustomerContact.cs new file mode 100644 index 0000000..f5a951d --- /dev/null +++ b/server/src/Data/Database/CustomerContact.cs @@ -0,0 +1,12 @@ +namespace IOL.GreatOffice.Api.Data.Database; + +public class CustomerContact : BaseWithOwner +{ + public Customer Customer { get; set; } + public string FirstName { get; set; } + public string LastName { get; set; } + public string Email { get; set; } + public string Phone { get; set; } + public string WorkTitle { get; set; } + public string Note { get; set; } +} diff --git a/server/src/Data/Database/CustomerEvent.cs b/server/src/Data/Database/CustomerEvent.cs new file mode 100644 index 0000000..da3e3ed --- /dev/null +++ b/server/src/Data/Database/CustomerEvent.cs @@ -0,0 +1,7 @@ +namespace IOL.GreatOffice.Api.Data.Database; + +public class CustomerEvent : BaseWithOwner +{ + public Customer Customer { get; set; } + public string Name { get; set; } +} diff --git a/server/src/Data/Database/Project.cs b/server/src/Data/Database/Project.cs new file mode 100644 index 0000000..7e694ee --- /dev/null +++ b/server/src/Data/Database/Project.cs @@ -0,0 +1,7 @@ +namespace IOL.GreatOffice.Api.Data.Database; + +public class Project : BaseWithOwner +{ + public string Name { get; set; } + public Guid? CustomerId { get; set; } +} diff --git a/server/src/Data/Database/Tenant.cs b/server/src/Data/Database/Tenant.cs index 3028d13..b185c7a 100644 --- a/server/src/Data/Database/Tenant.cs +++ b/server/src/Data/Database/Tenant.cs @@ -7,4 +7,5 @@ public class Tenant : BaseWithOwner public string ContactEmail { get; set; } public Guid MasterUserId { get; set; } public string MasterUserPassword { get; set; } + public ICollection<User> Users { get; set; } } diff --git a/server/src/Data/Database/Todo.cs b/server/src/Data/Database/Todo.cs new file mode 100644 index 0000000..5fe3c9a --- /dev/null +++ b/server/src/Data/Database/Todo.cs @@ -0,0 +1,13 @@ +namespace IOL.GreatOffice.Api.Data.Database; + +public class Todo : BaseWithOwner +{ + public int PublicId { get; set; } + public TodoStatus Status { get; set; } + public TodoProject Project { get; set; } + public Guid? AssignedUserId { get; set; } + public string Title { get; set; } + public string Description { get; set; } + public ICollection<TodoLabel> Labels { get; set; } + public ICollection<TodoComment> Comments { get; set; } +} diff --git a/server/src/Data/Database/TodoComment.cs b/server/src/Data/Database/TodoComment.cs new file mode 100644 index 0000000..44dcbed --- /dev/null +++ b/server/src/Data/Database/TodoComment.cs @@ -0,0 +1,7 @@ +namespace IOL.GreatOffice.Api.Data.Database; + +public class TodoComment : BaseWithOwner +{ + public string Value { get; set; } + public Todo Todo { get; set; } +} diff --git a/server/src/Data/Database/TodoLabel.cs b/server/src/Data/Database/TodoLabel.cs new file mode 100644 index 0000000..7753ade --- /dev/null +++ b/server/src/Data/Database/TodoLabel.cs @@ -0,0 +1,8 @@ +namespace IOL.GreatOffice.Api.Data.Database; + +public class TodoLabel : BaseWithOwner +{ + public string Name { get; set; } + public string Color { get; set; } + public Todo Todo { get; set; } +} diff --git a/server/src/Data/Database/TodoProject.cs b/server/src/Data/Database/TodoProject.cs new file mode 100644 index 0000000..0a4a7be --- /dev/null +++ b/server/src/Data/Database/TodoProject.cs @@ -0,0 +1,16 @@ +namespace IOL.GreatOffice.Api.Data.Database; + +public class TodoProject : BaseWithOwner +{ + public string Name { get; set; } + public TodoVisibility Visibility { get; set; } + public Guid? ProjectId { get; set; } +} + +public enum TodoVisibility +{ + PRIVATE = 0, + UNLISTED = 1, + TENANT_WIDE = 2, + PUBLIC = 3, +} diff --git a/server/src/Data/Database/TodoProjectAccessControl.cs b/server/src/Data/Database/TodoProjectAccessControl.cs new file mode 100644 index 0000000..964f831 --- /dev/null +++ b/server/src/Data/Database/TodoProjectAccessControl.cs @@ -0,0 +1,11 @@ +namespace IOL.GreatOffice.Api.Data.Database; + +public class TodoProjectAccessControl +{ + public TodoProject Project { get; set; } + public Guid? UserId { get; set; } + public bool Browse { get; set; } + public bool Submit { get; set; } + public bool Comment { get; set; } + public bool Edit { get; set; } +} diff --git a/server/src/Data/Database/TodoStatus.cs b/server/src/Data/Database/TodoStatus.cs new file mode 100644 index 0000000..416212d --- /dev/null +++ b/server/src/Data/Database/TodoStatus.cs @@ -0,0 +1,45 @@ +namespace IOL.GreatOffice.Api.Data.Database; + +public class TodoStatus : BaseWithOwner +{ + public string Name { get; set; } + public string Color { get; set; } + public Todo Todo { get; set; } + + public static List<TodoStatus> GetDefaultStatusSetForTenant(Guid tenantId) { + return new List<TodoStatus>() { + new() { + Name = "Reported", + TenantId = tenantId + }, + new() { + Name = "Resolved", + TenantId = tenantId + }, + new() { + Name = "Fixed", + TenantId = tenantId + }, + new() { + Name = "Implemented", + TenantId = tenantId + }, + new() { + Name = "Won't fix", + TenantId = tenantId + }, + new() { + Name = "By design", + TenantId = tenantId + }, + new() { + Name = "Invalid", + TenantId = tenantId + }, + new() { + Name = "Duplicate", + TenantId = tenantId + } + }; + } +} diff --git a/server/src/Data/Database/User.cs b/server/src/Data/Database/User.cs index c5063f6..83b8338 100644 --- a/server/src/Data/Database/User.cs +++ b/server/src/Data/Database/User.cs @@ -8,8 +8,12 @@ public class User : Base Username = username; } + public string FirstName { get; set; } + public string LastName { get; set; } + public string Email { get; set; } public string Username { get; set; } public string Password { get; set; } + public ICollection<Tenant> Tenants { get; set; } public void HashAndSetPassword(string password) { |
