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()); }
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()); }
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()); }
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()); }
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()); }