示例#1
0
        private List <Int32> numeroReferencia()
        {
            var referencia = DateTime.Now.Year.ToString().Substring(2) + "-0000";

            try
            {
                SOLICITUD lastSolicitud = db.SOLICITUDs.OrderByDescending(s => s.id_solicitud).First();
                referencia = lastSolicitud.no_referencia;
            }
            catch (Exception e) { }

            var correlativo = Int32.Parse(referencia.Substring(3)) + 1;
            var year        = Int32.Parse(referencia.Substring(0, 2));

            var nowYear = Int32.Parse(DateTime.Now.Year.ToString().Substring(2));

            if (year != nowYear)
            {
                correlativo = 1;
                year        = nowYear;
            }

            List <Int32> list = new List <Int32>();

            list.Add(correlativo);
            list.Add(year);

            return(list);
        }
        public JsonResult Crear(SolicitudViewModel solicitud)
        {
            var resultado = new baseRespuesta();

            resultado = validaciones(solicitud);

            if (resultado.ok == true)
            {
                EntitiesNoMasAccidentes          bd          = new EntitiesNoMasAccidentes();
                NoMasAccidentes.Models.SOLICITUD solicitudes = new SOLICITUD();

                solicitudes.TIPO_SOLICITUD_ID_TIPOSOLICI = solicitud.tipo_solicitud;
                solicitudes.DESCRIPCION_SOLICITUD        = solicitud.detalle_solicitud;
                solicitudes.ACTIVO_SOLICITUD             = "S";
                solicitudes.FECHA_SOLICITUD = DateTime.Now;
                var idCliente = bd.CLIENTE.FirstOrDefault(e => e.USUARIO.USUARIO1 == User.Identity.Name).ID_CLIENTE;
                solicitudes.CLIENTE_ID_CLIENTE = idCliente;
                solicitudes.ESTADO             = "En Revisión";


                bd.SOLICITUD.Add(solicitudes);
                bd.SaveChanges();
                resultado.mensaje = "<i class='zmdi zmdi-check zmdi-hc-fw'></i>Solicitud Registrada Correctamente</br>";;
            }
            else
            {
                resultado.mensaje = "<b>Error</b></br>" + resultado.mensaje;
            }
            return(Json(resultado));
        }
示例#3
0
        public ActionResult IniciarProceso(int idSolicitud)
        {
            var     username = User.Identity.GetUserName();
            AppUser user     = UserManager.FindByName(username);

            EMPLEADO empleado = db.EMPLEADOes.First(e => e.id_aspnet_user == user.Id);

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

            if (solicitud.PROCESO_ANALISTA.Count(pa => pa.empleado_id == empleado.id_empleado) != 1)
            {
                return(View("Error", new string[] { "Permiso denegado" }));
            }

            PROCESO_ANALISTA procesoAnalista = solicitud.PROCESO_ANALISTA.Single(pa => pa.empleado_id == empleado.id_empleado);

            procesoAnalista.fecha_inicio = DateTime.Now;
            procesoAnalista.id_estado_proceso_analista = 2;

            db.SaveChanges();

            // enviar notificacion
            Notificacion notificacion = new Notificacion(empleado.id_empleado, "Ha iniciado el analisis de la solicitud " + solicitud.no_referencia, "", Url.Action("Detalle", "Solicitud", new { id = idSolicitud }));

            notificacion.setReceptor();
            notificacion.send();

            return(RedirectToAction("Administrar", "Analisis", new { idSolicitud = idSolicitud }));
        }
示例#4
0
        public ActionResult Administrar(int idSolicitud)
        {
            EMPLEADO  empleado  = this.empleado();
            SOLICITUD solicitud = db.SOLICITUDs.Find(idSolicitud);

            PROCESO_ANALISTA procesoAnalista = solicitud.PROCESO_ANALISTA.Single(pa => pa.empleado_id == empleado.id_empleado);

            List <ANALISIS_EMPLEADO> analisis = db.ANALISIS_EMPLEADO.Where(ae => ae.DETALLE_SOLICITUD.id_solicitud == idSolicitud && ae.id_empleado == empleado.id_empleado).ToList();

            var reportesFinalizados = true;

            foreach (ANALISIS_EMPLEADO analisi in analisis)
            {
                if (analisi.REPORTEs.Count() == 0)
                {
                    reportesFinalizados = false;
                }
            }

            ViewBag.Analisis            = analisis;
            ViewBag.ProcesoAnalista     = procesoAnalista;
            ViewBag.reportesFinalizados = reportesFinalizados;

            return(View(solicitud));
        }
