Example #1
0
        public ActionResult Editar(int idReporte)
        {
            //REPORTE reporte = detalle.ANALISIS_EMPLEADO.First().REPORTEs.First();
            REPORTE reporte = db.REPORTEs.Find(idReporte);

            ViewBag.Reporte = reporte;
            DETALLE_SOLICITUD detalle = db.DETALLE_SOLICITUD.Find(reporte.ANALISIS_EMPLEADO.id_detalle_solicitud);

            ViewBag.DetalleSol = detalle;
            return(PartialView(reporte));
        }
Example #2
0
        public void crearDetalleSolicitud(SOLICITUD Solicitud, List <EmpleadoSeleccion> empleadosSeleccion)
        {
            List <DETALLE_SOLICITUD> detallesList = new List <DETALLE_SOLICITUD>();

            foreach (EmpleadoSeleccion empleadoSeleccion in empleadosSeleccion)
            {
                List <Int32> analisisList = empleadoSeleccion.analisis;

                for (var i = 0; i < analisisList.Count(); i++)
                {
                    ANALISI analisis = db.ANALISIS.Find(analisisList[i]);

                    DETALLE_SOLICITUD detalleSolicitud = new DETALLE_SOLICITUD()
                    {
                        id_solicitud = Solicitud.id_solicitud,
                        id_analisis  = analisis.id_analisis
                    };

                    db.DETALLE_SOLICITUD.Add(detalleSolicitud);

                    db.SaveChanges();

                    ANALISIS_EMPLEADO analisisEmpleado = new ANALISIS_EMPLEADO()
                    {
                        id_detalle_solicitud = detalleSolicitud.id_detalle_solicitud,
                        id_empleado          = empleadoSeleccion.idEmpleado
                    };

                    db.ANALISIS_EMPLEADO.Add(analisisEmpleado);

                    db.SaveChanges();
                }

                if (analisisList.Count() > 0)
                {
                    PROCESO_ANALISTA procesoAnalista = new PROCESO_ANALISTA
                    {
                        solicitud_id      = Solicitud.id_solicitud,
                        empleado_id       = empleadoSeleccion.idEmpleado,
                        cantidad_analisis = (byte)analisisList.Count()
                    };

                    db.PROCESO_ANALISTA.Add(procesoAnalista);
                }


                db.SaveChanges();
            }
        }
