public bool AreDatesCorrect(DatesDTO newDates)
        {
            if (newDates == null)
            {
                return(false);
            }

            return(newDates.CheckInDate.Date > DateTime.Now && newDates.CheckOutDate.Date > newDates.CheckInDate.Date);
        }
        public async Task <bool> EditBookingDatesAsync(int bookingId, DatesDTO newDates)
        {
            try
            {
                var booking = await _context.Bookings.FindAsync(bookingId);

                booking.CheckInDate  = newDates.CheckInDate;
                booking.CheckOutDate = newDates.CheckOutDate;
                _context.Update(booking);
                return(true);
            }
            catch (Exception)
            {
                return(false);
            }
        }
        public async Task <bool> IsRoomVacancyAsync(int roomId, DatesDTO dates, int?bookingId = null)
        {
            //if in the bookings ther's no room with given id then this room is obviously vacancy
            if (!await _context.Bookings.AnyAsync(b => b.RoomId == roomId && b.Id != bookingId))
            {
                return(true);
            }

            //if given dates colidate with current bookings then this room isn't vacany for these dates
            if (await _context.Bookings.Where(b => b.RoomId == roomId && b.Id != bookingId).AnyAsync(b => !(dates.CheckOutDate.Date < b.CheckInDate.Date || dates.CheckInDate.Date > b.CheckOutDate.Date)))
            {
                return(false);
            }

            return(true);
        }
Пример #4
0
        private async Task <IEnumerable <int> > GetVacancyRoomsAsync(DatesDTO dates)
        {
            var rooms = await GetRoomsAsync();

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

            foreach (var room in rooms)
            {
                if (await _bookingsRepository.IsRoomVacancyAsync(room.Id, dates))
                {
                    roomsIds.Add(room.Id);
                }
            }

            return(roomsIds);
        }
