public async Task Pedido_QuandoExistiremHistoricosPedidosEmUmDrone_DeveRetornarDoBancoDados()
        {
            //Arrange
            var usuario = Usuario.Criar("test", "test@email", 0, 0, UsuarioRole.Cliente);

            usuario.AdicionarPassword("password");
            usuario.AdicionarRefreshToken("refreshToken", DateTime.Now.AddDays(1));
            await _context.AddAsync(usuario);

            var drone = Drone.Criar(12000, 5, 40, 100, DroneStatus.EmEntrega);
            await _context.AddAsync(drone);

            var pedido = Pedido.Criar(123, 1000, usuario);

            pedido.AssociarDrone(drone);
            await _context.AddAsync(pedido);

            var historicoPedido = HistoricoPedido.Criar(drone.Id, pedido.Id);
            await _context.AddAsync(historicoPedido);

            await _context.SaveChangesAsync();


            //Act
            var historicoDrone = await _pedidoRepository.ObterHistoricoPedidosDoDroneAsync(drone.Id);

            //Assert
            Assert.True(historicoDrone.Count(x => x.DroneId == drone.Id) == 1);
        }
示例#2
0
 public HistoricoPedido_View(HistoricoPedido d)
 {
     No                  = d.No;
     OrderDate           = d.OrderDate;
     ExpectedReceiptDate = d.ExpectedReceiptDate ?? DateTimeOffset.MinValue;
     Centro              = d.Centro;
     Zona                = d.Zona;
     BuyFromVendorName   = d.BuyFromVendorName ?? "";
     BuyFromVendorName2  = d.BuyFromVendorName2 ?? "";
     BuyFromAddress      = d.BuyFromAddress ?? "";
     BuyFromAddress2     = d.BuyFromAddress2 ?? "";
     BuyFromPostCode     = d.BuyFromPostCode ?? "";
     BuyFromCounty       = d.BuyFromCounty ?? "";
     BuyFromCity         = d.BuyFromCity ?? "";
     BuyFromVendorNo     = d.BuyFromVendorNo ?? "";
     BuyFromContact      = d.BuyFromContact ?? "";
     Amount              = d.Amount;
     VendorOrderNo       = d.VendorOrderNo ?? "";
     PostingDate         = d.PostingDate ?? DateTimeOffset.MinValue;
     VendorShipmentNo    = d.VendorShipmentNo ?? "";
     Estado              = d.Estado;
     OrigenPedido        = d.OrigenPedido ?? "";
     AmountIncludingVAT  = d.AmountIncludingVAT ?? 0;
     ReadingDate         = d.ReadingDate ?? DateTimeOffset.MinValue;
 }
        public async Task <Guid> Handle(AlterarSituacaoPedidoCommand request, CancellationToken cancellationToken)
        {
            var historicoPedido = new HistoricoPedido();

            var pedido = _pedidoRepository.GetEntityById(request.IDPedido);

            if (pedido == null)
            {
                request.AddNotification("Pedido", $"Pedido({request.IDPedido}) não encontrado no banco de dados.");
            }
            else
            {
                historicoPedido = new HistoricoPedido(request.Situacao, pedido.Id);
            }

            if (historicoPedido.Invalid || request.Invalid)
            {
                historicoPedido.AddNotifications(request.Notifications);

                await _mediator.Publish(new DomainNotification
                {
                    Erros = historicoPedido.Notifications
                }, cancellationToken);

                return(await Task.FromResult(Guid.Empty));
            }

            _historicoPedidoRepository.Add(historicoPedido);

            return(await Task.FromResult(historicoPedido.Id));
        }
示例#4
0
 public async Task CriarHistoricoPedidoAsync(IEnumerable <Pedido> pedidos)
 {
     foreach (var pedido in pedidos)
     {
         await _context.HistoricoPedidos.InsertOneAsync(HistoricoPedido.Criar(pedido.DroneId.GetValueOrDefault(), pedido.Id));
     }
 }
        public void HistoricoDoPedidoDevePossuirSituacaoValida()
        {
            var enumInvalido = System.Enum.Parse <EnumSituacaoPedido>("14");

            var historicoPedido = new HistoricoPedido(enumInvalido, Guid.NewGuid());

            Assert.True(historicoPedido.Invalid);
        }
 public HistoricoPedidoModelView(HistoricoPedido historicoPedido)
 {
     StatusPedido = historicoPedido.StatusPedido;
     Descricao    = historicoPedido.Descricao;
     //UsuarioLogado = new UsuarioModelView(historicoPedido.UsuarioLogado);
     CodigoRetornoTransacao = historicoPedido.CodigoRetornoTransacao;
     //Pedido = new PedidoModelView(historicoPedido.Pedido);
 }
