Вытащил солюшен на уровень выше, чтобы прощё было дотнетить
Some checks failed
continuous-integration/drone/push Build is failing
Some checks failed
continuous-integration/drone/push Build is failing
This commit is contained in:
@@ -0,0 +1,18 @@
|
||||
using AutoMapper;
|
||||
using BlazorWebAssemblyVisaApiClient.Validation.Applicants.Models;
|
||||
using VisaApiClient;
|
||||
using PlaceOfWorkModel = BlazorWebAssemblyVisaApiClient.Validation.Applicants.Models.PlaceOfWorkModel;
|
||||
|
||||
namespace BlazorWebAssemblyVisaApiClient.Infrastructure.AutoMapper.Profiles;
|
||||
|
||||
public class RegisterApplicantRequestProfile : Profile
|
||||
{
|
||||
public RegisterApplicantRequestProfile()
|
||||
{
|
||||
CreateMap<RegisterApplicantRequestModel, RegisterApplicantRequest>(MemberList.Destination);
|
||||
|
||||
CreateMap<RegisterRequestModel, RegisterRequest>(MemberList.Destination);
|
||||
|
||||
CreateMap<PlaceOfWorkModel, VisaApiClient.PlaceOfWorkModel>(MemberList.Destination);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
using AutoMapper;
|
||||
using BlazorWebAssemblyVisaApiClient.Validation.VisaApplications.Models;
|
||||
using VisaApiClient;
|
||||
|
||||
namespace BlazorWebAssemblyVisaApiClient.Infrastructure.AutoMapper.Profiles;
|
||||
|
||||
public class VisaApplicationCreateRequestProfile : Profile
|
||||
{
|
||||
public VisaApplicationCreateRequestProfile()
|
||||
{
|
||||
CreateMap<VisaApplicationCreateRequestModel, VisaApplicationCreateRequest>(MemberList.Destination);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace BlazorWebAssemblyVisaApiClient.Infrastructure.Helpers;
|
||||
|
||||
public static class EnumExtensions
|
||||
{
|
||||
public static string GetDisplayName(this Enum value)
|
||||
{
|
||||
var enumMembers = value.GetType().GetMembers();
|
||||
var member = enumMembers.First(info => info.Name == value.ToString());
|
||||
var displayAttribute = (DisplayAttribute?)member
|
||||
.GetCustomAttributes(typeof(DisplayAttribute), false)
|
||||
.FirstOrDefault();
|
||||
var displayName = displayAttribute?.Name ?? value.ToString();
|
||||
return displayName;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
using System.Text;
|
||||
using FluentValidation.Results;
|
||||
|
||||
namespace BlazorWebAssemblyVisaApiClient.Infrastructure.Helpers;
|
||||
|
||||
public static class ValidationResultExtensions
|
||||
{
|
||||
public static string ToErrorsString(this ValidationResult validationResult)
|
||||
=> ErrorsToString(validationResult.Errors.Select(e => e.ErrorMessage));
|
||||
|
||||
private static string ErrorsToString(IEnumerable<string> errors)
|
||||
{
|
||||
var stringBuilder = new StringBuilder();
|
||||
foreach (var error in errors)
|
||||
{
|
||||
stringBuilder.Append($"{error}<br/>");
|
||||
}
|
||||
|
||||
return stringBuilder.ToString();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
namespace BlazorWebAssemblyVisaApiClient.Infrastructure.Services.DateTimeProvider;
|
||||
|
||||
public class DateTimeProvider : IDateTimeProvider
|
||||
{
|
||||
public DateTime Now() => DateTime.Now;
|
||||
|
||||
public string FormattedNow() => Now().ToString("yyyy-MM-dd");
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
namespace BlazorWebAssemblyVisaApiClient.Infrastructure.Services.DateTimeProvider;
|
||||
|
||||
public interface IDateTimeProvider
|
||||
{
|
||||
DateTime Now();
|
||||
|
||||
string FormattedNow();
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
using BlazorWebAssemblyVisaApiClient.Common.Exceptions;
|
||||
|
||||
namespace BlazorWebAssemblyVisaApiClient.Infrastructure.Services.UserDataProvider.Exceptions;
|
||||
|
||||
public class UnknownRoleException() : BlazorClientException("Unknown user role");
|
||||
@@ -0,0 +1,14 @@
|
||||
using VisaApiClient;
|
||||
|
||||
namespace BlazorWebAssemblyVisaApiClient.Infrastructure.Services.UserDataProvider;
|
||||
|
||||
public interface IUserDataProvider
|
||||
{
|
||||
public string? CurrentRole { get; }
|
||||
|
||||
public Action? OnRoleChanged { get; set; }
|
||||
|
||||
public Task<ApplicantModel> GetApplicant();
|
||||
|
||||
public void UpdateCurrentRole();
|
||||
}
|
||||
@@ -0,0 +1,52 @@
|
||||
using System.IdentityModel.Tokens.Jwt;
|
||||
using System.Security.Claims;
|
||||
using BlazorWebAssemblyVisaApiClient.Infrastructure.Services.UserDataProvider.Exceptions;
|
||||
using VisaApiClient;
|
||||
|
||||
namespace BlazorWebAssemblyVisaApiClient.Infrastructure.Services.UserDataProvider;
|
||||
|
||||
public class UserDataProvider(IClient client) : IUserDataProvider
|
||||
{
|
||||
private readonly static JwtSecurityTokenHandler tokenHandler = new();
|
||||
|
||||
public string? CurrentRole { get; private set; }
|
||||
|
||||
public Action? OnRoleChanged { get; set; }
|
||||
|
||||
public async Task<ApplicantModel> GetApplicant()
|
||||
{
|
||||
return await client.GetApplicantAsync();
|
||||
}
|
||||
|
||||
public void UpdateCurrentRole()
|
||||
{
|
||||
var role = CurrentRole;
|
||||
|
||||
if (client.AuthToken is null)
|
||||
{
|
||||
if (CurrentRole is not null)
|
||||
{
|
||||
role = null;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
var token = tokenHandler.ReadJwtToken(client.AuthToken.Token);
|
||||
role = token.Claims.FirstOrDefault(claim => claim.Type == ClaimTypes.Role)?.Value;
|
||||
|
||||
switch (role)
|
||||
{
|
||||
case Constants.ApplicantRole: break;
|
||||
case Constants.ApprovingAuthorityRole: break;
|
||||
case Constants.AdminRole: break;
|
||||
default: throw new UnknownRoleException();
|
||||
}
|
||||
}
|
||||
|
||||
if (CurrentRole != role)
|
||||
{
|
||||
CurrentRole = role;
|
||||
OnRoleChanged?.Invoke();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user