示例#5
0
        public bool read()
        {
            try
            {
                SOLICITUD solicitud = Conexion.entities.SOLICITUD.First(f => f.IDSOLICITUD == this.idSolicitud);

                this.idSolicitud     = Convert.ToInt32(solicitud.IDSOLICITUD);
                this.codigoDocumento = solicitud.CODIGODOCUMENTO;
                this.descripcion     = solicitud.DESCRIPCION;
                this.fechaSolicitud  = Convert.ToDateTime(solicitud.FECHASOLICITUD);
                this.fechaInicio     = Convert.ToDateTime(solicitud.FECHAINICIO);
                this.fechaTermino    = Convert.ToDateTime(solicitud.FECHATERMINO);
                this.idTipoPermiso   = Convert.ToInt32(solicitud.IDTIPOPERMISO);
                this.rutSolicitante  = solicitud.RUT;
                this.rutAutorizante  = solicitud.AUTORIZADOR;
                this.idEstado        = Convert.ToInt32(solicitud.IDESTADO);
                this.idMotivo        = Convert.ToInt32(solicitud.IDMOTIVO);

                return(true);
            }
            catch (Exception e)
            {
                return(false);
            }
        }
示例#6
0
        public bool create()
        {
            SOLICITUD solicitud = new SOLICITUD();

            try
            {
                solicitud.IDSOLICITUD     = this.idSolicitud;
                solicitud.CODIGODOCUMENTO = this.codigoDocumento;
                solicitud.DESCRIPCION     = this.descripcion;
                solicitud.FECHASOLICITUD  = this.fechaSolicitud;
                solicitud.FECHAINICIO     = this.fechaInicio;
                solicitud.FECHATERMINO    = this.fechaTermino;
                solicitud.IDTIPOPERMISO   = this.idTipoPermiso;
                solicitud.RUT             = this.rutSolicitante;
                solicitud.AUTORIZADOR     = this.rutAutorizante;
                solicitud.IDESTADO        = this.idEstado;
                solicitud.IDMOTIVO        = this.idMotivo;

                Conexion.entities.SOLICITUD.Add(solicitud);

                Conexion.entities.SaveChanges();
                return(true);
            }
            catch (Exception e)
            {
                Conexion.entities.SOLICITUD.Local.Clear();
                return(false);
            }
        }
示例#7
0
        public async Task <ActionResult> DeleteConfirmed(int id)
        {
            SOLICITUD sOLICITUD = await db.SOLICITUD.FindAsync(id);

            db.SOLICITUD.Remove(sOLICITUD);
            await db.SaveChangesAsync();

            return(RedirectToAction("Index"));
        }
示例#8
0
        public ActionResult ExportarCSV(int idSolicitud)
        {
            SOLICITUD solicitud = db.SOLICITUDs.Find(idSolicitud);

            string attachment = "attachment; filename=solicitud_" + solicitud.no_referencia + ".csv";

            Response.Clear();
            Response.ClearHeaders();
            Response.ClearContent();
            Response.AddHeader("content-disposition", attachment);
            Response.ContentType = "text/csv";
            Response.AddHeader("Pragma", "public");

            var           sb   = new StringBuilder();
            List <string> line = new List <string>();

            foreach (DETALLE_SOLICITUD detalle in solicitud.DETALLE_SOLICITUD)
            {
                line.Add(solicitud.no_referencia);
                line.Add(solicitud.fecha_inicio.Value.ToShortDateString());
                line.Add(solicitud.fecha_finalizacion.Value.ToShortDateString());
                line.Add(solicitud.VISITAs.First().SITIO_MUESTREO.nombre_sitio);
                line.Add(solicitud.VISITAs.First().SITIO_MUESTREO.lat.ToString());
                line.Add(solicitud.VISITAs.First().SITIO_MUESTREO.lng.ToString());

                List <DETALLE_VISITA> detalleVisita = solicitud.VISITAs.First().DETALLE_VISITA.ToList();

                foreach (DETALLE_VISITA visita in detalleVisita)
                {
                    line.Add(visita.MUESTRA.nombre_muestra + "(" + visita.MUESTRA.expresado + ")");
                    line.Add(visita.value.ToString());
                }

                line.Add(detalle.ANALISI.AREA.nombre_area);
                line.Add(detalle.ANALISIS_EMPLEADO.First().EMPLEADO.nombre_empleado);
                line.Add(detalle.ANALISI.nombre);

                REPORTE reporte = detalle.ANALISIS_EMPLEADO.First().REPORTEs.First();

                line.Add(reporte.resultado.ToString());
                line.Add(reporte.incerteza.ToString());
                line.Add(reporte.limite_deteccion.ToString());
                line.Add(reporte.metodo);
                line.Add(reporte.unidades);

                string lineString = string.Join(";", line.ToArray());
                line.Clear();

                sb.AppendLine(lineString);
            }

            Response.Write(sb.ToString());

            return(null);
        }
