Пример #1
0
        public async Task <IActionResult> PutArticulo(long id, Articulo articulo)
        {
            if (id != articulo.Id)
            {
                return(BadRequest());
            }

            if (articulo.ImageFile != null)
            {
                DeleteImage(articulo.Imagen);
                articulo.Imagen = await SaveImage(articulo.ImageFile);
            }

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

            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!ArticuloExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(NoContent());
        }
        public async Task <IActionResult> PutDomicilio(long id, Domicilio domicilio)
        {
            if (id != domicilio.Id)
            {
                return(BadRequest());
            }

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

            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!DomicilioExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(NoContent());
        }
Пример #3
0
        public async Task <IActionResult> PutRol(long id, Rol rol)
        {
            if (id != rol.Id)
            {
                return(BadRequest());
            }

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

            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!RolExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(NoContent());
        }
        public async Task <IActionResult> PutPrecioVentaArticulo(long id, PrecioVentaArticulo precioVentaArticulo)
        {
            if (id != precioVentaArticulo.Id)
            {
                return(BadRequest());
            }

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

            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!PrecioVentaArticuloExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(NoContent());
        }
Пример #5
0
        public async Task <IActionResult> PutUsuario(UsuarioChange usuarioChange)
        {
            //Revisa si el usuario figura en los registros de la base de datos
            string hashPassword = Encrypt.GetSHA256(usuarioChange.ClaveVieja);
            bool   existe       = _context.Usuarios.Any(u => u.NombreUsuario == usuarioChange.NombreUsuarioViejo && u.Clave == hashPassword);

            if (!existe)
            {
                return(BadRequest());
            }

            Usuario usuario = _context.Usuarios.Where(x => x.NombreUsuario == usuarioChange.NombreUsuarioViejo).FirstOrDefault();

            usuario.NombreUsuario = usuarioChange.NombreUsuarioNuevo;
            usuario.Clave         = Encrypt.GetSHA256(usuarioChange.ClaveNueva);

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

            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                return(NotFound());
            }

            return(NoContent());
        }
Пример #6
0
        public async Task <IActionResult> PutMercadoPagoDatos(long id, MercadoPagoDatos mercadoPagoDatos)
        {
            if (id != mercadoPagoDatos.Id)
            {
                return(BadRequest());
            }

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

            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!MercadoPagoDatosExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(NoContent());
        }