Example #3
0
        public ActionResult GuardarAsignacion()
        {
            Stream req = Request.InputStream;

            req.Seek(0, System.IO.SeekOrigin.Begin);
            string json = new StreamReader(req).ReadToEnd();

            var    dbTransaction = db.Database.BeginTransaction();
            Object result;

            try
            {
                EMPLEADO empleado = this.empleado();

                JObject input = (JObject)JsonConvert.DeserializeObject(json);

                int idSolicitud = input.GetValue("idSolicitud").ToObject <int>();
                var empleados   = input.GetValue("empleados");

                SOLICITUD solicitud = db.SOLICITUDs.Find(idSolicitud);

                List <EmpleadoSeleccion> empleadosSeleccion = getEmpleadosSeleccion(empleados);

                List <int> analisisSolicitud = new List <int>();

                foreach (EmpleadoSeleccion empleadoSeleccion in empleadosSeleccion)
                {
                    List <Int32> analisisList = empleadoSeleccion.analisis;

                    for (var i = 0; i < analisisList.Count(); i++)
                    {
                        analisisSolicitud.Add(analisisList[i]);

                        ANALISI analisis = db.ANALISIS.Find(analisisList[i]);

                        IEnumerable <DETALLE_SOLICITUD> detalles = solicitud.DETALLE_SOLICITUD;

                        DETALLE_SOLICITUD detalleSolicitud;
                        if (detalles.Where(d => d.id_analisis == analisis.id_analisis).Count() == 1)
                        {
                            detalleSolicitud = detalles.Where(d => d.id_analisis == analisis.id_analisis).First();
                        }
                        else
                        {
                            detalleSolicitud = new DETALLE_SOLICITUD()
                            {
                                id_solicitud = solicitud.id_solicitud,
                                id_analisis  = analisis.id_analisis
                            };

                            db.DETALLE_SOLICITUD.Add(detalleSolicitud);

                            db.SaveChanges();
                        }

                        ANALISIS_EMPLEADO analisisEmpleado;

                        if (detalleSolicitud.ANALISIS_EMPLEADO.Count() == 1)
                        {
                            analisisEmpleado             = detalleSolicitud.ANALISIS_EMPLEADO.First();
                            analisisEmpleado.id_empleado = empleadoSeleccion.idEmpleado;
                        }
                        else
                        {
                            analisisEmpleado = new ANALISIS_EMPLEADO()
                            {
                                id_detalle_solicitud = detalleSolicitud.id_detalle_solicitud,
                                id_empleado          = empleadoSeleccion.idEmpleado
                            };

                            db.ANALISIS_EMPLEADO.Add(analisisEmpleado);

                            db.SaveChanges();
                        }
                    }

                    if (analisisList.Count() > 0)
                    {
                        PROCESO_ANALISTA procesoAnalista;
                        if (db.PROCESO_ANALISTA.Where(pa => pa.empleado_id == empleadoSeleccion.idEmpleado).Count() > 1)
                        {
                            procesoAnalista = db.PROCESO_ANALISTA.Where(pa => pa.empleado_id == empleadoSeleccion.idEmpleado).First();

                            procesoAnalista.cantidad_analisis = (byte)analisisList.Count();
                        }
                        else
                        {
                            procesoAnalista = new PROCESO_ANALISTA
                            {
                                solicitud_id      = solicitud.id_solicitud,
                                empleado_id       = empleadoSeleccion.idEmpleado,
                                cantidad_analisis = (byte)analisisList.Count()
                            };

                            db.PROCESO_ANALISTA.Add(procesoAnalista);
                        }

                        db.SaveChanges();
                    }

                    List <DETALLE_SOLICITUD> detallesToRemove = db.DETALLE_SOLICITUD.Where(ds => ds.id_solicitud == solicitud.id_solicitud && !analisisSolicitud.Contains(ds.id_analisis)).ToList();

                    foreach (DETALLE_SOLICITUD detalleToRemove in detallesToRemove)
                    {
                        db.DETALLE_SOLICITUD.Remove(detalleToRemove);
                    }

                    db.SaveChanges();
                }

                dbTransaction.Commit();

                result = new { isValid = true, id = solicitud.id_solicitud };
            }
            catch (Exception e)
            {
                dbTransaction.Rollback();

                var msg = e.Message;

                result = new { isValid = false, msg = msg };
            }

            return(Json(result));
        }