示例#9
0
        public ActionResult Cerrar(int idSolicitud)
        {
            SOLICITUD solicitud = db.SOLICITUDs.Find(idSolicitud);

            solicitud.id_estado         = 4; // cerrado
            solicitud.id_estado_proceso = 7; // cerrado

            db.SaveChanges();

            return(Json(new { valid = true }));
        }
示例#10
0
            public static bool AgregarSolicitud(dbDataContext db, long idpaciente, long iddoctor, DateTime fecha_emision,
                                                DateTime fecha_entrega, int no_factura, string nombres, string giro, string nit, string nrc, bool retencion,
                                                bool CFiscal, decimal ptje_iva, decimal ptje_retencion, decimal monto_gravado, decimal monto_iva, decimal subtotal,
                                                decimal monto_exento, decimal monto_retencion, decimal monto_total, List <SOLICITUD_DETALLE> Detalle)
            {
                try
                {
                    var reg = new SOLICITUD
                    {
                        ID_SOLICITUD         = ((long?)db.SOLICITUDs.Select(c => (long?)c.ID_SOLICITUD).Max() ?? 0) + 1,
                        ID_DOCTOR            = iddoctor,
                        ID_PACIENTE          = idpaciente,
                        ID_USUARIO_CREO      = CTRL.Datos.idusuario,
                        FECHA_EMISION        = fecha_emision,
                        FECHA_ENTREGA        = fecha_entrega,
                        NO_FACTURA           = no_factura,
                        NOMBRES              = nombres,
                        GIRO                 = giro,
                        NIT                  = nit,
                        NRC                  = nrc,
                        CREDITO_FISCAL       = CFiscal,
                        RETENCION            = retencion,
                        PORCENTAJE_IVA       = ptje_iva,
                        PORCENTAJE_RETENCION = ptje_retencion,
                        MONTO_GRAVADO        = monto_gravado,
                        MONTO_IVA            = monto_iva,
                        SUBTOTAL             = subtotal,
                        MONTO_EXENTO         = monto_exento,
                        MONTO_RETENCION      = monto_retencion,
                        TOTAL                = monto_total
                    };

                    //ASIGNANDO ID A DETALLE
                    foreach (SOLICITUD_DETALLE item in Detalle)
                    {
                        item.ID_SOLICITUD_DETALLE = reg.ID_SOLICITUD + "-" + Detalle.IndexOf(item);
                    }

                    reg.SOLICITUD_DETALLEs.AddRange(Detalle);

                    db.SOLICITUDs.InsertOnSubmit(reg);

                    db.SubmitChanges();

                    return(true);
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Ha ocurrido un error al agregar el registro.\n\n" + ex.Message, "SysLab", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    return(false);
                }
            }
