/// <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)); }
/// <summary> /// Get quiq data for free placec in month /// </summary> /// <param name="year">year</param> /// <param name="month">Month</param> /// <returns>Free placec</returns> public int[] GetMonthFreeHelmetsDefault(int year, int month) { int daysInMoth = DateLogicHelper.GetDaysInMonth(year, month); int[] result = new int[daysInMoth]; for (int i = 0; i < daysInMoth; i++) { DateTime dt = new DateTime(year, month, i + 1); result[i] = WorkingPlanCaсhe.GetWorkingHours(dt.DayOfWeek) * activeHelmets; } return(result); }
/// <summary> /// Get accurate data /// </summary> /// <param name="year">Year</param> /// <param name="month">Month</param> /// <param name="day">Day</param> /// <returns>Free placec</returns> public int GetFreeHelmetCount(int year, int month, int day) { DateTime dt = new DateTime(year, month, day); int freeHelmets = WorkingPlanCaсhe.GetWorkingHours(dt.DayOfWeek) * activeHelmets; using (var db = new DoorDbContext()) { var dayReservation = db.Reservations.Include(r => r.HourReservations.Select(hr => hr.HelmetWorkStations)).FirstOrDefault(r => r.DateReservation.HasValue && r.DateReservation.Value == dt);///.Year == year && r.DateReservation.Value.Month == month && r.DateReservation.Value.Day == day); if (dayReservation != null) { var busyHelmetsHours = dayReservation.HourReservations.SelectMany(hr => hr.HelmetWorkStations).Count(); freeHelmets = freeHelmets - busyHelmetsHours; } } return(freeHelmets); }