public PedidoHATEOASManager(string urlBase, PedidoEstadoAtualDaAplicacao estadoAtualAplicacao, PedidoDTO pedidoDTO = null, PedidoItemDTO pedidoItemDTO = null)
 {
     _urlBase       = urlBase;
     _estadoAtual   = estadoAtualAplicacao;
     _pedidoDTO     = pedidoDTO;
     _pedidoItemDTO = pedidoItemDTO;
 }
        public static PedidoItemDTO GerarLinks(this PedidoItemDTO pedidoItemDTO, string urlBase, PedidoEstadoAtualDaAplicacao estadoAtual)
        {
            var pedidoHATEOAS = new PedidoHATEOASManager(urlBase, estadoAtual, pedidoItemDTO: pedidoItemDTO);

            pedidoItemDTO.Links = pedidoHATEOAS.ObterLinks();

            return(pedidoItemDTO);
        }
示例#3
0
        public PedidoItemDTO Insert(PedidoItemDTO item)
        {
            Pedido_Itens entity = _repository.Insert(Mapper.Map <Pedido_Itens>(item));

            item.Id = entity.Id;

            return(item);
        }
示例#4
0
        public void Update(PedidoItemDTO item)
        {
            bool result = _repository.Update(Mapper.Map <Pedido_Itens>(item));

            if (!result)
            {
                throw new Exception("Nao foi possivel atualizar este Item.");
            }
        }
示例#5
0
        public IHttpActionResult Post([FromBody] PedidoItemDTO pedidoItem)
        {
            try
            {
                pedidoItem = _business.Insert(pedidoItem);
            }
            catch (Exception ex)
            {
                return(InternalServerError(ex));
            }

            return(Ok(pedidoItem));
        }
示例#6
0
        public IHttpActionResult Put([FromBody] PedidoItemDTO pedidoItem)
        {
            try
            {
                _business.Update(pedidoItem);
            }
            catch (Exception ex)
            {
                return(InternalServerError(ex));
            }

            return(Ok());
        }
示例#7
0
        public IHttpActionResult Get(int id)
        {
            PedidoItemDTO item = new PedidoItemDTO();

            try
            {
                item = _business.GetById(id);
            }
            catch (Exception ex)
            {
                return(InternalServerError(ex));
            }

            return(Ok(item));
        }
        public int SalvarItem(PedidoDTO pedido, List <ProdutoDTO> produtos)
        {
            PedidoDatabase pedidoDatabase = new PedidoDatabase();
            int            idPedido       = pedidoDatabase.Salvar(pedido);

            PedidoItemBusiness itemBusiness = new PedidoItemBusiness();

            foreach (ProdutoDTO item in produtos)
            {
                PedidoItemDTO itemDto = new PedidoItemDTO();
                itemDto.id_pedido  = idPedido;
                itemDto.id_produto = item.id_produto;

                itemBusiness.Salvar(itemDto);
            }

            return(idPedido);
        }
示例#9
0
        private PedidoDTO MapearPedido(dynamic result)
        {
            var pedido = new PedidoDTO
            {
                Codigo           = result[0].CODIGO,
                Data             = result[0].DATACADASTRO,
                Status           = result[0].PEDIDOSTATUS,
                ValorTotal       = result[0].VALORTOTAL,
                Desconto         = result[0].DESCONTO,
                VoucherUtilizado = result[0].VOUCHERUTILIZADO,

                PedidoItems = new List <PedidoItemDTO>(),
                Endereco    = new EnderecoDTO
                {
                    Logradouro  = result[0].LOGRADOURO,
                    Bairro      = result[0].BAIRRO,
                    Cep         = result[0].CEP,
                    Cidade      = result[0].CIDADE,
                    Complemento = result[0].COMPLEMENTO,
                    Estado      = result[0].ESTADO,
                    Numero      = result[0].NUMERO
                }
            };

            foreach (var item in result)
            {
                var pedidoItem = new PedidoItemDTO
                {
                    Nome       = item.PRODUTONOME,
                    Valor      = item.VALORUNITARIO,
                    Quantidade = item.QUANTIDADE,
                    Imagem     = item.PRODUTOIMAGEM
                };

                pedido.PedidoItems.Add(pedidoItem);
            }

            return(pedido);
        }
示例#10
0
        private PedidoDTO MapearPedido(dynamic result)
        {
            var pedido = new PedidoDTO
            {
                Codigo           = result[0].Codigo,
                Status           = result[0].PedidoStatus,
                ValorTotal       = result[0].ValorTotal,
                Desconto         = result[0].Desconto,
                VoucherUtilizado = result[0].VoucherUtilizado,

                PedidoItems = new List <PedidoItemDTO>(),
                Endereco    = new EnderecoDTO
                {
                    Logradouro  = result[0].Logradouro,
                    Bairro      = result[0].Bairro,
                    Cep         = result[0].Cep,
                    Cidade      = result[0].Cidade,
                    Complemento = result[0].Complemento,
                    Estado      = result[0].Estado,
                    Numero      = result[0].Numero
                }
            };

            foreach (var item in result)
            {
                var pedidoItem = new PedidoItemDTO
                {
                    Nome       = item.ProdutoNome,
                    Valor      = item.ValorUnitario,
                    Quantidade = item.Quantidade,
                    Imagem     = item.ProdutoImagem
                };

                pedido.PedidoItems.Add(pedidoItem);
            }

            return(pedido);
        }