示例#11
0
        public async Task <ActionResult> Edit([Bind(Include = "id_solicitud,sol_fecha,usuario,fecha_progra,solicitante,sede,tecnico")] SOLICITUD sOLICITUD)
        {
            if (ModelState.IsValid)
            {
                db.Entry(sOLICITUD).State = EntityState.Modified;
                await db.SaveChangesAsync();

                return(RedirectToAction("Index"));
            }
            ViewBag.sede    = new SelectList(db.SEDE, "id_sede", "sede_nombre", sOLICITUD.sede);
            ViewBag.tecnico = new SelectList(db.TECNICO, "id_tecnico", "tec_nom", sOLICITUD.tecnico);
            ViewBag.usuario = new SelectList(db.USUARIO, "id_usuario", "usu_nombre", sOLICITUD.usuario);
            return(View(sOLICITUD));
        }
示例#12
0
        public ActionResult AbrirCorreccion(int idSolicitud)
        {
            SOLICITUD solicitud = db.SOLICITUDs.Find(idSolicitud);

            solicitud.id_estado_proceso  = 6; // en correccion
            solicitud.informe_generado   = 0;
            solicitud.fecha_finalizacion = null;

            //TODO: Guardar informacion de correcion

            db.SaveChanges();

            return(Json(new { valid = true }));
        }
示例#13
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();
            }
        }
示例#14
0
        public ActionResult EnviarResultado(int idSolicitud)
        {
            object result;

            EMPLEADO empleado = this.empleado();

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

            PROCESO_ANALISTA procesoAnalista = db.PROCESO_ANALISTA.Single(pa => pa.empleado_id == empleado.id_empleado && pa.solicitud_id == solicitud.id_solicitud);

            procesoAnalista.fecha_fin = DateTime.Now;
            procesoAnalista.id_estado_proceso_analista = 3;
            db.SaveChanges();

            var reportesCompletos = true;

            foreach (PROCESO_ANALISTA procesosAnalista in solicitud.PROCESO_ANALISTA)
            {
                if (procesosAnalista.id_estado_proceso_analista != 3)
                {
                    reportesCompletos = false;
                }
            }

            // enviar notificacion
            Notificacion notificacion = new Notificacion(empleado.id_empleado, "Analisis de solicitud " + solicitud.no_referencia + " finalizados.", "Se finalizaron los analisis y ingresaron los resultados.", Url.Action("Detalle", "Solicitud", new { id = solicitud.id_solicitud }));

            notificacion.setReceptor();
            notificacion.send();

            if (reportesCompletos)
            {
                solicitud.id_estado_proceso = 4;
            }

            db.SaveChanges();

            if (reportesCompletos)
            {
                // enviar notificacion
                Notificacion notificacionCompleto = new Notificacion(empleado.id_empleado, "Reportes de solicitud " + solicitud.no_referencia + " finalizados.", "Se finalizaron todos los reportes y fueron enviados.", Url.Action("Detalle", "Solicitud", new { id = solicitud.id_solicitud }));
                notificacionCompleto.setReceptor();
                notificacionCompleto.send();
            }

            result = new { valid = true };
            return(Json(result));
        }
 public bool Modificar()
 {
     try
     {
         SOLICITUD solicitud = conexion.Entidad.SOLICITUD
                               .First(p => p.ID_SOLICITUD == Id);
         solicitud.ESTADO_SOLICITUD = (byte)EstadoSolicitud.Id;
         conexion.Entidad.SaveChanges();
         return(true);
     }
     catch (Exception ex)
     {
         Console.WriteLine(ex);
         return(false);
     }
 }
示例#16
0
        public ActionResult Detalle(int id)
        {
            SOLICITUD solicitud = db.SOLICITUDs.Find(id);

            Dictionary <string, List <string> > analisisPorEmpleado = new Dictionary <string, List <string> >();

            foreach (DETALLE_SOLICITUD detalle in  solicitud.DETALLE_SOLICITUD)
            {
                try
                {
                    ANALISIS_EMPLEADO analisisEmpleado = detalle.ANALISIS_EMPLEADO.First();

                    String nombreEmpleado = analisisEmpleado.EMPLEADO.nombre_empleado;

                    if (analisisPorEmpleado.Where(ape => ape.Key.Equals(nombreEmpleado)).Count() > 0)
                    {
                        analisisPorEmpleado.Where(ape => ape.Key.Equals(nombreEmpleado)).First().Value.Add(detalle.ANALISI.nombre);
                    }
                    else
                    {
                        List <string> list = new List <string>();
                        list.Add(detalle.ANALISI.nombre);

                        analisisPorEmpleado.Add(nombreEmpleado, list);
                    }
                }
                catch (Exception e)
                {
                }
            }

            try
            {
                VISITA visita = db.VISITAs.First(v => v.id_solicitud == id);
                ViewBag.Visita = visita;
            }
            catch (Exception e)
            {
                ViewBag.Visita = null;
            }

            ViewBag.AnalisisPorEmpleado = analisisPorEmpleado;

            return(View(solicitud));
        }
