public DbRole Map(CreateRoleRequest request)
        {
            if (request == null)
            {
                return(null);
            }

            var roleId       = Guid.NewGuid();
            var createdAtUtc = DateTime.UtcNow;
            var creatorId    = _httpContextAccessor.HttpContext.GetUserId();

            return(new DbRole
            {
                Id = roleId,
                CreatedBy = creatorId,
                CreatedAtUtc = createdAtUtc,
                IsActive = true,
                RoleLocalizations = request.Localizations.Select(rl => _localizationMapper.Map(rl, roleId)).ToList(),
                RoleRights = request.Rights?.Select(x => new DbRoleRight
                {
                    Id = Guid.NewGuid(),
                    RoleId = roleId,
                    CreatedBy = creatorId,
                    CreatedAtUtc = createdAtUtc,
                    RightId = x,
                }).ToList()
            });
        }
        public async Task <OperationResultResponse <Guid?> > ExecuteAsync(CreateRoleLocalizationRequest request)
        {
            if (!await _accessValidator.IsAdminAsync())
            {
                return(_responseCreator.CreateFailureResponse <Guid?>(HttpStatusCode.Forbidden));
            }

            if (!request.RoleId.HasValue)
            {
                return(_responseCreator.CreateFailureResponse <Guid?>(
                           HttpStatusCode.BadRequest,
                           new List <string> {
                    "RoleId can't be empty."
                }));
            }

            ValidationResult validationResult = await _requestValidator.ValidateAsync(request);

            if (!validationResult.IsValid)
            {
                return(_responseCreator.CreateFailureResponse <Guid?>(
                           HttpStatusCode.BadRequest,
                           validationResult.Errors.Select(validationFailure => validationFailure.ErrorMessage).ToList()));
            }

            OperationResultResponse <Guid?> response = new();

            response.Body = await _roleLocalizationRepository.CreateAsync(_roleLocalizationMapper.Map(request));

            response.Status = response.Body != null
        ? OperationResultStatusType.FullSuccess
        : OperationResultStatusType.Failed;

            _httpContextAccessor.HttpContext.Response.StatusCode = response.Body != null
        ? (int)HttpStatusCode.Created
        : (int)HttpStatusCode.BadRequest;

            return(response);
        }