diff options
| author | ivarlovlie <git@ivarlovlie.no> | 2022-10-31 18:16:38 +0100 |
|---|---|---|
| committer | ivarlovlie <git@ivarlovlie.no> | 2022-10-31 18:16:38 +0100 |
| commit | f0cea15a4f85b47bf13b6db392f4ff97449d53c2 (patch) | |
| tree | 98c0b408394970eb930e53968f153e66043a3044 /code/api/src/Data | |
| parent | 0725e4f7cf4c6f723264b6d461b91c660d144cb7 (diff) | |
| download | greatoffice-f0cea15a4f85b47bf13b6db392f4ff97449d53c2.tar.xz greatoffice-f0cea15a4f85b47bf13b6db392f4ff97449d53c2.zip | |
feat: More models and schema changes
Diffstat (limited to 'code/api/src/Data')
| -rw-r--r-- | code/api/src/Data/Database/BaseWithOwner.cs | 2 | ||||
| -rw-r--r-- | code/api/src/Data/Database/Customer/Customer.cs | 4 | ||||
| -rw-r--r-- | code/api/src/Data/Database/MainAppDatabase.cs | 31 | ||||
| -rw-r--r-- | code/api/src/Data/Database/Todo/Todo.cs | 22 | ||||
| -rw-r--r-- | code/api/src/Data/Database/Todo/TodoCollection.cs | 11 | ||||
| -rw-r--r-- | code/api/src/Data/Database/Todo/TodoCollectionAccessControl.cs | 12 | ||||
| -rw-r--r-- | code/api/src/Data/Database/Todo/TodoComment.cs | 7 | ||||
| -rw-r--r-- | code/api/src/Data/Database/Todo/TodoProject.cs | 8 | ||||
| -rw-r--r-- | code/api/src/Data/Database/Todo/TodoProjectAccessControl.cs | 11 | ||||
| -rw-r--r-- | code/api/src/Data/Database/Todo/TodoStatus.cs | 37 | ||||
| -rw-r--r-- | code/api/src/Data/Enums/TodoClosingStatement.cs | 13 | ||||
| -rw-r--r-- | code/api/src/Data/Enums/TodoVisibility.cs | 2 |
12 files changed, 89 insertions, 71 deletions
diff --git a/code/api/src/Data/Database/BaseWithOwner.cs b/code/api/src/Data/Database/BaseWithOwner.cs index 84b5bfe..ad9b33a 100644 --- a/code/api/src/Data/Database/BaseWithOwner.cs +++ b/code/api/src/Data/Database/BaseWithOwner.cs @@ -16,6 +16,8 @@ public class BaseWithOwner : Base public Guid? ModifiedBy { get; private set; } public Guid? CreatedBy { get; private set; } public Guid? DeletedBy { get; private set; } + public User OwningUser { get; set; } + public Tenant OwningTenant { get; set; } public void SetDeleted(Guid userId) { DeletedBy = userId; diff --git a/code/api/src/Data/Database/Customer/Customer.cs b/code/api/src/Data/Database/Customer/Customer.cs index f9953da..8e153c6 100644 --- a/code/api/src/Data/Database/Customer/Customer.cs +++ b/code/api/src/Data/Database/Customer/Customer.cs @@ -4,7 +4,7 @@ public class Customer : BaseWithOwner { public Customer() { } public Customer(LoggedInUserModel loggedInUserModel) : base(loggedInUserModel) { } - + public string CustomerNumber { get; set; } public string Name { get; set; } public string Description { get; set; } @@ -20,7 +20,7 @@ public class Customer : BaseWithOwner public string DefaultReference { get; set; } public string Website { get; set; } public string Currency { get; set; } - + public Guid? OwnerId { get; set; } public User Owner { get; set; } public ICollection<CustomerGroup> Groups { get; set; } public ICollection<CustomerContact> Contacts { get; set; } diff --git a/code/api/src/Data/Database/MainAppDatabase.cs b/code/api/src/Data/Database/MainAppDatabase.cs index b529791..d6409e6 100644 --- a/code/api/src/Data/Database/MainAppDatabase.cs +++ b/code/api/src/Data/Database/MainAppDatabase.cs @@ -20,6 +20,11 @@ public class MainAppDatabase : DbContext, IDataProtectionKeyContext public DbSet<CustomerContact> CustomersContacts { get; set; } public DbSet<CustomerEvent> CustomerEvents { get; set; } public DbSet<CustomerGroup> CustomerGroups { get; set; } + public DbSet<TodoLabel> TodoLabels { get; set; } + public DbSet<TodoCollectionAccessControl> TodoProjectAccessControls { get; set; } + public DbSet<TodoCollection> TodoProjects { get; set; } + public DbSet<TodoComment> TodoComments { get; set; } + public DbSet<Todo> Todos { get; set; } protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.Entity<User>(e => { @@ -79,6 +84,32 @@ public class MainAppDatabase : DbContext, IDataProtectionKeyContext e.HasMany(n => n.Customers); e.ToTable("customer_groups"); }); + modelBuilder.Entity<Todo>(e => { + e.HasOne(n => n.Collection); + e.HasOne(n => n.AssignedTo); + e.HasOne(n => n.ClosedBy); + e.HasMany(n => n.Labels); + e.HasMany(n => n.Comments); + e.ToTable("todos"); + }); + modelBuilder.Entity<TodoCollection>(e => { + e.HasOne(n => n.Project); + e.HasMany(n => n.AccessControls); + e.ToTable("todo_collections"); + }); + modelBuilder.Entity<TodoComment>(e => { + e.HasOne(n => n.Todo); + e.ToTable("todo_comments"); + }); + modelBuilder.Entity<TodoLabel>(e => { + e.HasOne(n => n.Todo); + e.ToTable("todo_labels"); + }); + modelBuilder.Entity<TodoCollectionAccessControl>(e => { + e.HasOne(n => n.User); + e.HasOne(n => n.Collection); + e.ToTable("todo_collection_access_controls"); + }); base.OnModelCreating(modelBuilder); } diff --git a/code/api/src/Data/Database/Todo/Todo.cs b/code/api/src/Data/Database/Todo/Todo.cs index 5fe3c9a..2d7f109 100644 --- a/code/api/src/Data/Database/Todo/Todo.cs +++ b/code/api/src/Data/Database/Todo/Todo.cs @@ -2,12 +2,16 @@ 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; } -} + public string PublicId { get; set; } + public Guid? AssignedToId { get; set; } + public Guid? ClosedById { get; set; } + public Guid CollectionId { get; set; } + public DateTime? ClosedAt { get; set; } + public string Title { get; set; } + public string Description { get; set; } + public ICollection<TodoLabel> Labels { get; set; } + public ICollection<TodoComment> Comments { get; set; } + public User AssignedTo { get; set; } + public User ClosedBy { get; set; } + public TodoCollection Collection { get; set; } +}
\ No newline at end of file diff --git a/code/api/src/Data/Database/Todo/TodoCollection.cs b/code/api/src/Data/Database/Todo/TodoCollection.cs new file mode 100644 index 0000000..470e5e7 --- /dev/null +++ b/code/api/src/Data/Database/Todo/TodoCollection.cs @@ -0,0 +1,11 @@ +namespace IOL.GreatOffice.Api.Data.Database; + +public class TodoCollection : BaseWithOwner +{ + public string Name { get; set; } + public string Description { get; set; } + public TodoVisibility Visibility { get; set; } + public Guid? ProjectId { get; set; } + public Project Project { get; set; } + public ICollection<TodoCollectionAccessControl> AccessControls { get; set; } +}
\ No newline at end of file diff --git a/code/api/src/Data/Database/Todo/TodoCollectionAccessControl.cs b/code/api/src/Data/Database/Todo/TodoCollectionAccessControl.cs new file mode 100644 index 0000000..1676c06 --- /dev/null +++ b/code/api/src/Data/Database/Todo/TodoCollectionAccessControl.cs @@ -0,0 +1,12 @@ +namespace IOL.GreatOffice.Api.Data.Database; + +public class TodoCollectionAccessControl : Base +{ + public TodoCollection Collection { get; set; } + public User User { get; set; } + public Guid? UserId { get; set; } + public bool CanBrowse { get; set; } + public bool CanSubmit { get; set; } + public bool CanComment { get; set; } + public bool CanEdit { get; set; } +}
\ No newline at end of file diff --git a/code/api/src/Data/Database/Todo/TodoComment.cs b/code/api/src/Data/Database/Todo/TodoComment.cs index 44dcbed..32ac3a3 100644 --- a/code/api/src/Data/Database/Todo/TodoComment.cs +++ b/code/api/src/Data/Database/Todo/TodoComment.cs @@ -2,6 +2,7 @@ namespace IOL.GreatOffice.Api.Data.Database; public class TodoComment : BaseWithOwner { - public string Value { get; set; } - public Todo Todo { get; set; } -} + public string Value { get; set; } + public Todo Todo { get; set; } + public TodoClosingStatement? ClosingStatement { get; set; } +}
\ No newline at end of file diff --git a/code/api/src/Data/Database/Todo/TodoProject.cs b/code/api/src/Data/Database/Todo/TodoProject.cs deleted file mode 100644 index 5e22bbe..0000000 --- a/code/api/src/Data/Database/Todo/TodoProject.cs +++ /dev/null @@ -1,8 +0,0 @@ -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; } -}
\ No newline at end of file diff --git a/code/api/src/Data/Database/Todo/TodoProjectAccessControl.cs b/code/api/src/Data/Database/Todo/TodoProjectAccessControl.cs deleted file mode 100644 index 964f831..0000000 --- a/code/api/src/Data/Database/Todo/TodoProjectAccessControl.cs +++ /dev/null @@ -1,11 +0,0 @@ -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/code/api/src/Data/Database/Todo/TodoStatus.cs b/code/api/src/Data/Database/Todo/TodoStatus.cs deleted file mode 100644 index 9ace7d0..0000000 --- a/code/api/src/Data/Database/Todo/TodoStatus.cs +++ /dev/null @@ -1,37 +0,0 @@ -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", - }, - new() { - Name = "Resolved", - }, - new() { - Name = "Fixed", - }, - new() { - Name = "Implemented", - }, - new() { - Name = "Won't fix", - }, - new() { - Name = "By design", - }, - new() { - Name = "Invalid", - }, - new() { - Name = "Duplicate", - } - }; - } -} diff --git a/code/api/src/Data/Enums/TodoClosingStatement.cs b/code/api/src/Data/Enums/TodoClosingStatement.cs new file mode 100644 index 0000000..d838031 --- /dev/null +++ b/code/api/src/Data/Enums/TodoClosingStatement.cs @@ -0,0 +1,13 @@ +namespace IOL.GreatOffice.Api.Data.Enums; + +public enum TodoClosingStatement +{ + REPORTED, + RESOLVED, + FIXED, + IMPLEMENTED, + WONT_FIX, + BY_DESIGN, + INVALID, + DUPLICATE +}
\ No newline at end of file diff --git a/code/api/src/Data/Enums/TodoVisibility.cs b/code/api/src/Data/Enums/TodoVisibility.cs index 8581ba9..2c8fa83 100644 --- a/code/api/src/Data/Enums/TodoVisibility.cs +++ b/code/api/src/Data/Enums/TodoVisibility.cs @@ -5,6 +5,6 @@ public enum TodoVisibility { PRIVATE = 0, UNLISTED = 1, - TENANT_WIDE = 2, + INTERNAL = 2, PUBLIC = 3, }
\ No newline at end of file |