示例#17
0
        public ActionResult AsignarAnalisis(int idSolicitud, List <string> checkAnalisis)
        {
            SOLICITUD solicitud = db.SOLICITUDs.Find(idSolicitud);

            List <AREA>    areas    = db.AREAs.ToList();
            List <ANALISI> analisis = new List <ANALISI>();

            for (var i = 0; i < checkAnalisis.Count; i++)
            {
                ANALISI analisi = db.ANALISIS.Find(Int32.Parse(checkAnalisis[i]));
                analisis.Add(analisi);
            }

            ViewBag.Analisis  = analisis;
            ViewBag.Solicitud = solicitud;
            ViewBag.Areas     = areas;
            return(PartialView());
        }
示例#18
0
        public ActionResult FormDetalleSolicitud(int idSolicitud)
        {
            SOLICITUD solicitud = db.SOLICITUDs.Find(idSolicitud);

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

            foreach (DETALLE_SOLICITUD detalle in solicitud.DETALLE_SOLICITUD)
            {
                selectedItems.Add(detalle.id_analisis);
            }

            List <AREA> areas = db.AREAs.ToList();

            ViewBag.Solicitud     = solicitud;
            ViewBag.SelectedItems = selectedItems;
            ViewBag.Areas         = areas;
            return(View());
        }
示例#19
0
        public ActionResult CancelarCorreccion(int idSolicitud)
        {
            SOLICITUD solicitud = db.SOLICITUDs.Find(idSolicitud);

            solicitud.id_estado         = 3;
            solicitud.id_estado_proceso = 5;
            solicitud.informe_generado  = 0;

            foreach (PROCESO_ANALISTA procesoAnalista in solicitud.PROCESO_ANALISTA)
            {
                procesoAnalista.id_estado_proceso_analista = 6;
                // TODO notify
            }

            db.SaveChanges();

            return(Json(new { valid = true }));
        }
示例#20
0
        // GET: SOLICITUDES/Details/5
        public async Task <ActionResult> Details(int?id)
        {
            if (Session["User"] != null)
            {
                if (id == null)
                {
                    return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
                }
                SOLICITUD sOLICITUD = await db.SOLICITUD.FindAsync(id);

                if (sOLICITUD == null)
                {
                    return(HttpNotFound());
                }
                return(View(sOLICITUD));
            }
            return(RedirectToAction("index", "Home"));
        }
示例#21
0
        // GET: Analista
        public ActionResult Index()
        {
            var     username = User.Identity.GetUserName();
            AppUser user     = UserManager.FindByName(username);

            EMPLEADO empleado = db.EMPLEADOes.First(e => e.id_aspnet_user == user.Id);

            List <PROCESO_ANALISTA> procesosAnalista = db.PROCESO_ANALISTA.Where(pa => pa.empleado_id == empleado.id_empleado && pa.fecha_asignacion != null).OrderByDescending(pa => pa.SOLICITUD.no_referencia).ToList();

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

            List <ANALISI> analisis = db.ANALISIS.Where(a => a.id_area == empleado.id_area).ToList();

            foreach (PROCESO_ANALISTA procesoAnalista in procesosAnalista)
            {
                SOLICITUD solicitud = procesoAnalista.SOLICITUD;

                List <DETALLE_SOLICITUD> detallesSolicitudEmpleado = solicitud.DETALLE_SOLICITUD.Where(ds => ds.ANALISIS_EMPLEADO.First().id_empleado == empleado.id_empleado).ToList();

                foreach (ANALISI analisisElem in analisis)
                {
                    AnalisisSolicitud analisisSolicitudElem = new AnalisisSolicitud();

                    analisisSolicitudElem.analisis  = analisisElem;
                    analisisSolicitudElem.solicitud = solicitud;

                    var detalleSolicitud = detallesSolicitudEmpleado.SingleOrDefault(ds => ds.id_analisis == analisisElem.id_analisis);

                    if (detalleSolicitud != null)
                    {
                        analisisSolicitudElem.asignado = true;
                    }

                    analisisSolicitud.Add(analisisSolicitudElem);
                }
            }

            ViewBag.AnalisisSolicitud = analisisSolicitud;
            ViewBag.Analisis          = analisis;

            return(View(procesosAnalista));
        }
