Example #1
0
        private List <TimeReservation> GetDayReservations(int year, int month, int day)
        {
            DateTime dt = new DateTime(year, month, day);



            List <TimeReservation> reservationsOnCurrentDay = new List <TimeReservation>();

            using (var db = new DoorDbContext())
            {
                var 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);
                if (dayReservation == null)
                {
                    dayReservation = AddDayReservation(db, dt);
                    db.SaveChanges();
                }

                int activeHelmetsCount = db.HelmetWorkStations.Where(h => h.IsActive).ToList().Count;
                foreach (var hourReservation in dayReservation.HourReservations)
                {
                    var reservationData = new TimeReservation(hourReservation, activeHelmetsCount);
                    reservationsOnCurrentDay.Add(reservationData);
                }
            }
            return(reservationsOnCurrentDay);
        }
Example #2
0
        private List <CalendarWeek> CalculateReservations(int year, int month)
        {
            DateLogicHelper     dateLogicHelper   = new DateLogicHelper();
            List <CalendarWeek> monthReservedInfo = dateLogicHelper.GetWeeksOfMonth(year, month);

            using (var db = new DoorDbContext())
            {
                var reservedDaysOfMonth = db.Reservations.Include(r => r.HourReservations).Where(r => r.DateReservation.HasValue && r.DateReservation.Value.Month == month).OrderBy(r => r.DateReservation.Value.Day).ToList();
                foreach (var week in monthReservedInfo)
                {
                    foreach (var day in week.DaysOfWeek)
                    {
                        if (day != null)
                        {
                            var reservationsInDay = reservedDaysOfMonth.FirstOrDefault(r => r.DateReservation.HasValue && r.DateReservation.Value.Day == day.DayOfMonth);
                            int freeWorkStations  = this.defaultCountOfFreeWorkStations;
                            if (reservationsInDay != null)
                            {
                                int countOfReservedWorkStations = 45;
                                freeWorkStations = freeWorkStations - countOfReservedWorkStations;
                            }
                            day.AvailableWorkStations = freeWorkStations;
                        }
                    }
                }
            }
            return(monthReservedInfo);
        }
Example #3
0
        /// <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);
        }
Example #4
0
 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));
 }
Example #5
0
        /// <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);
        }
Example #6
0
        private Reservation AddDayReservation(DoorDbContext db, DateTime date)
        {
            Reservation reservation = new Reservation();

            reservation.DateReservation  = date;// new DateTime(year, month, day);
            reservation.HourReservations = new List <HourReservation>();
            WorkingPlan dayWorkingPlan = this.GetDayWorkingPlan(db, date);

            for (int startHour = dayWorkingPlan.StartWorking.Hours; startHour <= dayWorkingPlan.EndWorking.Hours; startHour++)
            {
                HourReservation hourReservation = new HourReservation();
                hourReservation.StartReservation = new TimeSpan(startHour, 0, 0);
                hourReservation.EndReservation   = new TimeSpan(startHour + 1, 0, 0);
                //hourReservation.HelmetWorkStations = db.HelmetWorkStations.Where(h => h.IsActive).ToList();
                reservation.HourReservations.Add(hourReservation);
            }
            Reservation result = db.Reservations.Add(reservation);

            return(result);
        }