public ActionResult Index(IList <StockFarmacia> stocks) { int hospitalId = stocks.First().hospitalId; var oldStocks = db.StockFarmacias.Where(x => x.hospitalId == hospitalId).ToList(); foreach (StockFarmacia stock in stocks) { var stockToModify = oldStocks.Find(x => x.hospitalId == stock.hospitalId && x.insumoId == stock.insumoId && x.stockFarmacia != stock.stockFarmacia); if (stockToModify != null) { stockToModify.stockFarmacia = stock.stockFarmacia; db.Entry(stockToModify).State = EntityState.Modified; } } if (ModelState.IsValid) { try { if (db.SaveChanges() > 0) { return(RedirectToAction("Index", "StockFarmacia", new { hospitalId = hospitalId, fromDashboard = false, param = "Success" })); } } catch (Exception e) { return(RedirectToAction("Index", "StockFarmacia", new { hospitalId = hospitalId, fromDashboard = false, param = e.Message })); } } return(RedirectToAction("Index", "StockFarmacia", new { hospitalId = hospitalId, fromDashboard = false, param = "Ocurrio un error inesperado al enviar el pedido" })); }
public async Task <ActionResult> Create([Bind(Include = "id,observacionFamacia,fechaInicioReclamo,tipoReclamoId,pedidoId,hospitalId,estadoReclamoId,detallesReclamo")] Reclamo reclamo) { Pedido pedido = db.Pedidos.Find(reclamo.pedidoId); if (ModelState.IsValid) { //Cambio de estado del pedido pedido.estadoId = 7; //Reclamado db.Entry(pedido).State = EntityState.Modified; //Generacion del reclamo db.Reclamoes.Add(reclamo); reclamo.estadoReclamoId = 1; //Generado reclamo.fechaInicioReclamo = DateTime.Now; reclamo.responsableAsignadoId = null; impactarStockFarmaciaYPresupuesto(reclamo); //Guardar toda la transacción en DB db.SaveChanges(); await SendEmailReclamo(reclamo); return(RedirectToAction("ReclamosRespFarmacia", "Reclamos")); } ViewBag.estadoReclamoId = new SelectList(db.EstadoReclamoes, "id", "nombreEstado", reclamo.estadoReclamoId); ViewBag.hospitalId = reclamo.hospitalId; ViewBag.hospital = db.Hospitales.Where(p => p.id == reclamo.hospitalId).First().nombre; ViewBag.pedidoId = reclamo.pedidoId; ViewBag.responsableAsignadoId = new SelectList(db.UserAccounts, "id", "nombre", reclamo.responsableAsignadoId); ViewBag.tipoReclamoId = new SelectList(db.TipoReclamoes, "id", "tipo", reclamo.tipoReclamoId); return(View(reclamo)); }
private void actualizarPresupuestoHospitalEntregaPedido(int pedidoId, ICollection <DetalleRemito> detalleRemitos) { decimal montoPedidoAutorizado = 0; decimal montoEntregado = 0; var detallesPedidos = db.DetallesPedido.Where(dp => dp.pedidoId == pedidoId).ToList(); foreach (var detalle in detallesPedidos) { var precioInsumo = db.Insumos.Where(p => p.id == detalle.insumoId).First().precioUnitario; montoPedidoAutorizado += precioInsumo * detalle.cantidadAutorizada; } foreach (var detalle in detalleRemitos) { var precioInsumo = db.Insumos.Where(p => p.id == detalle.insumoId).First().precioUnitario; montoEntregado += precioInsumo * detalle.cantidadEntregada; } var montoAjuste = montoPedidoAutorizado - montoEntregado; var hospitalId = db.Pedidos.Where(p => p.id == pedidoId).First().hospitalId; var hospital = db.Hospitales.Where(h => h.id == hospitalId).First(); hospital.presupuestoDisponible += montoAjuste; db.Entry(hospital).State = EntityState.Modified; db.SaveChanges(); }
private void ActualizarPedido(int idPedido) { var pedido = db.Pedidos.Where(p => p.id == idPedido).Include(t => t.estado).Include(d => d.detallesPedido).First(); pedido.estadoId = 6; foreach (DetallePedido item in pedido.detallesPedido) { ActualizarStockFarmacia(pedido, item); } db.Entry(pedido).State = EntityState.Modified; db.SaveChanges(); }
public ActionResult ActualizarStock(string[] syncData, string userId) { try { // TODO: crear un ajuste nuevo y al recorrer los insumos ir agregando los detalles // No olvidar crear los historicos para cada insumo var ajuste = new AjusteSIAH(); ajuste.fechaGeneracion = DateTime.UtcNow; ajuste.info = "Sincronización con stock OCASA"; ajuste.usuarioId = int.Parse(userId); Uri baseUri = new Uri("http://localhost:3000"); var detalles = new HashSet <DetalleAjusteSIAH>(); foreach (var id in syncData) { var insumoActual = db.Insumos.Find(int.Parse(id)); var insumoOcasaActual = db.InsumoOcasa.Find(int.Parse(id)); if (insumoActual != null) { //Asumimos que el Stock Fisico (entregado) es mayor al stock (comprometido por las autorizaciones) //por lo tanto calculamos la diferencia para mantener la misma respecto al nuevo stock //Ej: Stock fisico = 100; Stock comprometido = 30; Stock Ocasa = 90 //Resultado -> Stock fisico 90; Stock comprometido = 20 var diferenciaStocks = insumoOcasaActual.stockFisico - insumoActual.stockFisico; var diff = insumoActual.stockFisico - insumoActual.stock; insumoActual.stockFisico = insumoOcasaActual.stockFisico <= 0 ? 0 : insumoOcasaActual.stockFisico; insumoActual.stock = insumoActual.stockFisico - diff <= 0 ? 0 : insumoActual.stockFisico - diff; db.Entry(insumoActual).State = EntityState.Modified; var detalleAjuste = new DetalleAjusteSIAH(); detalleAjuste.insumoId = insumoActual.id; detalleAjuste.info = "Ajuste por sincronizacion con OCASA"; detalleAjuste.cantidad = diferenciaStocks; detalles.Add(detalleAjuste); agregarHistoricoSIAH(ajuste, insumoActual.stock, detalleAjuste); agregarHistoricoFisico(ajuste, insumoActual.stockFisico, detalleAjuste); } } ajuste.detallesAjuste = detalles; db.AjusteSIAHs.Add(ajuste); db.SaveChanges(); return(RedirectToAction("DirectorArea", "Home", new { param = "Success" })); } catch (Exception e) { Console.WriteLine(e.ToString()); return(RedirectToAction("DirectorArea", "Home", new { param = e.Message })); } }
//POST: EntregaPedido public async Task <HttpResponseMessage> EntregaPedido(int?id) { HttpResponseMessage response; if (id == null) { return(new HttpResponseMessage(HttpStatusCode.BadRequest)); } try { var pedido = db.Pedidos.Where(p => p.id == id).Include(t => t.estado).Include(d => d.detallesPedido).First(); if (pedido.estadoId == 3) { pedido.estadoId = 6; foreach (DetallePedido item in pedido.detallesPedido) { StockFarmacia insumo = db.StockFarmacias.Where(p => p.hospitalId == pedido.hospitalId && p.insumoId == item.insumoId).First(); if (insumo != null) { insumo.stockFarmacia = insumo.stockFarmacia + item.cantidadAutorizada; db.Entry(insumo).State = EntityState.Modified; } //TODO: Si el insumo no existe se deberia insertar en la BD } db.Entry(pedido).State = EntityState.Modified; db.SaveChanges(); await SendEmailCambioEstadoAsync(pedido); } else { response = new HttpResponseMessage(HttpStatusCode.NotAcceptable); /*response.Content = new StringContent("El pedido ingresado debe estar en estado " + * "En Proceso de Envío y el estado del pedido ingresado es " + pedido.estado.nombreEstado);*/ return(response); } } catch (Exception) { response = new HttpResponseMessage(HttpStatusCode.InternalServerError); //response.Content = new StringContent("Ocurrió un error al intentar realizar el cambio de estado"); return(response); } response = new HttpResponseMessage(HttpStatusCode.Accepted); //response.Content = new StringContent("El pedido cambió correctamente a estado Entregado"); return(response); }
public ActionResult NewPassword([Bind(Include = "password, confirmPassword")] UserAccount userProfile) { string email = Session["email"].ToString(); string password = userProfile.password; userProfile = db.UserAccounts.Where(user => user.email == email).First(); String hashedPass = Hashing.HashPassword(password); userProfile.password = hashedPass; userProfile.confirmPassword = hashedPass; db.Entry(userProfile).State = EntityState.Modified; db.SaveChanges(); Session.Clear(); return(RedirectToAction("Index", "Home", new { param = "Success" })); }
private void ActualizarStockFarmacia(int idHospital, ICollection <DetalleRegistro> detalles) { foreach (var detalle in detalles) { // Buscar el stock farmacia de ese hospital y ese insumo var stockFarmacia = db.StockFarmacias.Where(x => x.hospitalId == idHospital && x.insumoId == detalle.insumoId).FirstOrDefault(); if (stockFarmacia != null) { stockFarmacia.stockFarmacia -= detalle.cantidad; if (stockFarmacia.stockFarmacia < 0) { stockFarmacia.stockFarmacia = 0; } db.Entry(stockFarmacia).State = EntityState.Modified; } } }
public ActionResult Edit([Bind(Include = "id,nombreEstado,isFinal")] Estado estado) { if (ModelState.IsValid) { db.Entry(estado).State = EntityState.Modified; db.SaveChanges(); return(RedirectToAction("Index")); } return(View(estado)); }
public ActionResult Edit([Bind(Include = "id,nombre")] TipoInsumo tipoInsumo) { if (ModelState.IsValid) { db.Entry(tipoInsumo).State = EntityState.Modified; db.SaveChanges(); return(RedirectToAction("Index")); } return(View(tipoInsumo)); }
public ActionResult Edit([Bind(Include = "id,nombre,localidadId, presupuesto, latitud, longitud, telefono, direccion")] Hospital hospital) { if (ModelState.IsValid) { db.Entry(hospital).State = EntityState.Modified; db.SaveChanges(); return(RedirectToAction("Index")); } ViewBag.localidadId = new SelectList(db.Localidades, "id", "nombre", hospital.localidadId); return(View(hospital)); }
private void ActualizarStock(int insumoId, int cantidadComprada, DateTime fechaCargaCompra, int nuevoIdCompra) { Insumo insumo = db.Insumos.Find(insumoId); insumo.stock += cantidadComprada; insumo.stockFisico += cantidadComprada; db.Entry(insumo).State = EntityState.Modified; if (cantidadComprada > 0) { AgregarHistorico(insumoId, cantidadComprada, insumo.stock, fechaCargaCompra, nuevoIdCompra); } }
public ActionResult ActualizarStock(string[] syncData) { try { Uri baseUri = new Uri("http://localhost:3000"); // Uri myUri = new Uri(baseUri, "/reclamo?name=success"); // var response = client.GetAsync(myUri); // if (response.Result.StatusCode != HttpStatusCode.OK) return RedirectToAction("DirectorArea", "Home", new { param = "Failed" }); // var insumosOcasa = db.InsumoOcasa.Select(x => new { id = x.id, stockOcasa = x.stockFisico }).ToList(); foreach (var id in syncData) { var insumoActual = db.Insumos.Find(int.Parse(id)); var insumoOcasaActual = db.InsumoOcasa.Find(int.Parse(id)); if (insumoActual != null) { //Asumimos que el Stock Fisico (entregado) es mayor al stock (comprometido por las autorizaciones) //por lo tanto calculamos la diferencia para mantener la misma respecto al nuevo stock //Ej: Stock fisico = 100; Stock comprometido = 30; Stock Ocasa = 90 //Resultado -> Stock fisico 90; Stock comprometido = 20 var diff = insumoActual.stockFisico - insumoActual.stock; insumoActual.stockFisico = insumoOcasaActual.stockFisico <= 0 ? 0 : insumoOcasaActual.stockFisico; insumoActual.stock = insumoActual.stockFisico - diff <= 0 ? 0 : insumoActual.stockFisico - diff; db.Entry(insumoActual).State = EntityState.Modified; } } db.SaveChanges(); return(RedirectToAction("DirectorArea", "Home", new { param = "Success" })); } catch (Exception e) { Console.WriteLine(e.ToString()); return(RedirectToAction("DirectorArea", "Home", new { param = e.Message })); } }
public ActionResult Create([Bind(Include = "id,fechaGeneracion,info,usuarioId,detallesAjuste")] AjusteSIAH ajusteSIAH) { foreach (var detalle in ajusteSIAH.detallesAjuste) { detalle.insumo = null; var insumo = db.Insumos.Find(detalle.insumoId); // Si es negativo se resta, si es positivo se suma insumo.stock = insumo.stock + detalle.cantidad; insumo.stockFisico = insumo.stockFisico + detalle.cantidad; agregarHistoricoSIAH(ajusteSIAH, insumo.stock, detalle); agregarHistoricoFisico(ajusteSIAH, insumo.stockFisico, detalle); db.Entry(insumo).State = EntityState.Modified; } if (ModelState.IsValid) { try { db.AjusteSIAHs.Add(ajusteSIAH); // Guardar el registro en la DB if (db.SaveChanges() > 0) { return(RedirectToAction("Index", new { param = "Success" })); } return(RedirectToAction("Index")); } catch (Exception e) { return(RedirectToAction("Index", new { param = "Ocurrio un error inesperado al enviar el registro" })); } } ViewBag.usuarioId = new SelectList(db.UserAccounts, "id", "nombre", ajusteSIAH.usuarioId); return(View(ajusteSIAH)); }