sync public allowlist from private myoffice

This commit is contained in:
myoffice-sync
2026-08-05 10:36:17 +00:00
parent 6f7fd61ee9
commit 874796c860
720 changed files with 2841 additions and 69563 deletions
@@ -1,41 +0,0 @@
namespace MyOffice.Web.Models.Account;
using AutoMapper;
using MyOffice.Services.Account.Domain;
using MyOffice.Services.Identity;
using User;
public class AccessRightsViewModel
{
public UserViewModel? User { get; set; } = null!;
public bool AllowRead { get; set; }
public bool AllowWrite { get; set; }
public bool AllowManage { get; set; }
public bool AllowDelete { get; set; }
public bool IsOwner { get; set; }
}
public class AccessRightsViewModelProfile : Profile
{
public AccessRightsViewModelProfile()
{
CreateMap<AccountAccessDto, AccessRightsViewModel>()
.AfterMap<AccessRightsViewModelMappingAction>()
;
}
}
public class AccessRightsViewModelMappingAction : IMappingAction<AccountAccessDto, AccessRightsViewModel>
{
private readonly IContextProvider _contextProvider;
public AccessRightsViewModelMappingAction(IContextProvider contextProvider)
{
_contextProvider = contextProvider;
}
public void Process(AccountAccessDto source, AccessRightsViewModel destination, ResolutionContext context)
{
}
}
@@ -1,21 +0,0 @@
namespace MyOffice.Web.Models.Account;
using AutoMapper;
using MyOffice.Services.Account.Domain;
public class AccountAccessInviteViewModel: IResponseModel
{
public string? Id { get; set; }
public string? Account { get; set; }
public bool? AllowWrite { get; set; }
}
public class AccountAccessInviteViewModelProfile: Profile
{
public AccountAccessInviteViewModelProfile()
{
CreateMap<AccountAccessInviteDto, AccountAccessInviteViewModel>()
.ForMember(x => x.AllowWrite, o => o.MapFrom(x => x.IsAllowWrite))
;
}
}
@@ -1,24 +0,0 @@
using AutoMapper;
using MyOffice.Services.Account.Domain;
namespace MyOffice.Web.Models.Account;
public class AccountAccessViewModel
{
public class AccountAccessItemViewModel
{
public string UserId { get; set; } = null!;
public bool AllowWrite { get; set; }
}
public string? Email { get; set; }
public bool AllowWrite { get; set; }
public List<AccountAccessItemViewModel> Accesses { get; set; } = null!;
}
public class AccountAccessItemViewModelProfile : Profile
{
public AccountAccessItemViewModelProfile()
{
}
}
@@ -1,30 +0,0 @@
namespace MyOffice.Web.Models.Account;
using System.ComponentModel.DataAnnotations;
using AutoMapper;
using MyOffice.Services.Account.Domain;
public class AccountCategoryViewModel: IResponseModel
{
public string? Id { get; set; }
[Required]
public string? Name { get; set; }
public bool? AllowDelete { get; set; }
}
public class AccountCategoryViewModelProfile: Profile
{
public AccountCategoryViewModelProfile()
{
CreateMap<AccountAccountCategoryDto, AccountCategoryViewModel>()
.ForMember(x => x.Id, o => o.MapFrom(x => x.CategoryId))
.ForMember(x => x.Name, o => o.MapFrom(x => x.Category!.Name))
;
CreateMap<AccountCategoryDto, AccountCategoryViewModel>()
.ForMember(x => x.Id, o => o.MapFrom(x => x.Id))
.ForMember(x => x.Name, o => o.MapFrom(x => x.Name))
;
}
}
@@ -1,20 +0,0 @@
namespace MyOffice.Web.Models.Account;
using AutoMapper;
using MyOffice.Services.Account.Domain;
public class AccountDetailedViewModel: BaseViewModel
{
public AccountViewModel Account { get; set; } = null!;
public decimal Rest { get; set; }
}
public class AccountDetailedViewModelProfile: Profile
{
public AccountDetailedViewModelProfile()
{
CreateMap<AccountDetailedDto, AccountDetailedViewModel>()
.ForMember(x => x.Account, o => o.MapFrom(x => x.Account))
;
}
}
@@ -1,14 +0,0 @@
namespace MyOffice.Web.Models.Account;
using System.ComponentModel.DataAnnotations;
public class AccountEditRequestModel
{
[Required]
public string Name { get; set; } = null!;
[Required]
public string CurrencyId { get; set; } = null!;
public string? CategoryId { get; set; }
public string? UserId { get; set; }
public string? Type { get; set; }
}
@@ -1,6 +0,0 @@
namespace MyOffice.Web.Models.Account;
public class AccountInviteAcceptRequest
{
public string Name { get; set; } = null!;
}
@@ -1,61 +0,0 @@
namespace MyOffice.Web.Models.Account;
using AutoMapper;
using MyOffice.Services.Account.Domain;
using MyOffice.Services.Identity;
using Newtonsoft.Json;
using System.ComponentModel.DataAnnotations;
public class AccountViewModel: IResponseModel
{
public string? Id { get; set; }
[Required]
public string Name { get; set; } = null!;
public string Type { get; set; } = null!;
[Required]
public string CurrencyId { get; set; } = null!;
public string? CurrencyName { get; set; }
public List<AccountCategoryViewModel>? Categories { get; set; }
[Required]
public string CategoryId { get; set; } = null!;
#region Permissions
public List<AccessRightsViewModel>? AccessRights { get; set; }
public bool AllowRead { get; set; }
public bool AllowWrite { get; set; }
public bool AllowDelete { get; set; }
public bool AllowManage { get; set; }
#endregion Permissions
}
public class AccountViewModelProfile : Profile
{
public AccountViewModelProfile()
{
CreateMap<AccountDto, AccountViewModel>()
.ForMember(x => x.CurrencyId, o => o.MapFrom(x => x.CurrencyGlobalId))
.ForMember(x => x.CurrencyName, o => o.MapFrom(x => x.Currency!.Name))
.AfterMap<AccountViewModelMappingAction>()
;
}
}
public class AccountViewModelMappingAction : IMappingAction<AccountDto, AccountViewModel>
{
private readonly IContextProvider _contextProvider;
public AccountViewModelMappingAction(IContextProvider contextProvider)
{
_contextProvider = contextProvider;
}
public void Process(AccountDto source, AccountViewModel destination, ResolutionContext context)
{
}
}
@@ -1,48 +0,0 @@
namespace MyOffice.Web.Models.Account;
using AutoMapper;
using MyOffice.Services.Currency.Domain;
using Currency;
using Item;
using Motion;
using Services.Account.Domain;
using User;
using MyOffice.Services.Identity;
/*public class CustomResolver : IValueResolver<AccountAccessDto, AccessRightsViewModel, bool>
{
private readonly ILogger<CustomResolver> _logger;
private readonly IContextProvider _contextProvider;
public CustomResolver(
ILogger<CustomResolver> logger,
IContextProvider contextProvider
)
{
_logger = logger;
_contextProvider = contextProvider;
}
public bool Resolve(AccountAccessDto source, AccessRightsViewModel destination, bool member, ResolutionContext context)
{
return source.OwnerId == _contextProvider.UserId;
}
}*/
/*public class PublicationSystemResolver : IMemberValueResolver<object, object, string, bool>
{
private readonly IContextProvider _contextProvider;
public PublicationSystemResolver(
IContextProvider contextProvider
)
{
this._contextProvider = contextProvider;
}
public bool Resolve(object source, object destination, string sourceMember, bool destMember, ResolutionContext context)
{
return true;
}
}*/
@@ -1,12 +0,0 @@
namespace MyOffice.Web.Models.Account
{
using System.ComponentModel.DataAnnotations;
public class MotionsGetRequest
{
[Required]
public DateTime From { get; set; }
[Required]
public DateTime To { get; set; }
}
}
-7
View File
@@ -1,7 +0,0 @@
namespace MyOffice.Web.Models.Auth;
public class LoginModel
{
public string? UserName { get; set; }
public string? Password { get; set; }
}
-18
View File
@@ -1,18 +0,0 @@
namespace MyOffice.Web.Models.Auth;
using System.ComponentModel.DataAnnotations;
public class RegisterModel
{
[Required]
[EmailAddress]
public string UserName { get; set; } = null!;
[Required]
[MinLength(8)]
public string Password { get; set; } = null!;
[Required]
[Compare(nameof(Password))]
public string ConfirmPassword { get; set; } = null!;
}
-6
View File
@@ -1,6 +0,0 @@
namespace MyOffice.Web.Models;
public class BaseViewModel : IResponseModel
{
}
@@ -1,19 +0,0 @@
namespace MyOffice.Web.Models.Currency
{
public class CurrencyAddModel
{
public string Id { get; set; } = null!;
public string Name { get; set; } = null!;
public string ShortName { get; set; } = null!;
public int Quantity { get; set; }
public decimal Rate { get; set; }
public DateTime RateDate { get; set; }
}
public class CurrencyRateModel
{
public int Quantity { get; set; }
public decimal Rate { get; set; }
public DateTime RateDate { get; set; }
}
}
@@ -1,11 +0,0 @@
namespace MyOffice.Web.Models.Currency;
public class CurrencyEditModel
{
public string Name { get; set; } = null!;
public string ShortName { get; set; } = null!;
public int Quantity { get; set; }
public decimal Rate { get; set; }
public DateTime RateDate { get; set; }
public bool IsPrimary { get; set; }
}
@@ -1,22 +0,0 @@
/// <see cref="MyOffice.Data.Models.Currencies.CurrencyGlobal"/>
/// <see cref="MyOffice.Services.Currency.Domain.CurrencyGlobalDto"/>
namespace MyOffice.Web.Models.Currency;
using AutoMapper;
using MyOffice.Services.Currency.Domain;
public class CurrencyGlobalViewModel: IResponseModel
{
public string Id { get; set; } = null!;
public string Name { get; set; } = null!;
public int Quantity { get; set; }
public string Symbol { get; set; } = null!;
}
public class CurrencyGlobalViewModelProfile : Profile
{
public CurrencyGlobalViewModelProfile()
{
CreateMap<CurrencyGlobalDto, CurrencyGlobalViewModel>();
}
}
@@ -1,20 +0,0 @@
namespace MyOffice.Web.Models.Currency;
using AutoMapper;
using MyOffice.Services.Currency.Domain;
public class CurrencyRateViewModel: BaseViewModel
{
public string Currency { get; set; } = null!;
public DateTime DateTime { get; set; }
public int Quantity { get; set; }
public decimal Rate { get; set; }
}
public class CurrencyRateViewModelProfile: Profile
{
public CurrencyRateViewModelProfile()
{
CreateMap<CurrencyRateDto, CurrencyRateViewModel>();
}
}
@@ -1,36 +0,0 @@
namespace MyOffice.Web.Models.Currency;
using AutoMapper;
using MyOffice.Services.Currency.Domain;
public class CurrencyViewModel: BaseViewModel
{
public string Id { get; set; } = null!;
public string Code { get; set; } = null!;
public string Symbol { get; set; } = null!;
public string Name { get; set; } = null!;
public string ShortName { get; set; } = null!;
public decimal? Rate { get; set; }
public int? Quantity { get; set; }
public DateTime? RateDate { get; set; }
public bool IsPrimary { get; set; }
}
public class CurrencyViewModelProfile: Profile
{
public CurrencyViewModelProfile()
{
CreateMap<CurrencyDto, CurrencyViewModel>();
CreateMap<CurrencyWithRateDto, CurrencyViewModel>()
.ForMember(x => x.Id, o => o.MapFrom(x => x.Currency.Id))
.ForMember(x => x.Code, o => o.MapFrom(x => x.Currency.CurrencyGlobalId))
.ForMember(x => x.Name, o => o.MapFrom(x => x.Currency.Name))
.ForMember(x => x.ShortName, o => o.MapFrom(x => x.Currency.ShortName))
.ForMember(x => x.Rate, o => o.MapFrom(x => x.Rate == null ? (decimal?)null : x.Rate.Rate))
.ForMember(x => x.IsPrimary, o => o.MapFrom(x => x.Currency.IsPrimary))
.ForMember(x => x.Quantity, o => o.MapFrom(x => x.Rate == null ? (int?)null : x.Rate.Quantity))
.ForMember(x => x.RateDate, o => o.MapFrom(x => x.Rate == null ? (DateTime?)null : x.Rate.DateTime))
;
}
}
@@ -1,17 +0,0 @@
namespace MyOffice.Web.Models.Dashboard;
using AutoMapper;
using MyOffice.Services.Dashboard.Domain;
public class DashboardIncomeDataViewModel : DashboardIncomeData, IResponseModel
{
}
public class DashboardIncomeDataViewModelProfile : Profile
{
public DashboardIncomeDataViewModelProfile()
{
CreateMap<DashboardIncomeData, DashboardIncomeDataViewModel>();
}
}
@@ -1,17 +0,0 @@
namespace MyOffice.Web.Models.Dashboard;
using AutoMapper;
using MyOffice.Services.Dashboard.Domain;
public class DashboardViewModel : DashboardData, IResponseModel
{
}
public class DashboardViewModelProfile : Profile
{
public DashboardViewModelProfile()
{
CreateMap<DashboardData, DashboardViewModel>();
}
}
-5
View File
@@ -1,5 +0,0 @@
namespace MyOffice.Web.Models;
public interface IRequestModel
{
}
-5
View File
@@ -1,5 +0,0 @@
namespace MyOffice.Web.Models;
public interface IResponseModel
{
}
@@ -1,45 +0,0 @@
namespace MyOffice.Web.Models.Item;
using System.ComponentModel.DataAnnotations;
using AutoMapper;
using Services.Account.Domain;
public class ItemCategoryViewModel: IResponseModel
{
public string? Id { get; set; }
[Required]
public string Name { get; set; } = null!;
public bool AllowDelete { get; set; }
public int SortOrder { get; set; }
public bool Internal { get; set; }
}
//TODO: REMOVE
public static class ItemCategoryViewModelExtensions
{
public static ItemCategoryDto FromModel(this ItemCategoryViewModel input)
{
if (input == null)
throw new ArgumentNullException(nameof(input));
return new ItemCategoryDto
{
Name = input.Name,
IsInternal = input.Internal,
};
}
}
public class ItemCategoryViewModelProfile: Profile
{
public ItemCategoryViewModelProfile()
{
CreateMap<ItemCategoryDto, ItemCategoryViewModel>()
.ForMember(x => x.Internal, o => o.MapFrom(x => x.IsInternal))
.ForMember(x => x.AllowDelete, o => o.MapFrom(x => !x.Items.Any() && x.Id != x.UserId))
.ForMember(x => x.SortOrder, o => o.MapFrom(x => x.Id == x.UserId ? 1 : 0))
;
}
}
@@ -1,7 +0,0 @@
namespace MyOffice.Web.Models.Item;
public class ItemChangeCategoryModel
{
public string category { get; set; } = null!;
public List<string> Items { get; set; } = null!;
}
@@ -1,7 +0,0 @@
namespace MyOffice.Web.Models.Item;
public class ItemEditModel
{
public string Id { get; set; } = null!;
public string Category { get; set; } = null!;
}
-29
View File
@@ -1,29 +0,0 @@
namespace MyOffice.Web.Models.Item;
using System.ComponentModel.DataAnnotations;
using AutoMapper;
using MyOffice.Services.Account.Domain;
public class ItemViewModel : BaseViewModel
{
public string? Id { get; set; }
[Required]
public string? Name { get; set; }
public bool AllowDelete { get; set; }
public string CategoryId { get; set; } = null!;
public string? Category { get; set; } = null!;
public string? AccountId { get; set; }
}
public class ItemViewModelProfile: Profile
{
public ItemViewModelProfile()
{
CreateMap<ItemDto, ItemViewModel>()
.ForMember(x => x.Category, o => o.MapFrom(x => x.Category!.Name))
;
}
}
@@ -1,18 +0,0 @@
namespace MyOffice.Web.Models.Motion;
using AutoMapper;
using Data.Models.Accounts;
using Services.Account.Domain;
public class AccountControllerProfile : Profile
{
public AccountControllerProfile()
{
CreateMap<Motion, MotionViewModel>()
.ForMember(x => x.Date, o => o.MapFrom(x => x.DateTime))
.ForMember(x => x.Item, o => o.MapFrom(x => x.Item.ItemGlobal.Name))
.ForMember(x => x.Plus, o => o.MapFrom(x => x.AmountPlus))
.ForMember(x => x.Minus, o => o.MapFrom(x => x.AmountMinus))
;
}
}
@@ -1,24 +0,0 @@
namespace MyOffice.Web.Models.Motion;
using AutoMapper;
using MyOffice.Services.Account.Domain;
public class MotionRequest
{
public DateTime Date { get; set; }
public string Item { get; set; } = null!;
public string? ItemId { get; set; } = null!;
public string? AccountId { get; set; } = null!;
public string? Description { get; set; }
public decimal? Plus { get; set; }
public decimal? Minus { get; set; }
public decimal? AmountBalancing { get; set; }
}
public class MotionRequestProfile : Profile
{
public MotionRequestProfile()
{
CreateMap<MotionRequest, MotionAddUpdate>();
}
}
@@ -1,27 +0,0 @@
namespace MyOffice.Web.Models.Motion;
using AutoMapper;
using MyOffice.Services.Account.Domain;
public class MotionViewModel : BaseViewModel
{
public string Id { get; set; } = null!;
public DateTime Date { get; set; }
public string AccountId { get; set; } = null!;
public string Item { get; set; } = null!;
public string? Description { get; set; }
public decimal Plus { get; set; }
public decimal Minus { get; set; }
}
public class MotionViewModelProfile : Profile
{
public MotionViewModelProfile()
{
CreateMap<MotionDto, MotionViewModel>()
.ForMember(x => x.Item, x => x.MapFrom(m => m.Item.Name))
.ForMember(x => x.Minus, x => x.MapFrom(m => m.AmountMinus))
.ForMember(x => x.Plus, x => x.MapFrom(m => m.AmountPlus))
;
}
}
-19
View File
@@ -1,19 +0,0 @@
namespace MyOffice.Web.Models.User;
using AutoMapper;
using MyOffice.Services.Account.Domain;
public class UserViewModel
{
public string Id { get; set; } = null!;
public string UserName { get; set; } = null!;
public string Email { get; set; } = null!;
}
public class UserViewModelProfile: Profile
{
public UserViewModelProfile()
{
CreateMap<UserDto, UserViewModel>();
}
}
-12
View File
@@ -1,12 +0,0 @@
namespace MyOffice.Web.Models;
using AutoMapper;
using Core.Extensions;
public class ViewModelProfile : Profile
{
public ViewModelProfile()
{
CreateMap<Guid, string>().ConvertUsing(x => x.ToShort());
}
}