aboutsummaryrefslogtreecommitdiffstats
path: root/code/api/src/Data/Database
diff options
context:
space:
mode:
authorivarlovlie <git@ivarlovlie.no>2022-10-31 18:16:38 +0100
committerivarlovlie <git@ivarlovlie.no>2022-10-31 18:16:38 +0100
commitf0cea15a4f85b47bf13b6db392f4ff97449d53c2 (patch)
tree98c0b408394970eb930e53968f153e66043a3044 /code/api/src/Data/Database
parent0725e4f7cf4c6f723264b6d461b91c660d144cb7 (diff)
downloadgreatoffice-f0cea15a4f85b47bf13b6db392f4ff97449d53c2.tar.xz
greatoffice-f0cea15a4f85b47bf13b6db392f4ff97449d53c2.zip
feat: More models and schema changes
Diffstat (limited to 'code/api/src/Data/Database')
-rw-r--r--code/api/src/Data/Database/BaseWithOwner.cs2
-rw-r--r--code/api/src/Data/Database/Customer/Customer.cs4
-rw-r--r--code/api/src/Data/Database/MainAppDatabase.cs31
-rw-r--r--code/api/src/Data/Database/Todo/Todo.cs22
-rw-r--r--code/api/src/Data/Database/Todo/TodoCollection.cs11
-rw-r--r--code/api/src/Data/Database/Todo/TodoCollectionAccessControl.cs12
-rw-r--r--code/api/src/Data/Database/Todo/TodoComment.cs7
-rw-r--r--code/api/src/Data/Database/Todo/TodoProject.cs8
-rw-r--r--code/api/src/Data/Database/Todo/TodoProjectAccessControl.cs11
-rw-r--r--code/api/src/Data/Database/Todo/TodoStatus.cs37
10 files changed, 75 insertions, 70 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",
- }
- };
- }
-}