Пример #1
0
 protected IActionResult HandleErrors <TData>(Response <TData> response, Func <TData, IActionResult> onSuccess)
     where TData : class
 {
     return(response.Match(
                error => error switch
     {
         AuthenticationError ae => Unauthorized(ae),
         AuthorizationError _ => Forbid(),
         ObjectAlreadyExistsError oaee => Conflict(oaee),
         ObjectNotFoundError onfe => NotFound(onfe),
         UserError ue => UnprocessableEntity(ue),
         ValidationError ve => BadRequest(ve),
         DomainError de => UnprocessableEntity(new { de.ExceptionType.Name, error.Message }),
         _ => StatusCode(StatusCodes.Status500InternalServerError, error)
     },
        public async Task <Response <Guid> > Handle(CreateVoter request, CancellationToken cancellationToken)
        {
            var exists = await _voters.Exists(request.Pesel);

            if (exists)
            {
                return(ObjectAlreadyExistsError.CreateFor <Voter>());
            }

            var voter = Voter.Create(request.Pesel);

            await _domainEvents
            .CollectFrom(voter)
            .PublishCollected(cancellationToken);

            return(voter.Id);
        }
Пример #3
0
        protected virtual ActionResult CreateObjectExistsConflictErrorResult <TEntity, TModel>(ObjectAlreadyExistsError <TEntity> objectExistsError)
        {
            var model   = _mapper.Map <TEntity, TModel>(objectExistsError.ExistingObject);
            var message = new ConcurrencyErrorModel <TModel>()
            {
                Message       = objectExistsError.Message,
                CurrentObject = model
            };

            return(new ConflictObjectResult(message));
        }