Added models for presentation layer with data annotations
This commit is contained in:
		| @@ -1,5 +1,7 @@ | ||||
| using ApplicationLayer.InfrastructureServicesInterfaces; | ||||
| using ApplicationLayer.Services.AuthServices.Common; | ||||
| using ApplicationLayer.Services.AuthServices.NeededServices; | ||||
| using ApplicationLayer.Services.Users.Exceptions; | ||||
| using ApplicationLayer.Services.Users.Requests; | ||||
| using Domains.Users; | ||||
|  | ||||
| @@ -7,27 +9,59 @@ namespace ApplicationLayer.Services.Users; | ||||
|  | ||||
| public class UsersService(IUsersRepository users, IUnitOfWork unitOfWork) : IUsersService | ||||
| { | ||||
|     async Task<List<User>> IUsersService.GetAuthoritiesAccountsAsync(CancellationToken cancellationToken) | ||||
|     async Task<List<User>> IUsersService.GetAuthoritiesAccountsAsync(CancellationToken cancellationToken) => | ||||
|         await users.GetAllOfRoleAsync(Role.ApprovingAuthority, cancellationToken); | ||||
|  | ||||
|     async Task IUsersService.ChangeAuthorityAuthDataAsync(ChangeUserAuthDataRequest request, CancellationToken cancellationToken) | ||||
|     { | ||||
|             return await users.GetAllOfRoleAsync(Role.ApprovingAuthority, cancellationToken); | ||||
|         } | ||||
|         var user = await users.GetByIdAsync(request.UserId, cancellationToken); | ||||
|  | ||||
|     async Task IUsersService.ChangeAccountAuthDataAsync(ChangeUserAuthDataRequest request, CancellationToken cancellationToken) | ||||
|         ValidateRole(user, Role.ApprovingAuthority); | ||||
|  | ||||
|         await ChangeAccountAuthDataAsync(user, request.NewAuthData, cancellationToken); | ||||
|     } | ||||
|  | ||||
|     async Task IUsersService.RemoveAuthorityAccount(Guid userId, CancellationToken cancellationToken) | ||||
|     { | ||||
|             var user = await users.GetByIdAsync(request.UserId, cancellationToken); | ||||
|         var user = await users.GetByIdAsync(userId, cancellationToken); | ||||
|  | ||||
|             user.Email = request.NewAuthData.Email; | ||||
|             user.Password = request.NewAuthData.Password; | ||||
|             await users.UpdateAsync(user, cancellationToken); | ||||
|         ValidateRole(user, Role.ApprovingAuthority); | ||||
|  | ||||
|             await unitOfWork.SaveAsync(cancellationToken); | ||||
|         } | ||||
|         await RemoveUserAccount(user, cancellationToken); | ||||
|     } | ||||
|  | ||||
|     async Task IUsersService.RemoveUserAccount(Guid userId, CancellationToken cancellationToken) | ||||
|     /// Updates user account auth data | ||||
|     /// <param name="user">User to remove</param> | ||||
|     /// <param name="authData">New auth data</param> | ||||
|     /// <param name="cancellationToken">Cancellation token</param> | ||||
|     private async Task ChangeAccountAuthDataAsync(User user, AuthData authData, CancellationToken cancellationToken) | ||||
|     { | ||||
|             var user = await users.GetByIdAsync(userId, cancellationToken); | ||||
|             users.Remove(user); | ||||
|         user.Email = authData.Email; | ||||
|         user.Password = authData.Password; | ||||
|         await users.UpdateAsync(user, cancellationToken); | ||||
|  | ||||
|             await unitOfWork.SaveAsync(cancellationToken); | ||||
|         await unitOfWork.SaveAsync(cancellationToken); | ||||
|     } | ||||
|  | ||||
|     /// Removes user account from DB | ||||
|     /// <param name="user">User to remove</param> | ||||
|     /// <param name="cancellationToken">Cancellation token</param> | ||||
|     private async Task RemoveUserAccount(User user, CancellationToken cancellationToken) | ||||
|     { | ||||
|         users.Remove(user); | ||||
|  | ||||
|         await unitOfWork.SaveAsync(cancellationToken); | ||||
|     } | ||||
|  | ||||
|     /// Checks if role of user equals expected | ||||
|     /// <param name="user">User to check</param> | ||||
|     /// <param name="expectedRole">Expected role</param> | ||||
|     /// <exception cref="WrongRoleException">Role is not expected</exception> | ||||
|     private static void ValidateRole(User user, Role expectedRole) | ||||
|     { | ||||
|         if (user.Role != expectedRole) | ||||
|         { | ||||
|             throw new WrongRoleException(user.Id); | ||||
|         } | ||||
| } | ||||
|     } | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user