Example #4
0
        public ActionResult CreateVisitas(VISITA visita, int solicitud, int cantidad_muestras)
        {
            GRUPO_SOLICITUD grupoSolicitud = db.GRUPO_SOLICITUD.Find(solicitud);

            List <Int32> referencia = this.numeroReferencia();

            var    dbTransaction = db.Database.BeginTransaction();
            Object result;

            try
            {
                Int32 correlativo = referencia.ElementAt(0);
                for (var i = 0; i < cantidad_muestras; i++)
                {
                    SOLICITUD newSolicitud = new SOLICITUD();

                    newSolicitud.fecha_creacion    = DateTime.Now;
                    newSolicitud.id_empleado       = this.empleado().id_empleado;
                    newSolicitud.id_estado         = 1;
                    newSolicitud.id_estado_proceso = 1;
                    newSolicitud.no_referencia     = referencia.ElementAt(1).ToString() + "-" + correlativo.ToString().PadLeft(4, '0');
                    newSolicitud.id_solicitante    = grupoSolicitud.SOLICITANTE.id_solicitante;
                    newSolicitud.informe_generado  = 0;

                    db.SOLICITUDs.Add(newSolicitud);
                    db.SaveChanges();

                    visita.id_solicitud       = newSolicitud.id_solicitud;
                    visita.id_grupo_solicitud = solicitud;

                    var horaEntrega = Request.Form["hora_entrega"];

                    var horasEntrega   = Int32.Parse(horaEntrega.Substring(0, 2));
                    var minutosEntrega = Int32.Parse(horaEntrega.Substring(3, 2));

                    var fechaEntrega = visita.fecha_entrega.Value.ToShortDateString();

                    visita.fecha_entrega = new DateTime(Int32.Parse(fechaEntrega.Substring(6, 4)), Int32.Parse(fechaEntrega.Substring(3, 2)), Int32.Parse(fechaEntrega.Substring(0, 2)), horasEntrega, minutosEntrega, 0);

                    if (visita.lat == null)
                    {
                        SITIO_MUESTREO sitio = db.SITIO_MUESTREO.Find(visita.id_sitio_muestreo);
                        visita.lat = sitio.lat;
                        visita.lng = sitio.lng;
                    }

                    db.VISITAs.Add(visita);
                    db.SaveChanges();


                    foreach (var id in grupoSolicitud.preset.Split(','))
                    {
                        int analisis = Int32.Parse(id);

                        DETALLE_SOLICITUD detalle = new DETALLE_SOLICITUD();

                        detalle.id_analisis  = analisis;
                        detalle.id_solicitud = newSolicitud.id_solicitud;

                        db.DETALLE_SOLICITUD.Add(detalle);
                    }

                    db.SaveChanges();

                    correlativo++;
                }

                dbTransaction.Commit();

                result = new { isValid = true };
            }
            catch (Exception e)
            {
                dbTransaction.Rollback();

                var msg = e.Message;

                result = new { isValid = false, msg = msg };
            }


            return(Json(result));
        }
