/// <summary>
        ///     Búsqueda predictiva sobre las UADyCS y unidades médicas
        ///     Tiene prioridad las unidades médicas sobre las UADyCS
        /// </summary>
        /// <param name="Concepto"></param>
        /// <param name="IdCatTipoTramite"></param>
        /// <returns></returns>
        public CalendarioDTO GetBusqueda(string Concepto, int IdCatTipoTramite)
        {
            var calendarioDto = new CalendarioDTO();

            Concepto = Concepto.ToUpper();
            using (var modelo = new ISSSTEEntities())
            {
                var primerOcurrencia = (from a in modelo.UnidadMedica
                                        join b in modelo.TramiteUnidadAtencion
                                        on a.UnidadAtencionId equals b.UnidadAtencionId
                                        where a.Descripcion.ToUpper().Contains(Concepto) &&
                                        b.CatTipoTramiteId == IdCatTipoTramite
                                        select new DuplaValoresDTO
                {
                    Id = b.TramiteUnidadAtencionId,
                    IdAux = a.UnidadMedicaId
                }).FirstOrDefault() ?? (from a in modelo.UnidadAtencion
                                        join b in modelo.TramiteUnidadAtencion
                                        on a.UnidadAtencionId equals b.UnidadAtencionId
                                        where a.Descripcion.ToUpper().Contains(Concepto) &&
                                        b.CatTipoTramiteId == IdCatTipoTramite
                                        select new DuplaValoresDTO
                {
                    Id = b.TramiteUnidadAtencionId
                }).FirstOrDefault();

                if (primerOcurrencia != null)
                {
                    calendarioDto.TramiteUnidadAtencionId = primerOcurrencia.Id;
                    calendarioDto.UnidadMedicaId          = primerOcurrencia.IdAux;
                }
            }
            return(calendarioDto);
        }
예제 #2
0
        public JsonResult GetTramiteUnidadMedicaEspecial(CalendarioDTO CalendarioDto)
        {
            var catalogoService = new CatalogoService();
            var combo           = catalogoService.GetTramiteUnidadMedicaEspecial(CalendarioDto);
            var respuesta       = Tag.GeneracionCuerpoSelect(true, combo);

            return(Json(respuesta, JsonRequestBehavior.AllowGet));
        }