Пример #7
0
        public async Task <IActionResult> PutPedido(long id, Pedido pedido)
        {
            if (id != pedido.Id)
            {
                return(BadRequest());
            }

            Pedido pedidoPrevio = await _context.Pedidos.AsNoTracking().FirstOrDefaultAsync(x => x.Id == id);

            int estadoPrevio = pedidoPrevio.Estado;
            int estadoActual = pedido.Estado;

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

            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!PedidoExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }


            var pedidoParaDTO = await _context.Pedidos
                                .Include(p => p.DetallesPedido)
                                .ThenInclude(d => d.Articulo)
                                .Include(p => p.Domicilio)
                                .AsNoTracking()
                                .FirstOrDefaultAsync(c => c.Id == id);

            PedidoTotalModificar(ref pedidoParaDTO);

            String    mensaje      = "";
            String    grupoDestino = "";
            PedidoDTO pedidoDTO    = new();

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


            var cambio = (a : estadoPrevio, b : estadoActual);

            switch (cambio)
            {
            // This case would be handle by FinalizarPedido
            //case (a: PENDIENTE, b: PENDIENTE):
            //    mensaje = "Su pedido esta pendiente de aprobacion";
            //    grupoDestino =  pedido.ClienteID.ToString();
            //    EnviarNotificacionCliente(grupoDestino, mensaje, pedidoDTO);
            //    break;

            case (a: PAGO_PENDIENTE_MP, b : PENDIENTE) :
                mensaje      = "Su pedido esta pendiente de aprobacion";
                grupoDestino = pedido.ClienteID.ToString();
                EnviarNotificacionCliente(grupoDestino, mensaje, pedidoDTO);

                mensaje      = "Ha ingresado un nuevo pedido";
                grupoDestino = _context.Roles.Where(r => r.Nombre == "Cajero").FirstOrDefault().Id.ToString();
                EnviarNotificacionRol(grupoDestino, mensaje, pedidoDTO);
                break;

            case (a: PENDIENTE, b : APROBADO) :

                //Revisar si HayStock (puede haber entrado muchos pedidos juntos y no quedar stock aun si al momento de pedirlos si habia)
                if (!await HayStock(pedido.Id))
                {
                    mensaje      = "No hay Stock";
                    grupoDestino = pedido.ClienteID.ToString();
                    EnviarNotificacionCliente(grupoDestino, mensaje, pedidoDTO);

                    mensaje      = "No hay Stock";
                    grupoDestino = _context.Roles.Where(r => r.Nombre == "Cajero").FirstOrDefault().Id.ToString();
                    EnviarNotificacionRol(grupoDestino, mensaje, pedidoDTO);

                    //volver el estado del pedido a 0
                    pedido.Estado = PENDIENTE;
                    _context.Entry(pedido).State = EntityState.Modified;
                    await _context.SaveChangesAsync();

                    return(StatusCode(409, "el pedido debe ser cancelado por falta de stock"));
                }

                //si se aprueba el pedido, facturar el pedido
                await Facturar(pedidoParaDTO.Id);

                mensaje      = "Su pedido esta Aprobado y Facturado";
                grupoDestino = pedido.ClienteID.ToString();
                EnviarNotificacionCliente(grupoDestino, mensaje, pedidoDTO);

                mensaje      = "Ingresó pedido a cocinar";
                grupoDestino = _context.Roles.Where(r => r.Nombre == "Cocinero").FirstOrDefault().Id.ToString();
                EnviarNotificacionRol(grupoDestino, mensaje, pedidoDTO);


                break;

            case (a: PENDIENTE, b : CANCELADO) :
                mensaje      = "Su pedido fue Cancelado";
                grupoDestino = pedido.ClienteID.ToString();
                EnviarNotificacionCliente(grupoDestino, mensaje, pedidoDTO);
                break;

            case (a: APROBADO, b : COCINANDO) :
                mensaje      = "El cocinero comenzó a cocinar el pedido";
                grupoDestino = _context.Roles.Where(r => r.Nombre == "Cajero").FirstOrDefault().Id.ToString();
                EnviarNotificacionRol(grupoDestino, mensaje, pedidoDTO);
                break;

            case (a: CANCELADO, b : PENDIENTE) :
                mensaje      = "Su pedido esta pendiente de aprobacion";
                grupoDestino = pedido.ClienteID.ToString();
                EnviarNotificacionCliente(grupoDestino, mensaje, pedidoDTO);
                break;

            case (a: APROBADO, b : PENDIENTE) :
                mensaje      = "Disculpe, su pedido ha retrocedido a pendiente de aprobacion";
                grupoDestino = pedido.ClienteID.ToString();
                EnviarNotificacionCliente(grupoDestino, mensaje, pedidoDTO);

                mensaje      = "El cajero quitó el pedido de la cocina";
                grupoDestino = _context.Roles.Where(r => r.Nombre == "Cocinero").FirstOrDefault().Id.ToString();
                EnviarNotificacionRol(grupoDestino, mensaje, pedidoDTO);
                break;

            case (a: COCINANDO, b : LISTO_ENTREGA_LOCAL) :
                mensaje      = "Su pedido esta Listo para retirar!";
                grupoDestino = pedido.ClienteID.ToString();
                EnviarNotificacionCliente(grupoDestino, mensaje, pedidoDTO);

                mensaje      = "El cocinero terminó el pedido. Retira en local";
                grupoDestino = _context.Roles.Where(r => r.Nombre == "Cajero").FirstOrDefault().Id.ToString();
                EnviarNotificacionRol(grupoDestino, mensaje, pedidoDTO);
                break;

            case (a: COCINANDO, b : PENDIENTE_ENTREGA) :
                mensaje      = "Su pedido esta está en camino!";
                grupoDestino = pedido.ClienteID.ToString();
                EnviarNotificacionCliente(grupoDestino, mensaje, pedidoDTO);

                mensaje      = "El cocinero terminó el pedido. Enviar por delivery";
                grupoDestino = _context.Roles.Where(r => r.Nombre == "Cajero").FirstOrDefault().Id.ToString();
                EnviarNotificacionRol(grupoDestino, mensaje, pedidoDTO);
                break;

            case (a: LISTO_ENTREGA_LOCAL, b : ENTREGADO) :
                mensaje      = "Esperamos que disfrute su pedido!";
                grupoDestino = pedido.ClienteID.ToString();
                EnviarNotificacionCliente(grupoDestino, mensaje, pedidoDTO);

                mensaje      = "Pedido entregado";
                grupoDestino = _context.Roles.Where(r => r.Nombre == "Cocinero").FirstOrDefault().Id.ToString();
                EnviarNotificacionRol(grupoDestino, mensaje, pedidoDTO);
                break;

            case (a: PENDIENTE_ENTREGA, b : ENTREGADO) :
                mensaje      = "Su pedido fue entregado!";
                grupoDestino = pedido.ClienteID.ToString();
                EnviarNotificacionCliente(grupoDestino, mensaje, pedidoDTO);

                mensaje      = "Pedido entregado";
                grupoDestino = _context.Roles.Where(r => r.Nombre == "Cocinero").FirstOrDefault().Id.ToString();
                EnviarNotificacionRol(grupoDestino, mensaje, pedidoDTO);
                break;

            default:
                break;
            }



            return(NoContent());
        }