From a800b3b9f18ae3e8ab030c30c5d7b6504f2a5ebb Mon Sep 17 00:00:00 2001 From: ivarlovlie Date: Sat, 1 Aug 2020 20:14:34 +0200 Subject: Initial commit --- src/server/Models/Database/BaseModel.cs | 25 +++++++++++++++++ src/server/Models/Database/Category.cs | 7 +++++ src/server/Models/Database/MainDbContext.cs | 34 +++++++++++++++++++++++ src/server/Models/Database/Payee.cs | 7 +++++ src/server/Models/Database/Transaction.cs | 43 +++++++++++++++++++++++++++++ src/server/Models/Database/User.cs | 31 +++++++++++++++++++++ 6 files changed, 147 insertions(+) create mode 100644 src/server/Models/Database/BaseModel.cs create mode 100644 src/server/Models/Database/Category.cs create mode 100644 src/server/Models/Database/MainDbContext.cs create mode 100644 src/server/Models/Database/Payee.cs create mode 100644 src/server/Models/Database/Transaction.cs create mode 100644 src/server/Models/Database/User.cs (limited to 'src/server/Models/Database') 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 options) : base(options) { + + } + + public DbSet Transactions { get; set; } + public DbSet Users { get; set; } + public DbSet Categories { get; set; } + public DbSet Payees { get; set; } + + protected override void OnModelCreating(ModelBuilder modelBuilder) + { + modelBuilder.Entity().ToTable("Transactions"); + var initUser = new User("ivar"); + initUser.SetBaseProperties(); + initUser.HashAndSetPassword("ivar123"); + modelBuilder.Entity().HasData(new List + { + initUser + }); + modelBuilder.Entity().ToTable("Users"); + modelBuilder.Entity().ToTable("Categories"); + modelBuilder.Entity().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); + } + } +} -- cgit v1.3