예제 #3
0
        /// <summary>
        ///     combo de unidades por tipo de trámite
        /// </summary>
        /// <param name="CalendarioDto"></param>
        /// <returns></returns>
        public JsonResult GetTramiteUnidadMedica(CalendarioDTO CalendarioDto)
        {
            var catalogoService = new CatalogoService();
            //CalendarioDto.CatTipoTramiteId = IdSesionTipoTramite;
            var combo     = catalogoService.GetTramiteUnidadMedica(CalendarioDto);
            var respuesta = Tag.GeneracionCuerpoSelect(false, combo);

            return(Json(respuesta, JsonRequestBehavior.AllowGet));
        }
        /// <summary>
        ///     Calendario para agendar citas
        /// </summary>
        /// <param name="CalendarioDto"></param>
        /// <returns></returns>
        public ActionResult Calendario(CalendarioDTO CalendarioDto)
        {
            var catalogoService = new CatalogoService();

            CalendarioDto.CatTipoTramiteId = IdSesionTipoTramite;
            CalendarioDto.IdFechaLimite    = IdFechaLimite;
            TempData["Fecha"] = CalendarioDto.MesAnio;
            var respuesta = catalogoService.GetBusquedaHorario(CalendarioDto);

            return(PartialView(respuesta));
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="CalendarioDto"></param>
        /// <returns></returns>
        public List <DuplaValoresDTO> GetTramiteUnidadMedicaEspecial(CalendarioDTO CalendarioDto)
        {
            List <DuplaValoresDTO> duplaValoresDto;

            using (var modelo = new ISSSTEEntities())
            {
                duplaValoresDto =
                    (from a in modelo.UnidadMedica
                     join b in modelo.UnidadAtencion
                     on a.UnidadAtencionId equals b.UnidadAtencionId
                     where a.EsActivo &&
                     a.UnidadAtencionId == CalendarioDto.UnidadAtencionId
                     select new DuplaValoresDTO
                {
                    Id = a.UnidadMedicaId,
                    Valor = a.Descripcion
                }).Distinct()
                    .ToList();
            }
            return(duplaValoresDto);
        }
        /// <summary>
        ///     Catálogo de Unidades de Atención por tipo de trámite
        /// </summary>
        /// <param name="CalendarioDto"></param>
        /// <returns></returns>
        public List <DuplaValoresDTO> GetTramiteUnidadMedica(CalendarioDTO CalendarioDto)
        {
            List <DuplaValoresDTO> duplaValoresDto;

            using (var modelo = new ISSSTEEntities())
            {
                var QueryBase = modelo.UnidadMedica
                                .Join(modelo.TramiteUnidadAtencion,
                                      um => um.UnidadAtencionId, tua => tua.UnidadAtencionId,
                                      (um, tua) => new { um, tua })
                                .Where(s => s.tua.CatTipoTramiteId == CalendarioDto.CatTipoTramiteId)
                                .AsQueryable();


                if (!string.IsNullOrEmpty(CalendarioDto.PalabraBusqueda))
                {
                    CalendarioDto.PalabraBusqueda = CalendarioDto.PalabraBusqueda.ToUpper();
                    QueryBase = QueryBase
                                .Where(S => (S.um.Descripcion).ToUpper().Contains(CalendarioDto.PalabraBusqueda));
                }

                if (CalendarioDto.TramiteUnidadAtencionId != 0)
                {
                    QueryBase = QueryBase.Where(s =>
                                                s.tua.TramiteUnidadAtencionId ==
                                                CalendarioDto.TramiteUnidadAtencionId);
                }

                duplaValoresDto = QueryBase.Select(s => new DuplaValoresDTO
                {
                    Id    = s.um.UnidadMedicaId,
                    IdAux = s.tua.TramiteUnidadAtencionId,
                    Valor = s.um.Descripcion
                }).ToList();
            }
            return(duplaValoresDto);
        }
        /// <summary>
        ///     Horarios por mes y unidad UADyCS
        /// </summary>
        /// <param name="CalendarioDto"></param>
        /// <returns></returns>
        public List <HorarioDTO> GetBusquedaHorario(CalendarioDTO CalendarioDto)
        {
            var dias = new List <HorarioDTO>();

            using (var modelo = new ISSSTEEntities())
            {
                var hoy = DateTime.Now;

                var diasNoLaborables = (from a in modelo.TramiteUnidadAtencion
                                        join b in modelo.DiaNoLaborable on a.TramiteUnidadAtencionId equals b.TramiteUnidadAtencionId
                                        where a.TramiteUnidadAtencionId == CalendarioDto.TramiteUnidadAtencionId && b.EsActivo
                                        select b.Fecha).ToList();

                try
                {
                    for (var i = 1; i < 32; i++)
                    {
                        var valores     = CalendarioDto.IdFechaLimite.Split(',');
                        var fechaLimite = new DateTime(int.Parse(valores[0]), int.Parse(valores[1]),
                                                       int.Parse(valores[2]));

                        var fecha     = (i < 10 ? "0" + i : "" + i) + "/" + CalendarioDto.MesAnio;
                        var fechaDate = DateTime.ParseExact(fecha, "dd/MM/yyyy", CultureInfo.CurrentCulture);
                        var esHoy     = fechaDate.Year == DateTime.Now.Year &&
                                        fechaDate.Month == DateTime.Now.Month &&
                                        fechaDate.Day == DateTime.Now.Day;
                        var horarioDto = new HorarioDTO
                        {
                            Fecha             = fechaDate,
                            EsFechaAcontecida = fechaDate < hoy && !esHoy,
                            EsDiaNoLaboral    = diasNoLaborables.Contains(fechaDate),
                            EsHoy             = esHoy
                        };
                        if (horarioDto.Fecha > fechaLimite)
                        {
                            horarioDto.EsDiaNoLaboral = true;
                        }
                        dias.Add(horarioDto);
                    }
                }
                catch
                {
                    // ignored
                }

                dias = dias.Select(F =>
                {
                    if (!F.EsFechaAcontecida && !F.EsDiaNoLaboral)
                    {
                        var citasAgendadas = (from b in modelo.Solicitud
                                              where b.EsActivo && b.FechaCita.Day == F.Fecha.Day &&
                                              b.FechaCita.Month == F.Fecha.Month &&
                                              b.FechaCita.Year == F.Fecha.Year &&
                                              b.TramiteUnidadAtencionId == CalendarioDto.TramiteUnidadAtencionId
                                              select b).Count();

                        try
                        {
                            F.Capacidad = (from b in modelo.Horario
                                           where b.EsActivo && b.EsDiaEspecial && b.DiaEspecial.Fecha.Day == F.Fecha.Day &&
                                           b.DiaEspecial.Fecha.Month == F.Fecha.Month &&
                                           b.DiaEspecial.Fecha.Year == F.Fecha.Year &&
                                           b.TramiteUnidadAtencionId == CalendarioDto.TramiteUnidadAtencionId
                                           select b.Capacidad).Sum();
                        }
                        catch
                        {
                            // ignored
                        }

                        if (F.Capacidad == 0)
                        {
                            var dia = (int)F.Fecha.DayOfWeek;
                            try
                            {
                                F.Capacidad = (from b in modelo.Horario
                                               where b.EsActivo &&
                                               b.CatTipoDiaSemanaId == dia &&
                                               b.TramiteUnidadAtencionId == CalendarioDto.TramiteUnidadAtencionId
                                               select b.Capacidad).Sum();
                            }
                            catch
                            {
                                // ignored
                            }
                        }
                        F.Capacidad      -= citasAgendadas;
                        F.EsDiaDisponible = F.Capacidad > 0;
                    }
                    return(F);
                })
                       .ToList();
            }
            return(dias);
        }
        public List <HorarioDTO> GetBusquedaHorario(CalendarioDTO CalendarioDto)
        {
            var catalogoDao = new CatalogoDAO();

            return(catalogoDao.GetBusquedaHorario(CalendarioDto));
        }
        public List <DuplaValoresDTO> GetTramiteUnidadMedicaEspecial(CalendarioDTO CalendarioDto)
        {
            var catalogoDao = new CatalogoDAO();

            return(catalogoDao.GetTramiteUnidadMedicaEspecial(CalendarioDto));
        }