From b7e39b59fd0fc7b5610ebff29035bf622079e0d8 Mon Sep 17 00:00:00 2001 From: ivarlovlie Date: Wed, 5 Oct 2022 20:45:21 +0800 Subject: refactor: Change file structure --- server/src/Data/AppDbContext.cs | 51 -------- server/src/Data/Database/ApiAccessToken.cs | 31 ----- server/src/Data/Database/Base.cs | 15 --- server/src/Data/Database/BaseWithOwner.cs | 19 --- server/src/Data/Database/Customer.cs | 6 - server/src/Data/Database/CustomerContact.cs | 12 -- server/src/Data/Database/CustomerEvent.cs | 7 -- server/src/Data/Database/ForgotPasswordRequest.cs | 23 ---- server/src/Data/Database/Project.cs | 7 -- server/src/Data/Database/Tenant.cs | 11 -- server/src/Data/Database/TimeCategory.cs | 31 ----- server/src/Data/Database/TimeEntry.cs | 45 ------- server/src/Data/Database/TimeLabel.cs | 31 ----- server/src/Data/Database/Todo.cs | 13 -- server/src/Data/Database/TodoComment.cs | 7 -- server/src/Data/Database/TodoLabel.cs | 8 -- server/src/Data/Database/TodoProject.cs | 16 --- .../src/Data/Database/TodoProjectAccessControl.cs | 11 -- server/src/Data/Database/TodoStatus.cs | 45 ------- server/src/Data/Database/User.cs | 37 ------ server/src/Data/Dtos/TimeQueryDto.cs | 34 ------ server/src/Data/Dtos/UserArchiveDto.cs | 131 --------------------- server/src/Data/Enums/TimeEntryQueryDuration.cs | 37 ------ .../ForgotPasswordRequestNotFoundException.cs | 21 ---- .../src/Data/Exceptions/UserNotFoundException.cs | 19 --- server/src/Data/Models/ApiSpecDocument.cs | 9 -- server/src/Data/Models/AppPath.cs | 23 ---- server/src/Data/Models/LoggedInUserModel.cs | 7 -- server/src/Data/Results/ErrorResult.cs | 12 -- server/src/Data/Static/AppClaims.cs | 8 -- server/src/Data/Static/AppConfiguration.cs | 58 --------- server/src/Data/Static/AppConstants.cs | 12 -- server/src/Data/Static/AppDateTime.cs | 16 --- server/src/Data/Static/AppEnvironmentVariables.cs | 21 ---- server/src/Data/Static/AppHeaders.cs | 7 -- server/src/Data/Static/AppPaths.cs | 17 --- server/src/Data/Static/JsonSettings.cs | 11 -- 37 files changed, 869 deletions(-) delete mode 100644 server/src/Data/AppDbContext.cs delete mode 100644 server/src/Data/Database/ApiAccessToken.cs delete mode 100644 server/src/Data/Database/Base.cs delete mode 100644 server/src/Data/Database/BaseWithOwner.cs delete mode 100644 server/src/Data/Database/Customer.cs delete mode 100644 server/src/Data/Database/CustomerContact.cs delete mode 100644 server/src/Data/Database/CustomerEvent.cs delete mode 100644 server/src/Data/Database/ForgotPasswordRequest.cs delete mode 100644 server/src/Data/Database/Project.cs delete mode 100644 server/src/Data/Database/Tenant.cs delete mode 100644 server/src/Data/Database/TimeCategory.cs delete mode 100644 server/src/Data/Database/TimeEntry.cs delete mode 100644 server/src/Data/Database/TimeLabel.cs delete mode 100644 server/src/Data/Database/Todo.cs delete mode 100644 server/src/Data/Database/TodoComment.cs delete mode 100644 server/src/Data/Database/TodoLabel.cs delete mode 100644 server/src/Data/Database/TodoProject.cs delete mode 100644 server/src/Data/Database/TodoProjectAccessControl.cs delete mode 100644 server/src/Data/Database/TodoStatus.cs delete mode 100644 server/src/Data/Database/User.cs delete mode 100644 server/src/Data/Dtos/TimeQueryDto.cs delete mode 100644 server/src/Data/Dtos/UserArchiveDto.cs delete mode 100644 server/src/Data/Enums/TimeEntryQueryDuration.cs delete mode 100644 server/src/Data/Exceptions/ForgotPasswordRequestNotFoundException.cs delete mode 100644 server/src/Data/Exceptions/UserNotFoundException.cs delete mode 100644 server/src/Data/Models/ApiSpecDocument.cs delete mode 100644 server/src/Data/Models/AppPath.cs delete mode 100644 server/src/Data/Models/LoggedInUserModel.cs delete mode 100644 server/src/Data/Results/ErrorResult.cs delete mode 100644 server/src/Data/Static/AppClaims.cs delete mode 100644 server/src/Data/Static/AppConfiguration.cs delete mode 100644 server/src/Data/Static/AppConstants.cs delete mode 100644 server/src/Data/Static/AppDateTime.cs delete mode 100644 server/src/Data/Static/AppEnvironmentVariables.cs delete mode 100644 server/src/Data/Static/AppHeaders.cs delete mode 100644 server/src/Data/Static/AppPaths.cs delete mode 100644 server/src/Data/Static/JsonSettings.cs (limited to 'server/src/Data') diff --git a/server/src/Data/AppDbContext.cs b/server/src/Data/AppDbContext.cs deleted file mode 100644 index c970429..0000000 --- a/server/src/Data/AppDbContext.cs +++ /dev/null @@ -1,51 +0,0 @@ -using Microsoft.AspNetCore.DataProtection.EntityFrameworkCore; - -namespace IOL.GreatOffice.Api.Data; - -public class AppDbContext : DbContext, IDataProtectionKeyContext -{ - public AppDbContext(DbContextOptions options) : base(options) { } - public DbSet Users { get; set; } - public DbSet ForgotPasswordRequests { get; set; } - public DbSet TimeLabels { get; set; } - public DbSet TimeEntries { get; set; } - public DbSet TimeCategories { get; set; } - public DbSet AccessTokens { get; set; } - public DbSet Tenants { get; set; } - public DbSet DataProtectionKeys { get; set; } - - protected override void OnModelCreating(ModelBuilder modelBuilder) { - modelBuilder.Entity(e => { - e.ToTable("users"); - }); - - modelBuilder.Entity(e => { - e.HasOne(c => c.User); - e.ToTable("forgot_password_requests"); - }); - - modelBuilder.Entity(e => { - e.ToTable("time_categories"); - }); - - modelBuilder.Entity(e => { - e.ToTable("time_labels"); - }); - - modelBuilder.Entity(e => { - e.HasOne(c => c.Category); - e.HasMany(c => c.Labels); - e.ToTable("time_entries"); - }); - - modelBuilder.Entity(e => { - e.ToTable("api_access_tokens"); - }); - - modelBuilder.Entity(e => { - e.ToTable("tenants"); - }); - - base.OnModelCreating(modelBuilder); - } -} diff --git a/server/src/Data/Database/ApiAccessToken.cs b/server/src/Data/Database/ApiAccessToken.cs deleted file mode 100644 index 9582869..0000000 --- a/server/src/Data/Database/ApiAccessToken.cs +++ /dev/null @@ -1,31 +0,0 @@ -namespace IOL.GreatOffice.Api.Data.Database; - -public class ApiAccessToken : Base -{ - public User User { get; set; } - public DateTime ExpiryDate { get; set; } - public bool AllowRead { get; set; } - public bool AllowCreate { get; set; } - public bool AllowUpdate { get; set; } - public bool AllowDelete { get; set; } - public bool HasExpired => ExpiryDate < AppDateTime.UtcNow; - public ApiAccessTokenDto AsDto => new(this); - - public class ApiAccessTokenDto - { - public ApiAccessTokenDto(ApiAccessToken source) { - ExpiryDate = source.ExpiryDate; - AllowRead = source.AllowRead; - AllowCreate = source.AllowCreate; - AllowUpdate = source.AllowUpdate; - AllowDelete = source.AllowDelete; - } - - public DateTime ExpiryDate { get; set; } - public bool AllowRead { get; set; } - public bool AllowCreate { get; set; } - public bool AllowUpdate { get; set; } - public bool AllowDelete { get; set; } - public bool HasExpired => ExpiryDate < AppDateTime.UtcNow; - } -} \ No newline at end of file diff --git a/server/src/Data/Database/Base.cs b/server/src/Data/Database/Base.cs deleted file mode 100644 index ae9efa2..0000000 --- a/server/src/Data/Database/Base.cs +++ /dev/null @@ -1,15 +0,0 @@ -namespace IOL.GreatOffice.Api.Data.Database; - -public class Base -{ - protected Base() { - Id = Guid.NewGuid(); - CreatedAt = AppDateTime.UtcNow; - } - - 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 = AppDateTime.UtcNow; -} \ No newline at end of file diff --git a/server/src/Data/Database/BaseWithOwner.cs b/server/src/Data/Database/BaseWithOwner.cs deleted file mode 100644 index 1eb99f4..0000000 --- a/server/src/Data/Database/BaseWithOwner.cs +++ /dev/null @@ -1,19 +0,0 @@ -namespace IOL.GreatOffice.Api.Data.Database; - -/// -/// Base class for all entities. -/// -public class BaseWithOwner : Base -{ - protected BaseWithOwner() { } - - protected BaseWithOwner(Guid userId) { - UserId = userId; - } - - public Guid? UserId { get; set; } - public Guid? TenantId { get; init; } - public Guid? ModifiedById { get; init; } - public Guid? CreatedById { get; init; } - public Guid? DeletedById { get; init; } -} \ No newline at end of file diff --git a/server/src/Data/Database/Customer.cs b/server/src/Data/Database/Customer.cs deleted file mode 100644 index c6b06a4..0000000 --- a/server/src/Data/Database/Customer.cs +++ /dev/null @@ -1,6 +0,0 @@ -namespace IOL.GreatOffice.Api.Data.Database; - -public class Customer : BaseWithOwner -{ - public string Name { get; set; } -} \ No newline at end of file diff --git a/server/src/Data/Database/CustomerContact.cs b/server/src/Data/Database/CustomerContact.cs deleted file mode 100644 index f5a951d..0000000 --- a/server/src/Data/Database/CustomerContact.cs +++ /dev/null @@ -1,12 +0,0 @@ -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 deleted file mode 100644 index da3e3ed..0000000 --- a/server/src/Data/Database/CustomerEvent.cs +++ /dev/null @@ -1,7 +0,0 @@ -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/ForgotPasswordRequest.cs b/server/src/Data/Database/ForgotPasswordRequest.cs deleted file mode 100644 index 1510a35..0000000 --- a/server/src/Data/Database/ForgotPasswordRequest.cs +++ /dev/null @@ -1,23 +0,0 @@ -namespace IOL.GreatOffice.Api.Data.Database; - -public class ForgotPasswordRequest -{ - public ForgotPasswordRequest() { } - - public ForgotPasswordRequest(User user) { - CreatedAt = AppDateTime.UtcNow; - Id = Guid.NewGuid(); - User = user; - } - - public Guid Id { get; set; } - public Guid UserId { get; set; } - public User User { get; set; } - public DateTime CreatedAt { get; set; } - - [NotMapped] - public DateTime ExpirationDate => CreatedAt.AddMinutes(15); - - [NotMapped] - public bool IsExpired => DateTime.Compare(ExpirationDate, AppDateTime.UtcNow) < 0; -} diff --git a/server/src/Data/Database/Project.cs b/server/src/Data/Database/Project.cs deleted file mode 100644 index 7e694ee..0000000 --- a/server/src/Data/Database/Project.cs +++ /dev/null @@ -1,7 +0,0 @@ -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 deleted file mode 100644 index b185c7a..0000000 --- a/server/src/Data/Database/Tenant.cs +++ /dev/null @@ -1,11 +0,0 @@ -namespace IOL.GreatOffice.Api.Data.Database; - -public class Tenant : BaseWithOwner -{ - public string Name { get; set; } - public string Description { get; set; } - public string ContactEmail { get; set; } - public Guid MasterUserId { get; set; } - public string MasterUserPassword { get; set; } - public ICollection Users { get; set; } -} diff --git a/server/src/Data/Database/TimeCategory.cs b/server/src/Data/Database/TimeCategory.cs deleted file mode 100644 index 69c6957..0000000 --- a/server/src/Data/Database/TimeCategory.cs +++ /dev/null @@ -1,31 +0,0 @@ -namespace IOL.GreatOffice.Api.Data.Database; - -public class TimeCategory : BaseWithOwner -{ - public TimeCategory() { } - public TimeCategory(Guid userId) : base(userId) { } - public string Name { get; set; } - public string Color { get; set; } - public TimeCategoryDto AsDto => new(this); - - public class TimeCategoryDto - { - public TimeCategoryDto() { } - - public TimeCategoryDto(TimeCategory sourceEntry = default) { - if (sourceEntry == default) { - return; - } - - Id = sourceEntry.Id; - ModifiedAt = sourceEntry.ModifiedAt; - Name = sourceEntry.Name; - Color = sourceEntry.Color; - } - - public Guid Id { get; set; } - public DateTime? ModifiedAt { get; set; } - public string Name { get; set; } - public string Color { get; set; } - } -} diff --git a/server/src/Data/Database/TimeEntry.cs b/server/src/Data/Database/TimeEntry.cs deleted file mode 100644 index 46c62e1..0000000 --- a/server/src/Data/Database/TimeEntry.cs +++ /dev/null @@ -1,45 +0,0 @@ -namespace IOL.GreatOffice.Api.Data.Database; - -public class TimeEntry : BaseWithOwner -{ - public TimeEntry() { } - public TimeEntry(Guid userId) : base(userId) { } - public DateTime Start { get; set; } - public DateTime Stop { get; set; } - public string Description { get; set; } - public ICollection Labels { get; set; } - public TimeCategory Category { get; set; } - public TimeEntryDto AsDto => new(this); - - public class TimeEntryDto - { - public TimeEntryDto() { } - - public TimeEntryDto(TimeEntry sourceEntry = default) { - if (sourceEntry == default) { - return; - } - - Id = sourceEntry.Id; - ModifiedAt = sourceEntry.ModifiedAt; - Stop = sourceEntry.Stop; - Start = sourceEntry.Start; - Description = sourceEntry.Description; - if (sourceEntry.Labels != default) { - Labels = sourceEntry.Labels - .Select(t => t.AsDto) - .ToList(); - } - - Category = sourceEntry.Category.AsDto; - } - - public Guid? Id { get; set; } - public DateTime? ModifiedAt { get; set; } - public DateTime Start { get; set; } - public DateTime Stop { get; set; } - public string Description { get; set; } - public List Labels { get; set; } - public TimeCategory.TimeCategoryDto Category { get; set; } - } -} diff --git a/server/src/Data/Database/TimeLabel.cs b/server/src/Data/Database/TimeLabel.cs deleted file mode 100644 index 55e20b0..0000000 --- a/server/src/Data/Database/TimeLabel.cs +++ /dev/null @@ -1,31 +0,0 @@ -namespace IOL.GreatOffice.Api.Data.Database; - -public class TimeLabel : BaseWithOwner -{ - public TimeLabel() { } - public TimeLabel(Guid userId) : base(userId) { } - public string Name { get; set; } - public string Color { get; set; } - - [NotMapped] - public TimeLabelDto AsDto => new(this); - - public class TimeLabelDto - { - public TimeLabelDto() { } - - public TimeLabelDto(TimeLabel sourceEntry) { - Id = sourceEntry.Id; - CreatedAt = sourceEntry.CreatedAt; - ModifiedAt = sourceEntry.ModifiedAt; - Name = sourceEntry.Name; - Color = sourceEntry.Color; - } - - public Guid Id { get; set; } - public DateTime CreatedAt { get; set; } - public DateTime? ModifiedAt { get; set; } - public string Name { get; set; } - public string Color { get; set; } - } -} diff --git a/server/src/Data/Database/Todo.cs b/server/src/Data/Database/Todo.cs deleted file mode 100644 index 5fe3c9a..0000000 --- a/server/src/Data/Database/Todo.cs +++ /dev/null @@ -1,13 +0,0 @@ -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 Labels { get; set; } - public ICollection Comments { get; set; } -} diff --git a/server/src/Data/Database/TodoComment.cs b/server/src/Data/Database/TodoComment.cs deleted file mode 100644 index 44dcbed..0000000 --- a/server/src/Data/Database/TodoComment.cs +++ /dev/null @@ -1,7 +0,0 @@ -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 deleted file mode 100644 index 7753ade..0000000 --- a/server/src/Data/Database/TodoLabel.cs +++ /dev/null @@ -1,8 +0,0 @@ -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 deleted file mode 100644 index 0a4a7be..0000000 --- a/server/src/Data/Database/TodoProject.cs +++ /dev/null @@ -1,16 +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; } -} - -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 deleted file mode 100644 index 964f831..0000000 --- a/server/src/Data/Database/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/server/src/Data/Database/TodoStatus.cs b/server/src/Data/Database/TodoStatus.cs deleted file mode 100644 index 416212d..0000000 --- a/server/src/Data/Database/TodoStatus.cs +++ /dev/null @@ -1,45 +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 GetDefaultStatusSetForTenant(Guid tenantId) { - return new List() { - 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 deleted file mode 100644 index 9db5d35..0000000 --- a/server/src/Data/Database/User.cs +++ /dev/null @@ -1,37 +0,0 @@ -namespace IOL.GreatOffice.Api.Data.Database; - -public class User : Base -{ - public User() { } - - public User(string username) { - 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 Tenants { get; set; } - - public string DisplayName() { - if (FirstName.HasValue() && LastName.HasValue()) return FirstName + " " + LastName; - return FirstName.HasValue() ? FirstName : Email; - } - - public void HashAndSetPassword(string password) { - Password = PasswordHelper.HashPassword(password); - } - - public bool VerifyPassword(string password) { - return PasswordHelper.Verify(password, Password); - } - - public IEnumerable DefaultClaims() { - return new Claim[] { - new(AppClaims.USER_ID, Id.ToString()), - new(AppClaims.NAME, Username), - }; - } -} \ No newline at end of file diff --git a/server/src/Data/Dtos/TimeQueryDto.cs b/server/src/Data/Dtos/TimeQueryDto.cs deleted file mode 100644 index f734cb1..0000000 --- a/server/src/Data/Dtos/TimeQueryDto.cs +++ /dev/null @@ -1,34 +0,0 @@ - -namespace IOL.GreatOffice.Api.Data.Dtos; - -public class TimeQueryDto -{ - public TimeQueryDto() { - Results = new List(); - } - - /// - /// List of entries. - /// - public List Results { get; set; } - - /// - /// Curren page. - /// - public int Page { get; set; } - - /// - /// Maximum count of entries in a page. - /// - public int PageSize { get; set; } - - /// - /// Total count of entries. - /// - public int TotalSize { get; set; } - - /// - /// Total count of pages. - /// - public int TotalPageCount { get; set; } -} diff --git a/server/src/Data/Dtos/UserArchiveDto.cs b/server/src/Data/Dtos/UserArchiveDto.cs deleted file mode 100644 index 42e0600..0000000 --- a/server/src/Data/Dtos/UserArchiveDto.cs +++ /dev/null @@ -1,131 +0,0 @@ - -namespace IOL.GreatOffice.Api.Data.Dtos; - -/// -/// Represents a user archive as it is provided to users. -/// -public class UserArchiveDto -{ - /// - public UserArchiveDto(User user) { - Meta = new MetaDto { - GeneratedAt = AppDateTime.UtcNow.ToString("yyyy-MM-ddTHH:mm:ssZ") - }; - User = new UserDto(user); - Entries = new List(); - } - - /// - /// Metadata for the user archive. - /// - public MetaDto Meta { get; } - - /// - /// Relevant user data for the archive. - /// - public UserDto User { get; } - - /// - /// List of entries that the user has created. - /// - public List Entries { get; } - - public void CountEntries() { - Meta.EntryCount = Entries.Count; - } - - /// - /// Represents a time entry in the data archive. - /// - public class EntryDto - { - public string CreatedAt { get; init; } - - [JsonIgnore] - public DateTime StartDateTime { get; init; } - - /// - /// ISO 8601 string of the UTC date the time entry started. - /// - public string Start => StartDateTime.ToString("yyyy-MM-ddTHH:mm:ssZ"); - - [JsonIgnore] - public DateTime StopDateTime { get; init; } - - /// - /// ISO 8601 string of the UTC date the time entry stopped. - /// - public string Stop => StopDateTime.ToString("yyyy-MM-ddTHH:mm:ssZ"); - - /// - /// Total amount of minutes elapsed from start to stop on this time entry. - /// - public double Minutes => StopDateTime.Subtract(StartDateTime).TotalMinutes; - - public string Description { get; init; } - - /// - /// Archive spesific category for this time entry. - /// - public CategoryDto Category { get; init; } - - /// - /// Archive spesific list of labels for this time entry. - /// - public List Labels { get; init; } - } - - /// - /// Time entry category as it is written to the user archive. - /// - public class CategoryDto - { - public string Name { get; init; } - public string Color { get; init; } - } - - /// - /// Time entry label as it is written to the user archive. - /// - public class LabelDto - { - public string Name { get; init; } - public string Color { get; init; } - } - - - /// - /// Represents the user who this archive's data is based on. - /// - public class UserDto - { - /// - public UserDto(User user) { - Username = user.Username; - CreatedAt = user.CreatedAt; - } - - /// - /// UTC date this user was created. - /// - public DateTime CreatedAt { get; } - - public string Username { get; } - } - - /// - /// Represents the meta object which contains metdata for this archive. - /// - public class MetaDto - { - /// - /// ISO 8601 UTC date string for when this archive was created. - /// - public string GeneratedAt { get; init; } - - /// - /// Amount of entries in the archive. - /// - public int EntryCount { get; set; } - } -} diff --git a/server/src/Data/Enums/TimeEntryQueryDuration.cs b/server/src/Data/Enums/TimeEntryQueryDuration.cs deleted file mode 100644 index af70ca6..0000000 --- a/server/src/Data/Enums/TimeEntryQueryDuration.cs +++ /dev/null @@ -1,37 +0,0 @@ -namespace IOL.GreatOffice.Api.Data.Enums; - -/// -/// Specify a duration filter for time entry queries. -/// -public enum TimeEntryQueryDuration -{ - /// - /// Only query entries created today. - /// - TODAY = 0, - - /// - /// Only query entries created this week. - /// - THIS_WEEK = 1, - - /// - /// Only query entries created this month. - /// - THIS_MONTH = 2, - - /// - /// Only query entries created this year. - /// - THIS_YEAR = 3, - - /// - /// Only query entries created at a spesific date. - /// - SPECIFIC_DATE = 4, - - /// - /// Only query entries created between two dates. - /// - DATE_RANGE = 5, -} diff --git a/server/src/Data/Exceptions/ForgotPasswordRequestNotFoundException.cs b/server/src/Data/Exceptions/ForgotPasswordRequestNotFoundException.cs deleted file mode 100644 index 02474b4..0000000 --- a/server/src/Data/Exceptions/ForgotPasswordRequestNotFoundException.cs +++ /dev/null @@ -1,21 +0,0 @@ -namespace IOL.GreatOffice.Api.Data.Exceptions; - -[Serializable] -public class ForgotPasswordRequestNotFoundException : Exception -{ - // - // For guidelines regarding the creation of new exception types, see - // http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpgenref/html/cpconerrorraisinghandlingguidelines.asp - // and - // http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dncscol/html/csharp07192001.asp - // - - public ForgotPasswordRequestNotFoundException() { } - public ForgotPasswordRequestNotFoundException(string message) : base(message) { } - public ForgotPasswordRequestNotFoundException(string message, Exception inner) : base(message, inner) { } - - protected ForgotPasswordRequestNotFoundException( - SerializationInfo info, - StreamingContext context - ) : base(info, context) { } -} diff --git a/server/src/Data/Exceptions/UserNotFoundException.cs b/server/src/Data/Exceptions/UserNotFoundException.cs deleted file mode 100644 index 06b57a9..0000000 --- a/server/src/Data/Exceptions/UserNotFoundException.cs +++ /dev/null @@ -1,19 +0,0 @@ -namespace IOL.GreatOffice.Api.Data.Exceptions; - -[Serializable] -public class UserNotFoundException : Exception -{ - // For guidelines regarding the creation of new exception types, see - // http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpgenref/html/cpconerrorraisinghandlingguidelines.asp - // and - // http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dncscol/html/csharp07192001.asp - - public UserNotFoundException() { } - public UserNotFoundException(string message) : base(message) { } - public UserNotFoundException(string message, Exception inner) : base(message, inner) { } - - protected UserNotFoundException( - SerializationInfo info, - StreamingContext context - ) : base(info, context) { } -} diff --git a/server/src/Data/Models/ApiSpecDocument.cs b/server/src/Data/Models/ApiSpecDocument.cs deleted file mode 100644 index 1c7d936..0000000 --- a/server/src/Data/Models/ApiSpecDocument.cs +++ /dev/null @@ -1,9 +0,0 @@ -namespace IOL.GreatOffice.Api.Data.Models; - -public class ApiSpecDocument -{ - public string VersionName { get; set; } - public string SwaggerPath { get; set; } - public ApiVersion Version { get; set; } - public OpenApiInfo OpenApiInfo { get; set; } -} diff --git a/server/src/Data/Models/AppPath.cs b/server/src/Data/Models/AppPath.cs deleted file mode 100644 index e47e48c..0000000 --- a/server/src/Data/Models/AppPath.cs +++ /dev/null @@ -1,23 +0,0 @@ -namespace IOL.GreatOffice.Api.Data.Models; - -public sealed record AppPath -{ - public string HostPath { get; init; } - public string WebPath { get; init; } - - public string GetHostPathForFilename(string filename, string fallback = "") { - if (filename.IsNullOrWhiteSpace()) { - return fallback; - } - - return Path.Combine(HostPath, filename); - } - - public string GetWebPathForFilename(string filename, string fallback = "") { - if (filename.IsNullOrWhiteSpace()) { - return fallback; - } - - return Path.Combine(WebPath, filename); - } -} diff --git a/server/src/Data/Models/LoggedInUserModel.cs b/server/src/Data/Models/LoggedInUserModel.cs deleted file mode 100644 index d802b77..0000000 --- a/server/src/Data/Models/LoggedInUserModel.cs +++ /dev/null @@ -1,7 +0,0 @@ -namespace IOL.GreatOffice.Api.Data.Models; - -public class LoggedInUserModel -{ - public Guid Id { get; set; } - public string Username { get; set; } -} diff --git a/server/src/Data/Results/ErrorResult.cs b/server/src/Data/Results/ErrorResult.cs deleted file mode 100644 index fd2fd6a..0000000 --- a/server/src/Data/Results/ErrorResult.cs +++ /dev/null @@ -1,12 +0,0 @@ -namespace IOL.GreatOffice.Api.Data.Results; - -public class ErrorResult -{ - public ErrorResult(string title = default, string text = default) { - Title = title; - Text = text; - } - - public string Title { get; set; } - public string Text { get; set; } -} diff --git a/server/src/Data/Static/AppClaims.cs b/server/src/Data/Static/AppClaims.cs deleted file mode 100644 index 8b6d3a8..0000000 --- a/server/src/Data/Static/AppClaims.cs +++ /dev/null @@ -1,8 +0,0 @@ -namespace IOL.GreatOffice.Api.Data.Static; - -public static class AppClaims -{ - public const string USER_ID = "user_id"; - public const string NAME = "name"; - public const string GITHUB_ACCESS_TOKEN = ""; -} diff --git a/server/src/Data/Static/AppConfiguration.cs b/server/src/Data/Static/AppConfiguration.cs deleted file mode 100644 index 4ee7a8e..0000000 --- a/server/src/Data/Static/AppConfiguration.cs +++ /dev/null @@ -1,58 +0,0 @@ -using System.Security.Cryptography.X509Certificates; - -namespace IOL.GreatOffice.Api.Data.Static; - -public class AppConfiguration -{ - public string DB_HOST { get; set; } - public string DB_PORT { get; set; } - public string DB_USER { get; set; } - public string DB_PASSWORD { get; set; } - public string DB_NAME { get; set; } - public string QUARTZ_DB_HOST { get; set; } - public string QUARTZ_DB_PORT { get; set; } - public string QUARTZ_DB_USER { get; set; } - public string QUARTZ_DB_PASSWORD { get; set; } - public string QUARTZ_DB_NAME { get; set; } - public string SEQ_API_KEY { get; set; } - public string SEQ_API_URL { get; set; } - public string SMTP_HOST { get; set; } - public string SMTP_PORT { get; set; } - public string SMTP_USER { get; set; } - public string SMTP_PASSWORD { get; set; } - public string EMAIL_FROM_ADDRESS { get; set; } - public string EMAIL_FROM_DISPLAY_NAME { get; set; } - public string PORTAL_URL { get; set; } - public string GITHUB_CLIENT_ID { get; set; } - public string GITHUB_CLIENT_SECRET { get; set; } - public string APP_AES_KEY { get; set; } - public string APP_CERT { get; set; } - - public X509Certificate2 CERT1() => new (Convert.FromBase64String(APP_CERT)); - - public object GetPublicVersion() { - return new { - DB_HOST, - DB_PORT, - DB_USER, - DB_PASSWORD = DB_PASSWORD.Obfuscate() ?? "", - QUARTZ_DB_HOST, - QUARTZ_DB_PORT, - QUARTZ_DB_USER, - QUARTZ_DB_PASSWORD = QUARTZ_DB_PASSWORD.Obfuscate() ?? "", - SEQ_API_KEY = SEQ_API_KEY.Obfuscate() ?? "", - SEQ_API_URL, - SMTP_HOST, - SMTP_PORT, - SMTP_USER = SMTP_USER.Obfuscate() ?? "", - SMTP_PASSWORD = SMTP_PASSWORD.Obfuscate() ?? "", - EMAIL_FROM_ADDRESS, - EMAIL_FROM_DISPLAY_NAME, - PORTAL_URL, - GITHUB_CLIENT_ID = GITHUB_CLIENT_ID.Obfuscate() ?? "", - GITHUB_CLIENT_SECRET = GITHUB_CLIENT_SECRET.Obfuscate() ?? "", - APP_AES_KEY = APP_AES_KEY.Obfuscate() ?? "", - CERT1 = CERT1().PublicKey.Oid.FriendlyName - }; - } -} diff --git a/server/src/Data/Static/AppConstants.cs b/server/src/Data/Static/AppConstants.cs deleted file mode 100644 index 461317b..0000000 --- a/server/src/Data/Static/AppConstants.cs +++ /dev/null @@ -1,12 +0,0 @@ -namespace IOL.GreatOffice.Api.Data.Static; - -public static class AppConstants -{ - public const string API_NAME = "Great Office API"; - public const string BASIC_AUTH_SCHEME = "BasicAuthenticationScheme"; - public const string TOKEN_ALLOW_READ = "TOKEN_ALLOW_READ"; - public const string TOKEN_ALLOW_CREATE = "TOKEN_ALLOW_CREATE"; - public const string TOKEN_ALLOW_UPDATE = "TOKEN_ALLOW_UPDATE"; - public const string TOKEN_ALLOW_DELETE = "TOKEN_ALLOW_DELETE"; - public const string VAULT_CACHE_KEY = "VAULT_CACHE_KEY"; -} diff --git a/server/src/Data/Static/AppDateTime.cs b/server/src/Data/Static/AppDateTime.cs deleted file mode 100644 index 880d2a8..0000000 --- a/server/src/Data/Static/AppDateTime.cs +++ /dev/null @@ -1,16 +0,0 @@ -namespace IOL.GreatOffice.Api.Data.Static; - -public static class AppDateTime -{ - private static DateTime? dateTime; - - public static DateTime UtcNow => dateTime ?? DateTime.UtcNow; - - public static void Set(DateTime setDateTime) { - dateTime = setDateTime; - } - - public static void Reset() { - dateTime = null; - } -} diff --git a/server/src/Data/Static/AppEnvironmentVariables.cs b/server/src/Data/Static/AppEnvironmentVariables.cs deleted file mode 100644 index c3f821d..0000000 --- a/server/src/Data/Static/AppEnvironmentVariables.cs +++ /dev/null @@ -1,21 +0,0 @@ -namespace IOL.GreatOffice.Api.Data.Static; - -public static class AppEnvironmentVariables -{ - /// - /// An access token that can be used to access the Hashicorp Vault instance that is available at VAULT_URL - /// - public const string VAULT_TOKEN = "VAULT_TOKEN"; - /// - /// An url pointing to the Hashicorp Vault instance the app should use - /// - public const string VAULT_URL = "VAULT_URL"; - /// - /// The duration of which to keep a local cached version of the configuration - /// - public const string VAULT_CACHE_TTL = "VAULT_CACHE_TTL"; - /// - /// The vault key name for the main configuration json object, described by - /// - public const string MAIN_CONFIG_SHEET = "MAIN_CONFIG_SHEET"; -} diff --git a/server/src/Data/Static/AppHeaders.cs b/server/src/Data/Static/AppHeaders.cs deleted file mode 100644 index 7912418..0000000 --- a/server/src/Data/Static/AppHeaders.cs +++ /dev/null @@ -1,7 +0,0 @@ -namespace IOL.GreatOffice.Api.Data.Static; - -public static class AppHeaders -{ - public const string BROWSER_TIME_ZONE = "X-TimeZone"; - public const string VAULT_TOKEN = "X-Vault-Token"; -} diff --git a/server/src/Data/Static/AppPaths.cs b/server/src/Data/Static/AppPaths.cs deleted file mode 100644 index a24f5af..0000000 --- a/server/src/Data/Static/AppPaths.cs +++ /dev/null @@ -1,17 +0,0 @@ - -namespace IOL.GreatOffice.Api.Data.Static; - -public static class AppPaths -{ - public static AppPath AppData => new() { - HostPath = Path.Combine(Directory.GetCurrentDirectory(), "AppData") - }; - - public static AppPath DataProtectionKeys => new() { - HostPath = Path.Combine(Directory.GetCurrentDirectory(), "AppData", "dp-keys") - }; - - public static AppPath Frontend => new() { - HostPath = Path.Combine(Directory.GetCurrentDirectory(), "Frontend") - }; -} diff --git a/server/src/Data/Static/JsonSettings.cs b/server/src/Data/Static/JsonSettings.cs deleted file mode 100644 index a163c11..0000000 --- a/server/src/Data/Static/JsonSettings.cs +++ /dev/null @@ -1,11 +0,0 @@ -namespace IOL.GreatOffice.Api.Data.Static; - -public static class JsonSettings -{ - public static Action Default { get; } = options => { - options.JsonSerializerOptions.ReferenceHandler = ReferenceHandler.IgnoreCycles; - options.JsonSerializerOptions.PropertyNameCaseInsensitive = true; - options.JsonSerializerOptions.NumberHandling = JsonNumberHandling.AllowReadingFromString; - options.JsonSerializerOptions.PropertyNamingPolicy = JsonNamingPolicy.CamelCase; - }; -} -- cgit v1.3