Пример #1
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);
        }
Пример #2
0
        public static WorkingPlan GetDayWorkingPlan(DayOfWeek dayOfWeek)
        {
            WorkingPlan result = regularDay;

            if (dayOfWeek == DayOfWeek.Sunday || dayOfWeek == DayOfWeek.Saturday)
            {
                result = freeDay;
            }
            return(result);
        }
Пример #3
0
        private Reservation CalculateDayReservation(WorkingPlan dayWorkingPlan, DateTime date)
        {
            Reservation reservation = new Reservation();

            reservation.DateReservation  = date;// new DateTime(year, month, day);
            reservation.HourReservations = new List <HourReservation>();
            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);
            }

            return(reservation);
        }
Пример #4
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);
        }
Пример #5
0
        static WorkingPlanCaсhe()
        {
            int regularDayHours = 9;
            int weekEndHours    = 14;

            workingHours.Add(DayOfWeek.Monday, regularDayHours);
            workingHours.Add(DayOfWeek.Tuesday, regularDayHours);
            workingHours.Add(DayOfWeek.Wednesday, regularDayHours);
            workingHours.Add(DayOfWeek.Thursday, regularDayHours);
            workingHours.Add(DayOfWeek.Friday, regularDayHours);
            workingHours.Add(DayOfWeek.Saturday, weekEndHours);
            workingHours.Add(DayOfWeek.Sunday, weekEndHours);

            regularDay = new WorkingPlan();
            regularDay.StartWorking = new TimeSpan(14, 0, 0);
            regularDay.EndWorking   = new TimeSpan(22, 0, 0);


            freeDay = new WorkingPlan();
            freeDay.StartWorking = new TimeSpan(10, 0, 0);
            freeDay.EndWorking   = new TimeSpan(23, 0, 0);
        }
Пример #6
0
        private void UpdateWorkingHours(DoorDbContext context)
        {
            PARAM monday = new PARAM();

            monday.Domain = WorkingDays.Domain;
            monday.Label  = WorkingDays.Monday;
            monday.Value  = WorkingDays.MondayValue;

            WorkingPlan mondayPlan = new WorkingPlan();

            mondayPlan.StartWorking = new TimeSpan(14, 0, 0);
            mondayPlan.EndWorking   = new TimeSpan(22, 0, 0);
            mondayPlan.WorkingDay   = monday;
            context.WorkingPlans.Add(mondayPlan);

            PARAM tuesday = new PARAM();

            tuesday.Domain = WorkingDays.Domain;
            tuesday.Label  = WorkingDays.Tuesday;
            tuesday.Value  = WorkingDays.TuesdayValue;

            WorkingPlan tuesdayPlan = new WorkingPlan();

            tuesdayPlan.StartWorking = new TimeSpan(14, 0, 0);
            tuesdayPlan.EndWorking   = new TimeSpan(22, 0, 0);
            tuesdayPlan.WorkingDay   = tuesday;

            context.WorkingPlans.Add(tuesdayPlan);

            PARAM wednesday = new PARAM();

            wednesday.Domain = WorkingDays.Domain;
            wednesday.Label  = WorkingDays.Wednesday;
            wednesday.Value  = WorkingDays.WednesdayValue;

            WorkingPlan wednesdayPlan = new WorkingPlan();

            wednesdayPlan.StartWorking = new TimeSpan(14, 0, 0);
            wednesdayPlan.EndWorking   = new TimeSpan(22, 0, 0);
            wednesdayPlan.WorkingDay   = wednesday;
            context.WorkingPlans.Add(wednesdayPlan);


            PARAM thursday = new PARAM();

            thursday.Domain = WorkingDays.Domain;
            thursday.Label  = WorkingDays.Thursday;
            thursday.Value  = WorkingDays.ThursdayValue;

            WorkingPlan thursdayPlan = new WorkingPlan();

            thursdayPlan.StartWorking = new TimeSpan(14, 0, 0);
            thursdayPlan.EndWorking   = new TimeSpan(22, 0, 0);
            thursdayPlan.WorkingDay   = thursday;
            context.WorkingPlans.Add(thursdayPlan);

            PARAM friday = new PARAM();

            friday.Domain = WorkingDays.Domain;
            friday.Label  = WorkingDays.Friday;
            friday.Value  = WorkingDays.FridayValue;

            WorkingPlan fridayPlan = new WorkingPlan();

            fridayPlan.StartWorking = new TimeSpan(14, 0, 0);
            fridayPlan.EndWorking   = new TimeSpan(22, 0, 0);
            fridayPlan.WorkingDay   = friday;
            context.WorkingPlans.Add(fridayPlan);

            PARAM saturday = new PARAM();

            saturday.Domain = WorkingDays.Domain;
            saturday.Label  = WorkingDays.Saturday;
            saturday.Value  = WorkingDays.SaturdayValue;

            WorkingPlan saturdayPlan = new WorkingPlan();

            saturdayPlan.StartWorking = new TimeSpan(10, 0, 0);
            saturdayPlan.EndWorking   = new TimeSpan(23, 0, 0);
            saturdayPlan.WorkingDay   = saturday;
            context.WorkingPlans.Add(saturdayPlan);

            PARAM sunday = new PARAM();

            sunday.Domain = WorkingDays.Domain;
            sunday.Label  = WorkingDays.Sunday;
            sunday.Value  = WorkingDays.SundayValue;

            WorkingPlan sundayPlan = new WorkingPlan();

            sundayPlan.StartWorking = new TimeSpan(10, 0, 0);
            sundayPlan.EndWorking   = new TimeSpan(23, 0, 0);
            sundayPlan.WorkingDay   = sunday;
            context.WorkingPlans.Add(sundayPlan);
        }