Пример #5
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="Fechas"></param>
        /// <param name="UADyCSIds"></param>
        /// <returns></returns>
        public async Task <NotificacionDTO> ObtenerNotificacionesPorUADyCSAsync(DatesDTO Fechas, int[] UADyCSIds)
        {
            using (var context = new ISSSTEEntities())
            {
                //PEER -> Debe levar esta inicializacion para evitar un error al hacer el count.
                List <CitaDTO> resultado = new List <CitaDTO>();

                if (UADyCSIds.Contains(Enumeracion.EnumVarios.TodasLasDelegaciones))
                {
                    return(default(NotificacionDTO));
                }

                resultado = await context.Solicitud
                            .Join(context.TramiteUnidadAtencion,
                                  Req => Req.TramiteUnidadAtencionId, Tua => Tua.TramiteUnidadAtencionId,
                                  (Req, Tua) => new { Solicitudes = Req, TramiteUnidadAtencion = Tua })
                            .Where(R => R.Solicitudes.EsActivo && R.Solicitudes.CatTipoEdoCitaId == Enumeracion.EnumTipoEdoCita.Pendiente &&
                                   R.Solicitudes.FechaCita >= Fechas.FechaInicio && R.Solicitudes.FechaCita <= Fechas.FechaFin &&
                                   UADyCSIds.Contains(R.TramiteUnidadAtencion.UnidadAtencionId)
                                   )
                            .Select(S => new CitaDTO
                {
                    SolicitudId            = S.Solicitudes.SolicitudId,
                    NumeroFolio            = S.Solicitudes.NumeroFolio,
                    FechaCita              = S.Solicitudes.FechaCita,
                    HoraCita               = S.Solicitudes.Horario.HoraInicio,
                    CatTipoTramiteConcepto = S.TramiteUnidadAtencion.CatTipoTramite.Concepto
                })
                            .ToListAsync();

                return(new NotificacionDTO
                {
                    ListaCitasPendientes = resultado,
                    NumeroCitasPendientes = resultado.Count
                });
            }
        }
        public async Task <CalendarDTO> GetAppointments(List <int> Delegations, DatesDTO Fechas, string Query = null,
                                                        int?StatusId = null, int?RequestTypeId = null)
        {
            var calendar = new CalendarDTO();

            using (var context = new ISSSTEEntities())
            {
                var appointmentQuery =
                    context.Solicitud
                    .Join(context.TramiteUnidadAtencion,
                          Req => Req.TramiteUnidadAtencionId, Tua => Tua.TramiteUnidadAtencionId,
                          (Req, Tua) => new { req = Req, tua = Tua })
                    .Select(S => new
                {
                    Solicitud             = S.req,
                    TrammiteUnidadAtencio = S.tua,
                    Paciente = S.req.Involucrado.FirstOrDefault(
                        P => P.CatTipoInvolucradoId == Enumeracion.EnumTipoInvolucrado.Paciente),
                    Promovente = S.req.Involucrado.FirstOrDefault(
                        P => P.CatTipoInvolucradoId == Enumeracion.EnumTipoInvolucrado.Promovente)
                })
                    .AsQueryable();

                if (!string.IsNullOrEmpty(Query))
                {
                    appointmentQuery = appointmentQuery
                                       .Where(R => R.Solicitud.NumeroFolio.ToLower().Contains(Query.ToLower()) ||
                                              R.Paciente.Persona.Nombre.ToLower().Contains(Query.ToLower()) ||
                                              R.Promovente.Persona.Nombre.ToLower().Contains(Query.ToLower())
                                              );
                }

                if (!Delegations.Contains(Enumeracion.EnumVarios.TodasLasDelegaciones))
                {
                    appointmentQuery = appointmentQuery
                                       .Where(R => Delegations.Contains(R.TrammiteUnidadAtencio.UnidadAtencionId));
                }

                if (StatusId.HasValue)
                {
                    appointmentQuery = appointmentQuery.Where(R => R.Solicitud.CatTipoEdoCitaId == StatusId);
                }

                if (RequestTypeId.HasValue)
                {
                    appointmentQuery = appointmentQuery.Where(R => R.TrammiteUnidadAtencio.CatTipoTramiteId == RequestTypeId);
                }

                if (Fechas.FechaInicio.HasValue && Fechas.FechaFin.HasValue)
                {
                    appointmentQuery = appointmentQuery.Where(R => R.Solicitud.FechaCita >= Fechas.FechaInicio &&
                                                              R.Solicitud.FechaCita <= Fechas.FechaFin);
                }

                var result =
                    appointmentQuery.Select(S => new AppointmentResultDTO
                {
                    Id           = S.Solicitud.SolicitudId,
                    StartDate    = S.Solicitud.FechaCita,
                    EndDate      = S.Solicitud.FechaCita, //MFP revisar
                    SolicitudId  = S.Solicitud.SolicitudId,
                    NumeroFolio  = S.Solicitud.NumeroFolio,
                    HoraCita     = S.Solicitud.Horario != null ? S.Solicitud.Horario.HoraInicio : default(TimeSpan),
                    ColorTramite = S.TrammiteUnidadAtencio.CatTipoTramite.Semaforo ?? string.Empty
                }
                                            );

                calendar.ListAppointments = await result.ToListAsync();

                return(calendar);
            }
        }
        public async Task <decimal> CalculateTotalPrice(int roomId, int numberOfPerson, DatesDTO dates)
        {
            var room = await _context.Rooms.FindAsync(roomId);

            if (room == null)
            {
                return(0);
            }

            //full 24h for example. 12.11 - 14.11 gives 48h (booking from 11 o'clock 12.11 to 11 o'clock 14.11)
            int days = (dates.CheckOutDate.Date - dates.CheckInDate.Date).Days;

            return((decimal)(room.PriceForDay * numberOfPerson * days));
        }
 protected bool BeAValidDates(DatesDTO dates)
 {
     return(_bookingsRepository.AreDatesCorrect(dates));
 }