示例#22
0
        public ActionResult Index(string fechas, DateTime fecha_inicio, DateTime fecha_fin, string estado)
        {
            var     username = User.Identity.GetUserName();
            AppUser user     = UserManager.FindByName(username);

            EMPLEADO empleado = db.EMPLEADOes.First(e => e.id_aspnet_user == user.Id);

            List <PROCESO_ANALISTA> procesosAnalista = this.FiltrarProcesoAnalista(empleado, fechas, fecha_inicio, fecha_fin, estado);

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

            List <ANALISI> analisis = db.ANALISIS.Where(a => a.id_area == empleado.id_area).ToList();

            foreach (PROCESO_ANALISTA procesoAnalista in procesosAnalista)
            {
                SOLICITUD solicitud = procesoAnalista.SOLICITUD;

                List <DETALLE_SOLICITUD> detallesSolicitudEmpleado = solicitud.DETALLE_SOLICITUD.Where(ds => ds.ANALISIS_EMPLEADO.First().id_empleado == empleado.id_empleado).ToList();

                foreach (ANALISI analisisElem in analisis)
                {
                    AnalisisSolicitud analisisSolicitudElem = new AnalisisSolicitud();

                    analisisSolicitudElem.analisis  = analisisElem;
                    analisisSolicitudElem.solicitud = solicitud;

                    var detalleSolicitud = detallesSolicitudEmpleado.SingleOrDefault(ds => ds.id_analisis == analisisElem.id_analisis);

                    if (detalleSolicitud != null)
                    {
                        analisisSolicitudElem.asignado = true;
                    }

                    analisisSolicitud.Add(analisisSolicitudElem);
                }
            }

            ViewBag.AnalisisSolicitud = analisisSolicitud;
            ViewBag.Analisis          = analisis;

            return(View(procesosAnalista));
        }
 public bool Buscar()
 {
     try
     {
         SOLICITUD solicitud = conexion.Entidad.SOLICITUD
                               .First(p => p.ID_SOLICITUD == Id);
         Id              = solicitud.ID_SOLICITUD;
         Asunto          = solicitud.ASUNTO;
         Mensaje         = solicitud.MENSAJE;
         EstadoSolicitud = new EstadoSolicitud {
             Id = solicitud.ESTADO_SOLICITUD
         };
         return(true);
     }
     catch (Exception ex)
     {
         Console.WriteLine(ex);
         return(false);
     }
 }
示例#24
0
        public ResponseData crearSolicitud(SOLICITUD solicitud)
        {
            ResponseData respuesta = new ResponseData();

            if (solicitud != null)
            {
                solicitud.fechacreacion   = DateTime.Now;
                solicitud.numerosolicitud = 0;
                this.context.SOLICITUD.Add(solicitud);
                this.context.SaveChanges();
                respuesta.mensaje   = "Solicitud creada con exito";
                respuesta.resultado = "OK";
            }
            else
            {
                respuesta.mensaje   = "Llegaron datos nulos";
                respuesta.resultado = "Fallo";
            }
            return(respuesta);
        }
示例#25
0
        // GET: SOLICITUDES/Edit/5
        public async Task <ActionResult> Edit(int?id)
        {
            if (Session["User"] != null)
            {
                if (id == null)
                {
                    return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
                }
                SOLICITUD sOLICITUD = await db.SOLICITUD.FindAsync(id);

                if (sOLICITUD == null)
                {
                    return(HttpNotFound());
                }
                ViewBag.sede    = new SelectList(db.SEDE, "id_sede", "sede_nombre", sOLICITUD.sede);
                ViewBag.tecnico = new SelectList(db.TECNICO, "id_tecnico", "tec_nom", sOLICITUD.tecnico);
                ViewBag.usuario = new SelectList(db.USUARIO, "id_usuario", "usu_nombre", sOLICITUD.usuario);
                return(View(sOLICITUD));
            }
            return(RedirectToAction("index", "Home"));
        }
