Пример #1
0
        static public String GetArticuloParaFrontStatic(long id)
        {
            SQLToJSON ArticuloParaFront = new SQLToJSON();
            SQLToJSON RecetaParaFront   = new SQLToJSON();

            var parametros = new Dictionary <String, object>();

            parametros["@pricePoint"] = id;
            ArticuloParaFront.Agregar("EXECUTE ArticuloParaFront @pricePoint", parametros);
            ArticuloParaFront.Agregar("ingredientes", "EXECUTE IngredientesParaFront @pricePoint", parametros, true);
            return(ArticuloParaFront.JSON());
        }
Пример #2
0
        public String StockTotalParaArticulosNoManufacturados(long id)
        {
            SQLToJSON stockTotalParaArticulosNoManufacturados = new SQLToJSON();

            var parametros = new Dictionary <String, object>();

            parametros["@IdArticulo"] = id;
            stockTotalParaArticulosNoManufacturados.Agregar("EXECUTE StockTotalParaArticulosNoManufacturados @IdArticulo", parametros, true);
            return(stockTotalParaArticulosNoManufacturados.JSON());
        }
Пример #3
0
        public String GetArticulosParaFront()
        {
            SQLToJSON ArticuloParaFront = new SQLToJSON();
            SQLToJSON RecetaParaFront   = new SQLToJSON();

            ArticuloParaFront.Agregar("EXECUTE TodosLosArticulosAlaVentaParaFront", true);
            RecetaParaFront.Agregar("EXECUTE TodosLosIngredientesParaFront", true);
            String resultado = SQLToJSON.VincularArrayDeJSON(ArticuloParaFront.JSON(), "id", RecetaParaFront.JSON(), "ArticuloID", "Ingredientes");

            return(resultado);
        }
Пример #4
0
        public async Task <ActionResult <PedidoDTO> > FinalizarPedido(long id)
        {
            var pedido = await _context.Pedidos
                         .Include(p => p.DetallesPedido)
                         .ThenInclude(d => d.Articulo)
                         .Include(p => p.Domicilio)
                         //.AsNoTracking()
                         .FirstOrDefaultAsync(c => c.Id == id);

            /*
             * Finalizada la carga del pedido el sistema le informara al cliente
             * cuanto es el tiempo estimado para el retiro o entrega de su pedido,
             * este tiempo surgirá de la siguiente formula:
             *  Σ Sumatoria del tiempo estimado de los artículos manufacturados
             *    solicitados por el cliente en el pedido actual
             +
             +  Σ Sumatoria del tiempo estimado de los artículos manufacturados
             +    que se encuentran en la cocina / cantidad cocineros
             +
             +  10 Minutos de entrega por Delivery, solo si corresponde.
             */
            SQLToJSON TiempoEstimadoCocinaPedidoActual     = new SQLToJSON();
            SQLToJSON TiempoEstimadoCocinaPedidosConEstado = new SQLToJSON();

            var parametroIdPedidoActual = new Dictionary <String, object>();

            parametroIdPedidoActual["@IdPedido"] = pedido.Id;
            TiempoEstimadoCocinaPedidoActual.Agregar("EXECUTE TiempoEstimadoCocinaPedidoActual @IdPedido", parametroIdPedidoActual);
            TiempoEstimadoCocinaPedidoActual.JSON();

            var parametroEstadoActual = new Dictionary <String, object>();

            parametroEstadoActual["@estado"] = APROBADO;
            TiempoEstimadoCocinaPedidosConEstado.Agregar("EXECUTE TiempoEstimadoCocinaPedidosConEstado @estado", parametroEstadoActual);
            TiempoEstimadoCocinaPedidosConEstado.JSON();


            //agrega la fecha de hoy al pedido
            pedido.Fecha = DateTime.Now;

            //Agrega fecha estimada de finalizacion
            dynamic TECocinaPedidoActual     = JsonConvert.DeserializeObject(TiempoEstimadoCocinaPedidoActual.JSON());
            dynamic TECocinaPedidosConEstado = JsonConvert.DeserializeObject(TiempoEstimadoCocinaPedidosConEstado.JSON());

            int tiempoEntregaDelivery = 0;


            //Si el pedido es a domicili0, sumar los 10min extras
            if (pedido.TipoEnvio == 1)
            {
                tiempoEntregaDelivery = 10;
            }

            Configuracion configuracion = await _context.Configuraciones.FirstOrDefaultAsync();

            int CocinerosCant = configuracion.CantidadCocineros;

            // Si el pedido no tiene un art. manuf. TECPA.min da null (cuando se pide una cerverza y nada mas)
            long TECPA     = TECocinaPedidoActual.min == null ? 0 : long.Parse(Convert.ToString(TECocinaPedidoActual.min));
            long TECPCE    = TECocinaPedidosConEstado.min == null ? 0 :  long.Parse(Convert.ToString(TECocinaPedidosConEstado.min));
            long FormulaTE = TECPA + TECPCE / CocinerosCant + tiempoEntregaDelivery;


            //Calcular total del pedido
            PedidoTotalModificar(ref pedido);

            pedido.HoraEstimadaFin = pedido.Fecha.AddMinutes(FormulaTE);

            //Los pedidos y sus detallesPedido se crean desabilitados inicialmente hasta que se finalizan
            pedido.Disabled = false;

            foreach (DetallePedido detallePedido in pedido.DetallesPedido)
            {
                detallePedido.Disabled = false;
                _context.Entry(detallePedido).State = EntityState.Modified;
            }

            _context.Entry(pedido).State = EntityState.Modified;

            await _context.SaveChangesAsync();

            //await PutPedido(id, pedido);

            //-------notificacion
            String    mensaje      = "";
            String    grupoDestino = "";
            PedidoDTO pedidoDTO    = new();

            pedidoDTO.Cliente         = pedido.Cliente;
            pedidoDTO.Domicilio       = pedido.Domicilio;
            pedidoDTO.Estado          = pedido.Estado;
            pedidoDTO.Fecha           = pedido.Fecha;
            pedidoDTO.HoraEstimadaFin = pedido.HoraEstimadaFin;
            pedidoDTO.Id        = pedido.Id;
            pedidoDTO.TipoEnvio = pedido.TipoEnvio;
            pedidoDTO.Total     = pedido.Total;

            //Si NO paga por mercadolibre, su estado es PENDIENTE
            if (pedidoDTO.Estado != PAGO_PENDIENTE_MP)
            {
                mensaje      = "Ha ingresado un nuevo pedido";
                grupoDestino = _context.Roles.Where(r => r.Nombre == "Cajero").FirstOrDefault().Id.ToString();
                EnviarNotificacionRol(grupoDestino, mensaje, pedidoDTO);

                mensaje      = "Su pedido esta pendiente de aprobacion";
                grupoDestino = pedido.ClienteID.ToString();
                EnviarNotificacionCliente(grupoDestino, mensaje, pedidoDTO);
            }


            //-------fin notificacion

            return(pedidoDTO);
        }