Пример #9
0
        //public bool EsUsuarioBloqueado(int CatTipoTramiteId)
        //{
        //    using (var context = new ISSSTEEntities())
        //    {
        //        var result = context.Involucrado
        //            .Where(inv => inv.EsUsuarioBloqueado == true
        //            && inv.CatTipoInvolucradoId == Enumeracion.EnumTipoInvolucrado.Paciente
        //            && inv.Solicitud.TramiteUnidadAtencion.CatTipoTramiteId == CatTipoTramiteId);

        //        return result.Any();
        //    }

        //}


        /// <summary>
        ///     Obtiene una lista de solicitudes por diversos parámetros
        /// </summary>
        /// <param name="PageSize"></param>
        /// <param name="Page"></param>
        /// <param name="RoleName"></param>
        /// <param name="DelegationId"></param>
        /// <param name="Username"></param>
        /// <param name="Dates"></param>
        /// <param name="StatusId"></param>
        /// <param name="Query"></param>
        /// <param name="CatTipoTramiteId"></param>
        /// <returns></returns>
        // PEER_AAAV_MARCELO
        public async Task <PagedInformationDTO <RequestResultDTO> > ObtenerSolicituesPaginadasAsync(List <int> DelegationId,
                                                                                                    DatesDTO Fechas, int PageSize, int Page, int?StatusId = default(int?), string Query = null, int?CatTipoTramiteId = null)
        {
            var pageInfo = new PagedInformationDTO <RequestResultDTO>
            {
                SetElementosPorPagina = PageSize,
                CurrentPage           = Page,
                QueryString           = Query
            };

            using (var context = new ISSSTEEntities())
            {
                var requestsQuery = context.Solicitud
                                    .Join(context.TramiteUnidadAtencion,
                                          Req => Req.TramiteUnidadAtencionId, Tua => Tua.TramiteUnidadAtencionId,
                                          (Req, Tua) => new { req = Req, tua = Tua })
                                    .Select(UaReq => new RequestResultDTO
                {
                    SolicitudId            = UaReq.req.SolicitudId,
                    CatTipoTramiteId       = UaReq.tua.CatTipoTramiteId,
                    CatTipoTramiteConcepto = UaReq.tua.CatTipoTramite.Concepto,
                    Folio = UaReq.req.NumeroFolio,
                    Cita  = new CitaDTO
                    {
                        CatTipoEdoCitaId = UaReq.req.CatTipoEdoCitaId,
                        FechaCita        = UaReq.req.FechaCita,
                        HoraCita         = UaReq.req.Horario.HoraInicio,
                        ConceptoEdoCita  = UaReq.req.CatTipoEdoCita.Concepto
                    },
                    Paciente = UaReq.req.Involucrado
                               .Where(S => S.CatTipoInvolucradoId == Enumeracion.EnumTipoInvolucrado.Paciente)
                               .Select(S => new PersonaDTO
                    {
                        PersonaId         = S.PersonaId,
                        CURP              = S.Persona.CURP,
                        Materno           = S.Persona.Materno,
                        Paterno           = S.Persona.Paterno,
                        FechaNacimiento   = S.Persona.FechaNacimiento,
                        Nombre            = S.Persona.Nombre,
                        EsMasculino       = S.Persona.EsMasculino,
                        CorreoElectronico = S.Persona.Correo,
                        TelFijo           = "(" + S.Persona.Lada + ") " + S.Persona.Telefono,
                        TelMovil          = S.Persona.TelefonoMovil
                    })
                               .FirstOrDefault(),
                    Promovente = UaReq.req.Involucrado
                                 .Where(S => S.CatTipoInvolucradoId == Enumeracion.EnumTipoInvolucrado.Promovente)
                                 .Select(S => new PersonaDTO
                    {
                        PersonaId         = S.PersonaId,
                        CURP              = S.Persona.CURP,
                        Materno           = S.Persona.Materno,
                        Paterno           = S.Persona.Paterno,
                        FechaNacimiento   = S.Persona.FechaNacimiento,
                        Nombre            = S.Persona.Nombre,
                        EsMasculino       = S.Persona.EsMasculino,
                        CorreoElectronico = S.Persona.Correo,
                        TelFijo           = "(" + S.Persona.Lada + ") " + S.Persona.Telefono,
                        TelMovil          = S.Persona.TelefonoMovil
                    })
                                 .FirstOrDefault(),
                    UnidadAtencion = new UnidadAtencionDTO
                    {
                        UnidadAtencionId = UaReq.tua.UnidadAtencionId,
                        Descripcion      = UaReq.tua.UnidadAtencion.Descripcion
                    }
                }
                                            );

                if (Fechas.FechaInicio.HasValue && Fechas.FechaFin.HasValue)
                {
                    requestsQuery = requestsQuery.Where(R => R.Cita.FechaCita >= Fechas.FechaInicio &&
                                                        R.Cita.FechaCita <= Fechas.FechaFin);
                }

                if (!DelegationId.Contains(Enumeracion.EnumVarios.TodasLasDelegaciones))
                {
                    requestsQuery = requestsQuery
                                    .Where(R => DelegationId.Contains(R.UnidadAtencion.UnidadAtencionId));
                }

                if (!string.IsNullOrEmpty(pageInfo.GetFiltroBusqueda))
                {
                    requestsQuery = requestsQuery.Where(
                        R => R.Folio.ToLower().Contains(pageInfo.GetFiltroBusqueda.ToLower()) ||
                        R.Paciente.Nombre.ToLower().Contains(pageInfo.GetFiltroBusqueda.ToLower()) ||
                        R.Promovente.Nombre.ToLower().Contains(pageInfo.GetFiltroBusqueda.ToLower())
                        );
                }

                if (StatusId.HasValue)
                {
                    requestsQuery = requestsQuery.Where(R => R.Cita.CatTipoEdoCitaId == StatusId);
                }

                if (CatTipoTramiteId.HasValue)
                {
                    requestsQuery = requestsQuery.Where(R => R.CatTipoTramiteId == CatTipoTramiteId);
                }

                var requestCount = requestsQuery;
                pageInfo.ResultCount = await requestCount.CountAsync();

                var requests = await requestsQuery
                               .OrderByDescending(R => R.Cita.FechaCita)
                               .Skip(pageInfo.GetElementosPorPagina * (pageInfo.GetCurrentPage - 1))
                               .Take(pageInfo.GetElementosPorPagina)
                               .ToListAsync();

                pageInfo.ResultList = requests;
            }

            return(pageInfo);
        }