示例#26
0
        public ActionResult IniciarAnalisis(int idSolicitud)
        {
            SOLICITUD solicitud = db.SOLICITUDs.Find(idSolicitud);
            EMPLEADO  empleado  = this.empleado();

            if (solicitud.DETALLE_SOLICITUD.First().ANALISIS_EMPLEADO.FirstOrDefault() == null)
            {
                return(Json(new { valid = false, msg = "No se han asignado trabajos a los analistas" }));
            }

            if (solicitud.VISITAs.Count() == 0)
            {
                return(Json(new { valid = false, msg = "La solicitud no tiene informacion de visita" }));
            }


            solicitud.id_estado_proceso = estadoIniciado;
            solicitud.fecha_inicio      = DateTime.Now;

            List <PROCESO_ANALISTA> procesosAnalistas = db.PROCESO_ANALISTA.Where(pa => pa.solicitud_id == idSolicitud).ToList();

            foreach (PROCESO_ANALISTA procesoAnalista in procesosAnalistas)
            {
                procesoAnalista.fecha_asignacion           = DateTime.Now;
                procesoAnalista.id_estado_proceso_analista = estadoProcesoAnalistaAsignado;

                EMPLEADO empleadoReceptor = procesoAnalista.EMPLEADO;

                // enviar notificacion
                Notificacion notificacion = new Notificacion(empleado.id_empleado, "Se ha asignado trabajo para la solicitud " + solicitud.no_referencia + ".", "-", Url.Action("Administrar", "Analisis", new { idSolicitud = solicitud.id_solicitud }));
                notificacion.setReceptor(empleadoReceptor.id_empleado);
                notificacion.send();
            }

            db.SaveChanges();

            return(Json(new { valid = true }));
        }
示例#27
0
        public SOLICITUD crearSolicitud(int idSolicitante, byte idEmpleado)
        {
            var referencia = DateTime.Now.Year.ToString().Substring(2) + "-0000";

            try
            {
                SOLICITUD lastSolicitud = db.SOLICITUDs.OrderByDescending(s => s.id_solicitud).First();
                referencia = lastSolicitud.no_referencia;
            }
            catch (Exception e) { }

            var correlativo = Int32.Parse(referencia.Substring(3)) + 1;
            var year        = Int32.Parse(referencia.Substring(0, 2));

            var nowYear = Int32.Parse(DateTime.Now.Year.ToString().Substring(2));

            if (year != nowYear)
            {
                correlativo = 1;
                year        = nowYear;
            }

            SOLICITUD solicitud = new SOLICITUD();

            solicitud.id_solicitante    = idSolicitante;
            solicitud.id_empleado       = idEmpleado;
            solicitud.id_estado         = estadoAprobado;
            solicitud.id_estado_proceso = estadoEsperaVisita;
            solicitud.fecha_creacion    = DateTime.Now;
            solicitud.no_referencia     = year.ToString() + "-" + correlativo.ToString().PadLeft(4, '0');
            solicitud.informe_generado  = 0;

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

            return(solicitud);
        }
