Esempio n. 1
0
        public async Task <RespuestaDatos> GuardarProductoPedido(ProdSerXVendidosPed productoPedido)
        {
            RespuestaDatos       respuestaDatos;
            ProductosServiciosPc producto = await _cOContenidoFachada.GetPublicacionPorIdPublicacion(productoPedido.Idproductoservico);

            System.Diagnostics.Debug.WriteLine("Este es el ID:");
            System.Diagnostics.Debug.WriteLine(productoPedido.Idproductoservico);
            if (producto != null)
            {
                if (await ValidarPrecioProductoPedido(productoPedido))
                {
                    TipoPublicacionPc tipoProductoPedido = _cOContenidoFachada.GetTipoPublicacionPorID(producto.Idtipopublicacion);
                    productoPedido.Creacion = DateTime.Now;
                    if (tipoProductoPedido != null)
                    {
                        System.Diagnostics.Debug.WriteLine("Este es el tipo:");
                        System.Diagnostics.Debug.WriteLine(tipoProductoPedido.Nombre);
                        if (tipoProductoPedido.Id == 2)
                        {
                            try
                            {
                                PedidosPed pedido = _pEPedidoBiz.GetPedidoPorId(productoPedido.Idpedido);
                                respuestaDatos = respuestaDatos = await _pEPedidoBiz.GuardarProductoPedido(productoPedido, pedido);
                            }
                            catch (COExcepcion e)
                            {
                                RepoErrorLog.AddErrorLog(new ErrorLog
                                {
                                    Mensaje   = e.Message,
                                    Traza     = e.StackTrace,
                                    Usuario   = "no_aplica",
                                    Creacion  = DateTime.Now,
                                    Tipoerror = COErrorLog.ENVIO_CORREO
                                });
                                throw e;
                            }
                        }
                        else
                        {
                            if (await ValidarCantidadProductoPedido(productoPedido))
                            {
                                try
                                {
                                    PedidosPed pedido = _pEPedidoBiz.GetPedidoPorId(productoPedido.Idpedido);
                                    respuestaDatos = respuestaDatos = await _pEPedidoBiz.GuardarProductoPedido(productoPedido, pedido);
                                }
                                catch (COExcepcion e)
                                {
                                    RepoErrorLog.AddErrorLog(new ErrorLog
                                    {
                                        Mensaje   = e.Message,
                                        Traza     = e.StackTrace,
                                        Usuario   = "no_aplica",
                                        Creacion  = DateTime.Now,
                                        Tipoerror = COErrorLog.ENVIO_CORREO
                                    });
                                    throw e;
                                }
                            }
                            else
                            {
                                throw new COExcepcion("No hay suficiente cantidad del producto deseado");
                            }
                        }
                    }
                    else
                    {
                        throw new COExcepcion("Hay un inconveniente con el tipo del producto");
                    }
                }
                else
                {
                    throw new COExcepcion("Hay un inconveniente con el precio total del producto pedido");
                }
            }
            else
            {
                throw new COExcepcion("El producto deseado no existe");
            }
            return(respuestaDatos);
        }