diff options
Diffstat (limited to 'src/server/Models/Database')
| -rw-r--r-- | src/server/Models/Database/BaseModel.cs | 25 | ||||
| -rw-r--r-- | src/server/Models/Database/Category.cs | 7 | ||||
| -rw-r--r-- | src/server/Models/Database/MainDbContext.cs | 34 | ||||
| -rw-r--r-- | src/server/Models/Database/Payee.cs | 7 | ||||
| -rw-r--r-- | src/server/Models/Database/Transaction.cs | 43 | ||||
| -rw-r--r-- | src/server/Models/Database/User.cs | 31 |
6 files changed, 147 insertions, 0 deletions
diff --git a/src/server/Models/Database/BaseModel.cs b/src/server/Models/Database/BaseModel.cs new file mode 100644 index 0000000..32c2f8f --- /dev/null +++ b/src/server/Models/Database/BaseModel.cs @@ -0,0 +1,25 @@ +using System; + +namespace Dough.Models.Database +{ + public class BaseModel + { + public Guid Id { get; set; } + public DateTime Created { get; set; } + public Guid? CreatedBy { get; set; } + public bool Hidden { get; set; } + + public void SetBaseProperties(User actor = default) + { + Id = Guid.NewGuid(); + Created = DateTime.UtcNow; + CreatedBy = actor?.Id; + } + + protected void Update(BaseModel data) + { + Hidden = data.Hidden; + CreatedBy = data.CreatedBy; + } + } +} diff --git a/src/server/Models/Database/Category.cs b/src/server/Models/Database/Category.cs new file mode 100644 index 0000000..10ef226 --- /dev/null +++ b/src/server/Models/Database/Category.cs @@ -0,0 +1,7 @@ +namespace Dough.Models.Database +{ + public class Category : BaseModel + { + public string Name { get; set; } + } +} diff --git a/src/server/Models/Database/MainDbContext.cs b/src/server/Models/Database/MainDbContext.cs new file mode 100644 index 0000000..88b1585 --- /dev/null +++ b/src/server/Models/Database/MainDbContext.cs @@ -0,0 +1,34 @@ +using System.Collections.Generic; +using Microsoft.EntityFrameworkCore; + +namespace Dough.Models.Database +{ + public class MainDbContext : DbContext + { + + public MainDbContext(DbContextOptions<MainDbContext> options) : base(options) { + + } + + public DbSet<Transaction> Transactions { get; set; } + public DbSet<User> Users { get; set; } + public DbSet<Category> Categories { get; set; } + public DbSet<Payee> Payees { get; set; } + + protected override void OnModelCreating(ModelBuilder modelBuilder) + { + modelBuilder.Entity<Transaction>().ToTable("Transactions"); + var initUser = new User("ivar"); + initUser.SetBaseProperties(); + initUser.HashAndSetPassword("ivar123"); + modelBuilder.Entity<User>().HasData(new List<User> + { + initUser + }); + modelBuilder.Entity<User>().ToTable("Users"); + modelBuilder.Entity<Category>().ToTable("Categories"); + modelBuilder.Entity<Payee>().ToTable("Payees"); + base.OnModelCreating(modelBuilder); + } + } +} diff --git a/src/server/Models/Database/Payee.cs b/src/server/Models/Database/Payee.cs new file mode 100644 index 0000000..b801d5f --- /dev/null +++ b/src/server/Models/Database/Payee.cs @@ -0,0 +1,7 @@ +namespace Dough.Models.Database +{ + public class Payee : BaseModel + { + public string Name { get; set; } + } +} diff --git a/src/server/Models/Database/Transaction.cs b/src/server/Models/Database/Transaction.cs new file mode 100644 index 0000000..a81626b --- /dev/null +++ b/src/server/Models/Database/Transaction.cs @@ -0,0 +1,43 @@ +using System; +using Dough.Models.Exceptions; + +namespace Dough.Models.Database +{ + public class Transaction : BaseModel + { + public string Tags { get; set; } + public string Note { get; set; } + public DateTime Date { get; set; } + public double Amount { get; set; } + public Guid PayeeId { get; set; } + public Guid CategoryId { get; set; } + + public void Validate() + { + if (PayeeId == default) + { + var validationException = new ModelValidationException("PayeeId is invalid"); + validationException.ErrorResult.Title = "Mottaker er ugyldig"; + throw validationException; + } + + if (CategoryId == default) + { + var validationException = new ModelValidationException("CategoryId is invalid"); + validationException.ErrorResult.Title = "Kategori er ugyldig"; + throw validationException; + } + } + + public void Update(Transaction data) + { + Amount = data.Amount; + Date = data.Date; + Note = data.Note; + Tags = data.Tags; + CategoryId = data.CategoryId; + PayeeId = data.PayeeId; + base.Update(data); + } + } +} diff --git a/src/server/Models/Database/User.cs b/src/server/Models/Database/User.cs new file mode 100644 index 0000000..479c15c --- /dev/null +++ b/src/server/Models/Database/User.cs @@ -0,0 +1,31 @@ +using System; + +namespace Dough.Models.Database +{ + public class User : BaseModel + { + + public User(string username = default) + { + Username = username; + } + public string Password { get; set; } + public string Username { get; set; } + + public void Update(User data) + { + Username = data.Username; + base.Update(data); + } + + public void HashAndSetPassword(string password) + { + Password = BCrypt.Net.BCrypt.HashPassword(password); + } + + public bool VerifyPassword(string password) + { + return BCrypt.Net.BCrypt.Verify(password, Password); + } + } +} |
