示例#1
0
        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);
            }