public async Task <Result <Exception, Unit> > CreateSolicitationAsync(ItemSolicitationHistoric item) { _context.SolicitationsHistoric.Add(item); await _context.SaveChangesAsync(); return(Unit.Successful); }
public async Task <Result <Exception, Unit> > Handle(Command request, CancellationToken cancellationToken) { var agentCallback = await _agentRepository.GetByIdAsync(request.AgentId); if (agentCallback.IsFailure) { return(agentCallback.Failure); } if (agentCallback.Success.CompanyId != request.CompanyId) { return(new NotAllowedException("Usuário não pode salvar serviços no agent informado, a empresa do usuario e do agent não são iguais")); } var userCallback = await _userRepository.GetByIdAsync(request.UserId); if (userCallback.IsFailure) { return(userCallback.Failure); } if (userCallback.Success.CompanyId != agentCallback.Success.CompanyId) { return(new NotAllowedException("Usuário não pode salvar serviços no agent informado, a empresa do usuario e do agent não são iguais")); } var item = await _repository.GetByIdAsync(request.AgentId, request.ItemId); if (item.IsFailure) { return(item.Failure); } ItemSolicitationHistoric itemSolicitation = Mapper.Map <Command, ItemSolicitationHistoric>(request); itemSolicitation.ItemId = item.Success.Id; var callback = await _repository.CreateSolicitationAsync(itemSolicitation); if (callback.IsFailure) { return(callback.Failure); } request.ItemId = item.Success.Id; _rabbitMQ.RouteMessage(channel: request.AgentId.ToString(), request); return(Unit.Successful); }