コード例 #1
0
        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" }));
        }
コード例 #2
0
        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));
        }
コード例 #3
0
ファイル: RemitosController.cs プロジェクト: agusvarela/SIAH
        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();
        }
コード例 #4
0
        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();
        }
コード例 #5
0
ファイル: InsumosController.cs プロジェクト: agusvarela/SIAH
 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
         }));
     }
 }
コード例 #6
0
ファイル: PedidosController.cs プロジェクト: agusvarela/SIAH
        //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);
        }
コード例 #7
0
        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" }));
        }
コード例 #8
0
 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;
         }
     }
 }
コード例 #9
0
ファイル: EstadosController.cs プロジェクト: matychp/SIAH
 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));
 }
コード例 #10
0
 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));
 }
コード例 #11
0
ファイル: HospitalesController.cs プロジェクト: matychp/SIAH
 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));
 }
コード例 #12
0
        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);
            }
        }
コード例 #13
0
ファイル: InsumosController.cs プロジェクト: matychp/SIAH
        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
                }));
            }
        }
コード例 #14
0
        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));
        }