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); }
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); }
/// <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)); }
//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); }