public async Task <OperationResultResponse <bool> > ExecuteAsync(Guid roleLocalizationId, JsonPatchDocument <EditRoleLocalizationRequest> request) { if (!await _accessValidator.IsAdminAsync()) { return(_responseCreator.CreateFailureResponse <bool>(HttpStatusCode.Forbidden)); } if (!_validator.ValidateCustom(request, out List <string> errors)) { return(_responseCreator.CreateFailureResponse <bool>( HttpStatusCode.BadRequest, errors)); } Operation <EditRoleLocalizationRequest> isActiveOperation = request.Operations.FirstOrDefault( o => o.path.EndsWith(nameof(EditRoleLocalizationRequest.IsActive), StringComparison.OrdinalIgnoreCase)); Operation <EditRoleLocalizationRequest> nameOperation = request.Operations.FirstOrDefault( o => o.path.EndsWith(nameof(EditRoleLocalizationRequest.Name), StringComparison.OrdinalIgnoreCase)); DbRoleLocalization roleLocalization = await _roleLocalizationRepository.GetAsync(roleLocalizationId); if (isActiveOperation != default) { bool isActive = bool.Parse(isActiveOperation.value.ToString().Trim()); if (roleLocalization.IsActive == isActive) { return(_responseCreator.CreateFailureResponse <bool>( HttpStatusCode.BadRequest, new List <string> { "Role localization already has this status." })); } if (isActive && await _roleLocalizationRepository.DoesLocaleExistAsync(roleLocalization.RoleId, roleLocalization.Locale)) { return(_responseCreator.CreateFailureResponse <bool>( HttpStatusCode.BadRequest, new List <string> { "Role must have only one localization per locale." })); } } if (nameOperation != default && await _roleLocalizationRepository.DoesNameExistAsync(roleLocalization.Locale, nameOperation.value.ToString().Trim())) { return(_responseCreator.CreateFailureResponse <bool>( HttpStatusCode.BadRequest, new List <string> { "Name already exists." })); } return(new OperationResultResponse <bool>() { Body = await _roleLocalizationRepository.EditRoleLocalizationAsync(roleLocalizationId, _roleLocalizationMapper.Map(request)) }); }
public async Task <Guid?> CreateAsync(DbRoleLocalization roleLocalization) { if (roleLocalization is null) { return(null); } _provider.RolesLocalizations.Add(roleLocalization); await _provider.SaveAsync(); return(roleLocalization.Id); }
public RoleLocalizationInfo Map(DbRoleLocalization dbRoleLocalization) { if (dbRoleLocalization == null) { return(null); } return(new RoleLocalizationInfo { Id = dbRoleLocalization.Id, Locale = dbRoleLocalization.Locale, Name = dbRoleLocalization.Name, Description = dbRoleLocalization.Description, IsActive = dbRoleLocalization.IsActive, RoleId = dbRoleLocalization.RoleId }); }
public async Task <bool> EditRoleLocalizationAsync(Guid roleLocalizationId, JsonPatchDocument <DbRoleLocalization> patch) { if (patch == null) { return(false); } DbRoleLocalization roleLocalization = await _provider.RolesLocalizations.FirstOrDefaultAsync(x => x.Id == roleLocalizationId); if (roleLocalization == default) { return(false); } patch.ApplyTo(roleLocalization); roleLocalization.ModifiedBy = _httpContextAccessor.HttpContext.GetUserId(); roleLocalization.ModifiedAtUtc = DateTime.UtcNow; await _provider.SaveAsync(); return(true); }