/// <summary> /// Get free helmets for day /// </summary> /// <param name="year">Y</param> /// <param name="month">M</param> /// <param name="day">D</param> /// <returns>Free hemlmets in current day</returns> public DayReservationInfo GetDayReservation(int year, int month, int day) { DateTime dateReservation = new DateTime(year, month, day); DayReservationInfo result = new DayReservationInfo(dateReservation); result.FreeHelmets = new List <HourReservationInfo>(); using (var db = new DoorDbContext()) { Reservation dayReservation = db.Reservations.Include(r => r.HourReservations).FirstOrDefault(r => r.DateReservation.HasValue && r.DateReservation.Value.Year == year && r.DateReservation.Value.Month == month && r.DateReservation.Value.Day == day); WorkingPlan workingPlan = WorkingPlanCaсhe.GetDayWorkingPlan(dateReservation.DayOfWeek); for (int i = workingPlan.StartWorking.Hours; i <= workingPlan.EndWorking.Hours; i++) { result.FreeHelmets.Add(new HourReservationInfo(i, activeHelmets)); } if (dayReservation != null && dayReservation.HourReservations != null && dayReservation.HourReservations.Count > 0) { foreach (var reservation in dayReservation.HourReservations) { HourReservationInfo hourInfo = result.FreeHelmets.First(r => r.StartHour == reservation.StartReservation.Hours); hourInfo.FreeHelmets = hourInfo.FreeHelmets - reservation.HelmetWorkStations.Count; } } } return(result); }
private WorkingPlan GetDayWorkingPlan(DoorDbContext db, DateTime date) { //string dayName = date.DayOfWeek.ToString(); //PARAM dayParam = db.PARAMS.FirstOrDefault(d => d.Domain == WorkingDays.Domain && d.Label == dayName); //var dayWorkingPlan = db.WorkingPlans.FirstOrDefault(wp => wp.WorkingDayId == dayParam.Id); //return dayWorkingPlan; return(WorkingPlanCaсhe.GetDayWorkingPlan(date.DayOfWeek)); }