UserService.cs 3.8 KB

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