示例#11
0
        public async Task <Pedido> PedidoProveedor(int idPedido)
        {
            ServicioGenerico   servicio      = new ServicioGenerico();
            ServiciosProductos servProductos = new ServiciosProductos();
            string             urlMayorista  = servicio.ParametroObtenerValor("URL_MAYORISTA");
            string             myIdCliente   = servicio.ParametroObtenerValor("TRADING_ID_CLIENTE");

            if (string.IsNullOrEmpty(urlMayorista))
            {
                throw new ApplicationException("No está vinculado ningún proveedor mayorista");
            }

            if (string.IsNullOrEmpty(myIdCliente))
            {
                throw new ApplicationException("No tiene asingdo IdCliente en el proveedor mayorista");
            }

            RepositoryGenerico <Pedido> repository = new RepositoryGenerico <Pedido>();
            Pedido pedido = repository.Obtener(idPedido);

            if (pedido == null)
            {
                throw new ApplicationException("No existe pedido");
            }

            //PEdido se se enviara al proveedor
            PedidoDTO pedidoProveedor = new PedidoDTO();


            pedido.Items = this.Listar <PedidoItem>("IdPedido", idPedido).ToList <PedidoItem>();
            //agregamos los productos de nuestro cliente en al app del mayorista
            pedido.Items
            .FindAll(item => item.Producto.StockPropio == false)
            .ForEach(delegate(PedidoItem item)
            {
                int cantidadProducto = item.Cantidad;

                PedidoItemDTO itemProveedor  = new PedidoItemDTO();
                itemProveedor.Id             = -1;
                itemProveedor.CodigoProducto = item.Producto.Codigo;

                if (item.ItemProductos.Count == 0)
                {
                    itemProveedor.Cantidad      = item.Cantidad;
                    itemProveedor.Observaciones = string.Format("Cant: {0} - Obs: {1}", item.Cantidad, item.Observaciones);
                }
                else
                {
                    item.ItemProductos.ToList <PedidoItemProducto>()
                    .ForEach(delegate(PedidoItemProducto pip)
                    {
                        PedidoItemProductoDTO pipProv = new PedidoItemProductoDTO()
                        {
                            Cantidad = pip.Cantidad,
                            Medida   = pip.Medida
                        };
                        itemProveedor.ItemProductos.Add(pipProv);
                    });
                }
                pedidoProveedor.Items.Add(itemProveedor);
            });

            pedidoProveedor.IdCliente = myIdCliente.ConvertirInt();
            //enviamos el id y numero del pedido para mantener trazabilidad
            pedidoProveedor.IdPedidoMinorista     = pedido.Id;
            pedidoProveedor.NumeroPedidoMinorista = pedido.Numero;

            Pedido nuevoPedidoGenerado = new Pedido();

            using (var httpClient = new HttpClient())
            {
                httpClient.BaseAddress = new Uri(urlMayorista);
                httpClient.DefaultRequestHeaders.Accept.Clear();
                httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

                HttpContent httpContent = new StringContent(JsonConvert.SerializeObject(pedidoProveedor), Encoding.UTF8);
                httpContent.Headers.ContentType = new MediaTypeHeaderValue("application/json");

                HttpResponseMessage Res = await httpClient.PostAsync("api/Pedido/Minorista", httpContent);

                if (Res.IsSuccessStatusCode)
                {
                    var pedidoResponse = Res.Content.ReadAsStringAsync().Result;
                    nuevoPedidoGenerado = JsonConvert.DeserializeObject <Pedido>(pedidoResponse);
                }
                else
                {
                    throw new ApplicationException("Error");
                }
            }


            if (nuevoPedidoGenerado.VerificarStock)
            {
                List <PedidoItem> itemsVerificar = nuevoPedidoGenerado.Items.ToList <PedidoItem>();
                pedido.Items.ToList <PedidoItem>()
                .ForEach(delegate(PedidoItem pit)
                {
                    PedidoItem piVerificar = itemsVerificar.Find(x => x.Producto.Codigo == pit.Producto.Codigo);
                    if (piVerificar != null)
                    {
                        List <PedidoItemProducto> pitNuevoPedido = piVerificar.ItemProductos.ToList <PedidoItemProducto>();

                        if (pit.ItemProductos.Count > 0)
                        {
                            pit.ItemProductos.ToList <PedidoItemProducto>()
                            .ForEach(delegate(PedidoItemProducto pip)
                            {
                                pip.StockDisponible = pitNuevoPedido.Find(x => x.Medida.Descripcion == pip.Medida.Descripcion).StockDisponible;
                            });
                        }
                    }
                });
            }
            /**  ATENCION!!!  SI EL PEDIDO VIENE CON VerificarStock  TRUE => NO SE DEBE MODIFICAR EL ESTADO NI LOS NUMEROS DEL PROVEEDRO **/
            //para la trazabilidad, guardo el id y el numero del pedido en el proveedor
            pedido.IdPedidoProveedor     = nuevoPedidoGenerado.Id;
            pedido.NumeroPedidoProveedor = nuevoPedidoGenerado.Numero;
            pedido.Estado = this.ObtenerObjeto <Estado>((int)ESTADOS.PROVEEDOR_);

            repository.Actualizar(pedido);

            return(this.PedidoObtener(pedido.Id));
        }