Beispiel #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" }));
        }
Beispiel #2
0
        public ActionResult Create([Bind(Include = "id,fechaGeneracion,destinatario,tipo,usuarioId,hospitalId,detallesRegistro")] Registro registro)
        {
            foreach (var detalle in registro.detallesRegistro)
            {
                detalle.insumo = null;
            }

            if (ModelState.IsValid)
            {
                db.Registros.Add(registro);

                try
                {
                    // Actualizar el stock
                    ActualizarStockFarmacia(registro.hospitalId, registro.detallesRegistro, registro);
                    // Guardar el registro en la DB
                    if (db.SaveChanges() > 0)
                    {
                        return(RedirectToAction("Index", new { param = "Success" }));
                    }
                }
                catch (Exception e)
                {
                    return(RedirectToAction("Index", new { param = "Ocurrio un error inesperado al enviar el registro" }));
                }
            }
            return(RedirectToAction("Index", new { param = "Ocurrio un error inesperado al enviar el registro" }));
        }
Beispiel #3
0
        public ActionResult Create([Bind(Include = "id,nombre")] Rol rol)
        {
            if (ModelState.IsValid)
            {
                db.Roles.Add(rol);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            return(View(rol));
        }
Beispiel #4
0
        public ActionResult Create([Bind(Include = "id,tipo,descripcion")] TipoReclamo tipoReclamo)
        {
            if (ModelState.IsValid)
            {
                db.TipoReclamoes.Add(tipoReclamo);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            return(View(tipoReclamo));
        }
Beispiel #5
0
        public ActionResult Create([Bind(Include = "id,nombre")] Localidad localidad)
        {
            if (ModelState.IsValid)
            {
                db.Localidades.Add(localidad);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            return(View(localidad));
        }
Beispiel #6
0
        public ActionResult Create([Bind(Include = "id,nombreEstado,isFinal")] Estado estado)
        {
            if (ModelState.IsValid)
            {
                db.Estados.Add(estado);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            return(View(estado));
        }
Beispiel #7
0
        public ActionResult Create([Bind(Include = "id,nombre")] TipoInsumo tipoInsumo)
        {
            if (ModelState.IsValid)
            {
                db.TiposInsumo.Add(tipoInsumo);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            return(View(tipoInsumo));
        }
Beispiel #8
0
        public ActionResult Create([Bind(Include = "id,nombre,localidadId, presupuesto, latitud, longitud, telefono")] Hospital hospital)
        {
            if (ModelState.IsValid)
            {
                db.Hospitales.Add(hospital);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            ViewBag.localidadId = new SelectList(db.Localidades, "id", "nombre", hospital.localidadId);
            return(View(hospital));
        }
Beispiel #9
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));
        }
Beispiel #10
0
 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
         }));
     }
 }
Beispiel #11
0
        //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);
        }
Beispiel #12
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" }));
        }
Beispiel #13
0
        private void CargarRemitoCompra(DateTime fechaEntregaEfectiva)
        {
            Compra compra = new Compra();

            compra.fechaEntregaEfectiva = fechaEntregaEfectiva;
            db.Compras.Add(compra);
            db.SaveChanges();
            var compraId = compra.id;

            using (var reader = new StreamReader($"{Server.MapPath("~/CargaRemitosCSV")}/RemitoCompra.csv"))
            {
                var headerLine = reader.ReadLine();
                while (!reader.EndOfStream)
                {
                    ActualizarDatos(compraId, reader);
                }
            }

            db.SaveChanges();
        }
Beispiel #14
0
        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
                }));
            }
        }
Beispiel #15
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));
        }