Example #5
0
        public ActionResult EditarVisitaPost(VISITA visita, string visitaId, int cantidad_muestras)
        {
            IEnumerable <VISITA> visitas = db.VISITAs.Where(v => v.id == visitaId).OrderByDescending(v => v.id_visita);

            Object result;
            var    dbTransaction = db.Database.BeginTransaction();

            try
            {
                var          countVisitas = visitas.Count();
                List <Int32> referencia   = this.numeroReferencia();

                if (cantidad_muestras > countVisitas)
                {
                    Int32 correlativo = referencia.ElementAt(0);

                    GRUPO_SOLICITUD grupoSolicitud = visitas.First().GRUPO_SOLICITUD;

                    for (var i = 0; i < (cantidad_muestras - countVisitas); i++)
                    {
                        // crear visitas y solicitudes(muestras)
                        SOLICITUD newSolicitud = new SOLICITUD();

                        newSolicitud.fecha_creacion    = DateTime.Now;
                        newSolicitud.id_empleado       = this.empleado().id_empleado;
                        newSolicitud.id_estado         = 1;
                        newSolicitud.id_estado_proceso = 1;
                        newSolicitud.no_referencia     = referencia.ElementAt(1).ToString() + "-" + correlativo.ToString().PadLeft(4, '0');
                        newSolicitud.id_solicitante    = grupoSolicitud.SOLICITANTE.id_solicitante;
                        newSolicitud.informe_generado  = 0;

                        db.SOLICITUDs.Add(newSolicitud);
                        db.SaveChanges();

                        visita.id_solicitud       = newSolicitud.id_solicitud;
                        visita.id_grupo_solicitud = grupoSolicitud.id_grupo_solicitud;

                        var horaEntrega = Request.Form["hora_entrega"];

                        var horasEntrega   = Int32.Parse(horaEntrega.Substring(0, 2));
                        var minutosEntrega = Int32.Parse(horaEntrega.Substring(3, 2));

                        var fechaEntrega = visita.fecha_entrega.Value.ToShortDateString();

                        visita.fecha_entrega = new DateTime(Int32.Parse(fechaEntrega.Substring(6, 4)), Int32.Parse(fechaEntrega.Substring(3, 2)), Int32.Parse(fechaEntrega.Substring(0, 2)), horasEntrega, minutosEntrega, 0);

                        if (visita.lat == null)
                        {
                            SITIO_MUESTREO sitio = db.SITIO_MUESTREO.Find(visita.id_sitio_muestreo);
                            visita.lat = sitio.lat;
                            visita.lng = sitio.lng;
                        }

                        db.VISITAs.Add(visita);
                        db.SaveChanges();


                        foreach (var id in grupoSolicitud.preset.Split(','))
                        {
                            int analisis = Int32.Parse(id);

                            DETALLE_SOLICITUD detalle = new DETALLE_SOLICITUD();

                            detalle.id_analisis  = analisis;
                            detalle.id_solicitud = newSolicitud.id_solicitud;

                            db.DETALLE_SOLICITUD.Add(detalle);
                        }

                        db.SaveChanges();

                        correlativo++;
                    }
                }
                else if (cantidad_muestras < countVisitas)
                {
                    // verificar que el estado de las solicitudes sea 1
                    var toDelete = countVisitas - cantidad_muestras;

                    foreach (VISITA visitaToDelete in visitas)
                    {
                        if (toDelete == 0)
                        {
                            break;
                        }

                        if (visitaToDelete.SOLICITUD.id_estado == 1)
                        {
                            toDelete--;

                            SOLICITUD solicitudToRemove = visitaToDelete.SOLICITUD;

                            if (visitaToDelete.DETALLE_VISITA.Count() > 0)
                            {
                                foreach (DETALLE_VISITA detalleVisita in visitaToDelete.DETALLE_VISITA.ToList())
                                {
                                    db.DETALLE_VISITA.Remove(detalleVisita);
                                }
                            }

                            db.VISITAs.Remove(visitaToDelete);

                            if (solicitudToRemove.DETALLE_SOLICITUD.Count() > 0)
                            {
                                foreach (DETALLE_SOLICITUD detalle in solicitudToRemove.DETALLE_SOLICITUD.ToList())
                                {
                                    if (detalle.ANALISIS_EMPLEADO.FirstOrDefault() != null)
                                    {
                                        db.ANALISIS_EMPLEADO.Remove(detalle.ANALISIS_EMPLEADO.FirstOrDefault());
                                    }

                                    db.DETALLE_SOLICITUD.Remove(detalle);
                                }
                            }

                            db.SOLICITUDs.Remove(solicitudToRemove);
                        }
                    }

                    if (toDelete > 0)
                    {
                        throw new Exception("No es posible disminuir el numero de muestras ya que no hay suficientes con estado 'Pendiente'");
                    }
                }

                db.SaveChanges();
                visitas = db.VISITAs.Where(v => v.id == visitaId);


                foreach (VISITA visitaUpdate in visitas)
                {
                    visitaUpdate.fecha_visita = visita.fecha_visita;

                    var horaEntrega = Request.Form["hora_entrega"];

                    var horasEntrega   = Int32.Parse(horaEntrega.Substring(0, 2));
                    var minutosEntrega = Int32.Parse(horaEntrega.Substring(3, 2));

                    var fechaEntrega = visita.fecha_entrega.Value.ToShortDateString();

                    visitaUpdate.fecha_entrega = new DateTime(Int32.Parse(fechaEntrega.Substring(6, 4)), Int32.Parse(fechaEntrega.Substring(3, 2)), Int32.Parse(fechaEntrega.Substring(0, 2)), horasEntrega, minutosEntrega, 0);

                    visitaUpdate.id_procedencia      = visita.id_procedencia;
                    visitaUpdate.id_empleado         = visita.id_empleado;
                    visitaUpdate.id_empleado_entrega = visita.id_empleado_entrega;
                    visitaUpdate.id_sitio_muestreo   = visita.id_sitio_muestreo;
                    visitaUpdate.id_tipo_muestra     = visita.id_tipo_muestra;
                    visitaUpdate.id = visita.id;
                }

                db.SaveChanges();

                dbTransaction.Commit();

                result = new { isValid = true };
            }
            catch (Exception e)
            {
                dbTransaction.Rollback();

                var msg = e.Message;

                result = new { isValid = false, msg = msg };
            }

            return(Json(result));
        }