UserService.cs 3.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. using Quadarax.Application.QLiberace.Base.Repositories;
  2. using Quadarax.Foundation.Core.Business;
  3. using Microsoft.Extensions.Logging;
  4. using Quadarax.Application.QLiberace.Base.Dtos;
  5. using Quadarax.Foundation.Core.Data.Interface.Domain;
  6. using Quadarax.Foundation.Core.Data.Interface.Entity.Dto;
  7. using Quadarax.Application.QLiberace.Common;
  8. using Quadarax.Application.QLiberace.Base.Dtos.Validators;
  9. using Quadarax.Application.QLiberace.Base.Entities;
  10. using Quadarax.Application.QLiberace.Base.Mapper;
  11. using Quadarax.Foundation.Core.Value;
  12. namespace Quadarax.Application.QLiberace.Base.Services
  13. {
  14. public class UserService: AbstractRepositoryService<RepoUser>
  15. {
  16. #region *** Constructor ***
  17. public UserService(RepoUser repository, IContext currentContext, ILoggerFactory logger) : base(repository, currentContext, logger)
  18. {
  19. }
  20. #endregion
  21. #region *** Public Operations ***
  22. public ResultValueDto<UserRDto?> CreateUser(UserWDto user)
  23. {
  24. if (user == null) throw new ArgumentNullException(nameof(user));
  25. return TryCatchBlock(() =>
  26. {
  27. ValidateWDto(user);
  28. var exists = Repository.GetByLoginName(user.LoginName,true);
  29. if (exists != null) throw
  30. ExceptionFactory.CreateException(ExceptionLibrary.ExceptionsCodes.UserAlreadyExistsCode, user.LoginName);
  31. var userDao = Repository.New();
  32. user.CopyToDto(userDao);
  33. return new ResultValueDto<UserRDto?>(userDao.Map<User, UserRDto>());
  34. });
  35. }
  36. public ResultDto DeleteUser(long userId)
  37. {
  38. return TryCatchBlock(() =>
  39. {
  40. var exists = Repository.Get(userId);
  41. if (exists != null) throw
  42. ExceptionFactory.CreateException(ExceptionLibrary.ExceptionsCodes.UserNotFoundCode, "id", userId.ToString());
  43. Repository.Remove(userId);
  44. return new ResultPlain();
  45. });
  46. }
  47. public ResultValueDto<UserRDto?> GetUser(string loginName)
  48. {
  49. if (string.IsNullOrEmpty(loginName)) throw new ArgumentNullException(nameof(loginName));
  50. return TryCatchBlock(() =>
  51. {
  52. var result = Repository.GetByLoginName(loginName, true);
  53. if (result == null) throw
  54. ExceptionFactory.CreateException(ExceptionLibrary.ExceptionsCodes.UserNotFoundCode, "loginName", loginName);
  55. return new ResultValueDto<UserRDto?>(result.Map<User, UserRDto>());
  56. });
  57. }
  58. public ResultDto Lock(string loginName, bool isLocked)
  59. {
  60. if (string.IsNullOrEmpty(loginName)) throw new ArgumentNullException(nameof(loginName));
  61. return TryCatchBlock(() =>
  62. {
  63. var result = Repository.GetByLoginName(loginName, true);
  64. if (result == null) throw
  65. ExceptionFactory.CreateException(ExceptionLibrary.ExceptionsCodes.UserNotFoundCode, "loginName", loginName);
  66. result.IsLocked = isLocked;
  67. Repository.Set(result);
  68. return new ResultPlain();
  69. });
  70. }
  71. #endregion
  72. #region *** Private Operations ***
  73. private void ValidateWDto(UserWDto user)
  74. {
  75. if (user == null) throw new ArgumentNullException(nameof(user));
  76. var validator = new UserValidator();
  77. validator.Validate(user, new ValidatorContext());
  78. if (!validator.IsSuccess) throw ExceptionFactory.CreateException(ExceptionLibrary.ExceptionsCodes.ValidationErrorsCode, validator.ToAggregateException());
  79. }
  80. #endregion
  81. }
  82. }