Beispiel #16
0
        public ActionResult CargarCompra(Compra compra)
        {
            var compraCargada = db.Compras.Any(compraDB => compraDB.numeroComprobante == compra.numeroComprobante && compraDB.cuilProveedor == compra.cuilProveedor);

            if (compraCargada)
            {
                string acceptValue = "La compra ya se encuentra cargada.";
                var    result      = Content(JsonConvert.SerializeObject(new { error = acceptValue }), "application/json; charset=utf-8");
                HttpContext.Response.StatusCode = (int)HttpStatusCode.Forbidden;
                return(result);
            }

            compra.id = db.Insumos.ToList().Last().id + 1;
            var nuevoIdCompra = db.Compras.ToList().Last().id + 1;

            compra.fechaCargaCompra = DateTime.UtcNow;

            try
            {
                db.Compras.Add(compra);
                foreach (var detalle in compra.detallesCompra)
                {
                    ActualizarDatos(compra.id, detalle, compra.fechaCargaCompra, nuevoIdCompra);
                }
                db.SaveChanges();

                string acceptValue = "La compra se cargo exitosamente.";
                var    result      = Content(JsonConvert.SerializeObject(new { message = acceptValue }), "application/json; charset=utf-8");
                HttpContext.Response.StatusCode = (int)HttpStatusCode.Accepted;
                return(result);
            }
            catch (Exception e)
            {
                Console.WriteLine(e.StackTrace);
                string acceptValue = "Ocurrio un error inesperado al intentar guardar la compra.";
                var    result      = Content(JsonConvert.SerializeObject(new { error = acceptValue }), "application/json; charset=utf-8");
                HttpContext.Response.StatusCode = (int)HttpStatusCode.InternalServerError;
                return(result);
            }
        }
Beispiel #17
0
        public ActionResult CargarRemito(Remito remito)
        {
            if (!db.Pedidos.Where(p => p.id.Equals(remito.pedidoId)).Any())
            {
                string errorValue = "El numero de pedido ingresado no existe en el sistema.";
                var    result     = Content(JsonConvert.SerializeObject(new { error = errorValue }), "application/json; charset=utf-8");
                HttpContext.Response.StatusCode = (int)HttpStatusCode.BadRequest;
                return(result);
            }

            var listaItems = db.DetallesPedido
                             .Where(d => d.pedidoId == remito.pedidoId)
                             .Select(x => new
            {
                insumoId       = x.insumoId,
                cantAutorizada = x.cantidadAutorizada
            }).ToList();

            if (listaItems.Count != remito.detallesRemito.Count)
            {
                string errorValue = "La cantidad de insumos ingresadas no corresponde con la cantidad de insumos pedidos.";
                var    result     = Content(JsonConvert.SerializeObject(new { error = errorValue }), "application/json; charset=utf-8");
                HttpContext.Response.StatusCode = (int)HttpStatusCode.BadRequest;
                return(result);
            }

            remito.id       = remito.pedidoId;
            remito.estadoId = 1;

            foreach (DetalleRemito detalle in remito.detallesRemito)
            {
                var item = listaItems.Find(l => l.insumoId == detalle.insumoId);

                if (item == null)
                {
                    string errorValue = "El insumoId: " + detalle.insumoId + " no existe para el número de pedido ingresado.";
                    var    result     = Content(JsonConvert.SerializeObject(new { error = errorValue }), "application/json; charset=utf-8");
                    HttpContext.Response.StatusCode = (int)HttpStatusCode.BadRequest;
                    return(result);
                }
                else if (detalle.cantidadEntregada < 0)
                {
                    string errorValue = "El insumoId: " + detalle.insumoId + " posee una canidad incorrecta.";
                    var    result     = Content(JsonConvert.SerializeObject(new { error = errorValue }), "application/json; charset=utf-8");
                    HttpContext.Response.StatusCode = (int)HttpStatusCode.BadRequest;
                    return(result);
                }

                detalle.remitoId = remito.id;
            }

            try
            {
                db.Remitos.Add(remito);
                db.SaveChanges();
                ActualizarStockSiahConDetallesRemito(remito.id, remito.fechaEntregaEfectiva);
                ActualizarStockFarmacia(remito);
                ActualizarPedido(remito.pedidoId);

                string acceptValue = "La peticion fue exitosa.";
                var    result      = Content(JsonConvert.SerializeObject(new { message = acceptValue }), "application/json; charset=utf-8");
                HttpContext.Response.StatusCode = (int)HttpStatusCode.Accepted;
                return(result);
            }
            catch (Exception e)
            {
                Console.WriteLine(e.StackTrace);
                string acceptValue = "El remito ya se encuentra cargado.";
                var    result      = Content(JsonConvert.SerializeObject(new { error = acceptValue }), "application/json; charset=utf-8");
                HttpContext.Response.StatusCode = (int)HttpStatusCode.InternalServerError;
                return(result);
            }
        }