示例#28
0
        public ActionResult CrearInforme(int idSolicitud)
        {
            Object result;

            SOLICITUD solicitud = db.SOLICITUDs.Find(idSolicitud);
            VISITA    visita    = solicitud.VISITAs.First();

            try
            {
                if (solicitud.id_estado != 3 || (solicitud.id_estado_proceso != 4 && solicitud.id_estado_proceso != 6))
                {
                    throw new Exception("No puede generar reportes con los estados actuales de la solicitud");
                }

                if (solicitud.id_estado_proceso == 6 && solicitud.fecha_finalizacion == null)
                {
                    solicitud.fecha_finalizacion = DateTime.Now;
                }

                var tipo = "O";
                if (solicitud.INFORMES.Count() > 0)
                {
                    tipo = "R";
                }

                var areas = solicitud.DETALLE_SOLICITUD.GroupBy(ds => ds.ANALISI.AREA).ToList();

                List <string>  areasInforme = new List <string>();
                List <INFORME> informes     = new List <INFORME>();

                foreach (var area in areas)
                {
                    if (area.Key.id_area < 4)
                    {
                        if (!areasInforme.Contains("FQAA"))
                        {
                            areasInforme.Add("FQAA");
                        }
                    }
                    else
                    {
                        if (!areasInforme.Contains("Bact"))
                        {
                            areasInforme.Add("Bact");
                        }
                    }
                }

                foreach (string areaInforme in areasInforme)
                {
                    List <Parametro> parametros = new List <Parametro>();
                    List <Resultado> resultados = new List <Resultado>();

                    foreach (DETALLE_VISITA detalleVisita in visita.DETALLE_VISITA)
                    {
                        Parametro parametro = new Parametro()
                        {
                            nombre    = detalleVisita.MUESTRA.nombre_muestra,
                            valor     = detalleVisita.value.ToString(),
                            expresado = detalleVisita.MUESTRA.expresado,
                        };

                        parametros.Add(parametro);
                    }

                    IEnumerable <LaboratorioMarn.DETALLE_SOLICITUD> detallesSolicitud = solicitud.DETALLE_SOLICITUD.ToList();

                    foreach (DETALLE_SOLICITUD detalle in detallesSolicitud)
                    {
                        REPORTE reporte = detalle.ANALISIS_EMPLEADO.First().REPORTEs.First();

                        Resultado resultado = new Resultado()
                        {
                            analisis        = detalle.ANALISI.nombre,
                            resultado       = reporte.resultado.ToString(),
                            incerteza       = reporte.incerteza.ToString(),
                            unidades        = reporte.unidades,
                            limiteDeteccion = reporte.limite_deteccion.ToString(),
                            metodo          = detalle.ANALISI.metodo
                        };

                        resultados.Add(resultado);
                    }

                    InformeSolicitud informeSolicitud = new InformeSolicitud()
                    {
                        tipo               = tipo,
                        numeroReferencia   = solicitud.no_referencia,
                        solicitante        = solicitud.SOLICITANTE.nombre_solicitante,
                        fechaInicio        = solicitud.fecha_inicio.Value.ToShortDateString(),
                        fechaFinalizacion  = solicitud.fecha_finalizacion.Value.ToShortDateString(),
                        direccion          = visita.SITIO_MUESTREO.direccion_sitio,
                        fechaTomaMuestra   = visita.fecha_visita.Value.ToString(),
                        fechaRecepcion     = visita.fecha_entrega.Value.ToShortDateString(),
                        responsableMuestra = visita.EMPLEADO.nombre_empleado,
                        tipoMuestra        = visita.TIPO_MUESTRA.nombre_tipo_muestra,
                        procedencia        = visita.PROCEDENCIA.nombre_procedencia,
                        areas              = areaInforme,
                        fechaGeneracion    = DateTime.Now.ToShortDateString(),
                        Parametros         = parametros,
                        Resultados         = resultados
                    };

                    string informeJson = JsonConvert.SerializeObject(informeSolicitud);

                    INFORME informe = new INFORME()
                    {
                        data           = informeJson,
                        fecha_creacion = DateTime.Now,
                        tipo           = tipo,
                        id_solicitud   = solicitud.id_solicitud,
                        areas          = areaInforme
                    };

                    solicitud.INFORMES.Add(informe);

                    informes.Add(informe);
                }

                solicitud.informe_generado  = 1;
                solicitud.id_estado_proceso = 5;

                foreach (PROCESO_ANALISTA procesoAnalista in solicitud.PROCESO_ANALISTA)
                {
                    procesoAnalista.id_estado_proceso_analista = 6;
                }

                db.SaveChanges();

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

                foreach (INFORME informe in informes)
                {
                    informesIds.Add(informe.id_informe);
                }

                result = new { valid = true, informes = informesIds };
            }
            catch (Exception e)
            {
                result = new { valid = false, msg = e.Message };
            }

            return(Json(result));
        }
示例#29
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));
        }
示例#30
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));
        }