示例#7
0
        public void PedidoHistorico_MarcarEntregaRealizada_DeveAdicionarDataEntrega()
        {
            // Arrange
            var historico = HistoricoPedido.Criar(Guid.NewGuid(), Guid.NewGuid());

            //Act
            historico.MarcarEntregaCompleta();

            // Assert
            Assert.NotNull(historico.DataEntrega);
        }
        public ResultAndError <HistoricoPedido> CloseOrder(Document order)
        {
            ResultAndError <HistoricoPedido> result = new ResultAndError <HistoricoPedido>();

            try
            {
                HistoricoPedido oHistorico = GetHistoricoFromOrder(order);
                return(result = Update(oHistorico, true));
            }
            catch (Exception e)
            {
                return(result.AddError(e, HttpStatusCode.InternalServerError));
            }
        }
示例#9
0
        public void PedidoHistorico_CriarHistorico_DeveRetornarHistorico()
        {
            // Arrange
            var pedidoId = Guid.NewGuid();
            var droneId  = Guid.NewGuid();

            //Act
            var historico = HistoricoPedido.Criar(droneId, pedidoId);

            // Assert
            Assert.Equal(pedidoId, historico.PedidoId);
            Assert.Equal(droneId, historico.DroneId);
            Assert.Null(historico.DataEntrega);
        }
        public ResultAndError <HistoricoPedido> Add(HistoricoPedido c)
        {
            ResultAndError <HistoricoPedido> result = new ResultAndError <HistoricoPedido>();

            try
            {
                db.HistoricoPedidos.Add(c);
                db.SaveChanges();
                return(result.AddResult(c));
            }
            catch (Exception e)
            {
                return(result.AddError(e, HttpStatusCode.InternalServerError));
            }
        }
        public bool DeleteMulti(IEnumerable <int> HistoricoPedidos)
        {
            List <HistoricoPedido> oAlbaran = new List <HistoricoPedido>();

            foreach (int HistoricoPedidosNo in HistoricoPedidos)
            {
                HistoricoPedido oHistoricoPedidos = Get(HistoricoPedidosNo);
                if (oHistoricoPedidos != null)
                {
                    oAlbaran.Add(oHistoricoPedidos);
                }
            }
            db.HistoricoPedidos.RemoveRange(oAlbaran);
            db.SaveChanges();
            return(true);
        }
 public bool UpdateMulti(IEnumerable <HistoricoPedido> oHistoricoPedidos, bool insertIfNoExists = false)
 {
     foreach (HistoricoPedido albaran in oHistoricoPedidos)
     {
         HistoricoPedido old = Get(albaran.No);
         if (old == null && insertIfNoExists)
         {
             Add(albaran);
         }
         else
         {
             db.Entry(old).CurrentValues.SetValues(albaran);
         }
     }
     db.SaveChanges();
     return(true);
 }
        public ResultAndError <bool> Delete(int id)
        {
            ResultAndError <bool> result = new ResultAndError <bool>();

            try
            {
                HistoricoPedido HistoricoPedidos = Get(id);
                if (HistoricoPedidos == null)
                {
                    return(result.AddError("No se encontro la tarifa con el id " + id));
                }
                db.HistoricoPedidos.Remove(HistoricoPedidos);
                db.SaveChanges();
                return(result.AddResult(true));
            }
            catch (Exception e)
            {
                return(result.AddError(e, HttpStatusCode.InternalServerError));
            }
        }
        public ResultAndError <HistoricoPedido> Update(HistoricoPedido cr, bool insertIfNoExists = false)
        {
            ResultAndError <HistoricoPedido> result = new ResultAndError <HistoricoPedido>();

            try
            {
                HistoricoPedido old = Get(cr.No);
                if (old == null && insertIfNoExists)
                {
                    return(Add(cr));
                }
                db.Entry(old).CurrentValues.SetValues(cr);
                db.SaveChanges();
                return(result.AddResult(cr));
            }
            catch (Exception e)
            {
                return(result.AddError(e, HttpStatusCode.InternalServerError));
            }
        }
        private async Task <IEnumerable <Drone> > ObterDronesParaViagem()
        {
            var dronesProntos = await _unitOfWork.Drones.ObterDronesParaEntregaAsync();

            var pedidos = dronesProntos.SelectMany(x => x.Pedidos).Where(x => x.Status == PedidoStatus.EmEntrega);

            foreach (var drone in dronesProntos)
            {
                drone.AtualizarStatus(DroneStatus.EmEntrega);
            }

            foreach (var pedido in pedidos)
            {
                pedido.CriarHistorico(HistoricoPedido.Criar(pedido.DroneId.GetValueOrDefault(), pedido.Id));
            }


            await _unitOfWork.SaveAsync();

            return(dronesProntos);
        }
        private async Task <IEnumerable <Drone> > ObterDronesParaViagem()
        {
            var dronesProntos = await _unitOfWork.Drones.ObterDronesParaEntregaAsync();

            foreach (var drone in dronesProntos)
            {
                drone.AtualizarStatus(DroneStatus.EmEntrega);
                foreach (var pedido in drone.Pedidos.Where(x => x.Status == PedidoStatus.EmEntrega))
                {
                    var hist = HistoricoPedido.Criar(drone.Id, pedido.Id);
                    drone.CriarHistorico(hist);
                }
            }

            if (dronesProntos.Any())
            {
                await _unitOfWork.Drones.AdicionarHistoricoAsync(dronesProntos.SelectMany(x => x.HistoricoPedidos));

                await _unitOfWork.SaveAsync();
            }

            return(dronesProntos);
        }
        public async Task <Guid> Handle(CriarPedidoCommand request, CancellationToken cancellationToken)
        {
            var pedido = new Pedido();

            var garcom = _garcomRepository.GetEntityById(request.IDGarcom);

            if (garcom == null)
            {
                request.AddNotification("Garcom", "Garcom não encontrado no banco de dados.");
            }

            var cliente = _clienteRepository.GetEntityById(request.IDCliente);

            if (cliente == null)
            {
                request.AddNotification("Cliente", "Cliente não encontrado no banco de dados.");
            }

            var comanda = _comandaRepository.GetEntityById(request.IDComanda);

            if (comanda == null)
            {
                request.AddNotification("Comanda", "Comanda não encontrado no banco de dados.");
            }
            else
            {
                var ultimoHistoricoPedidoComanda = await _mediator.Send(new ObterUltimoHistoricoPedidoComandaQuery(comanda.Id));

                if (ultimoHistoricoPedidoComanda != null)
                {
                    if (!SituacaoPedido.SituacoesPermiteAberturaComanda.Any(situacao => situacao == ultimoHistoricoPedidoComanda.Situacao))
                    {
                        request.AddNotification("Comanda", $"Comanda não pode ser aberta devido ao ultimo pedido estar com a situação({ultimoHistoricoPedidoComanda.Situacao}).");
                    }
                }
            }

            pedido = new Pedido(garcom, comanda, cliente);

            request.Produtos.ToList().ForEach(produtoPedido => pedido.AdicionarProduto(produtoPedido));

            if (pedido.Invalid || request.Invalid)
            {
                pedido.AddNotifications(request.Notifications);

                await _mediator.Publish(new DomainNotification
                {
                    Erros = pedido.Notifications
                }, cancellationToken);

                return(await Task.FromResult(Guid.Empty));
            }

            var historicoPedido = new HistoricoPedido(Enums.EnumSituacaoPedido.Aberto, pedido.Id);

            pedido.AdicionarHistorico(historicoPedido);

            _pedidoRepository.Add(pedido);

            return(await Task.FromResult(pedido.Id));
        }
 public IActionResult UpdHistoricoPedido([FromBody] HistoricoPedido HistoricoPedido, bool insertIfNoExists = false)
 {
     return(Ok(hBS.Update(HistoricoPedido, insertIfNoExists)));
 }