public static List <DateTime> GetOptionalDaysPerService(int serviceId)
        {
            int                 day           = (int)DateTime.Today.DayOfWeek + 1;
            DateTime            date          = DateTime.Now;
            List <activityTime> activityTimes = ActivityTimeDal.GetActivityTimes(serviceId);
            List <DateTime>     optionalDays  = new List <DateTime>();
            var                 service       = ServiceDal.GetServiceById(serviceId);
            int                 limitDays;

            if (service.kindOfPermission == true)
            {
                limitDays = service.limitDays.Value;
            }
            else
            {
                throw new Exception("בעסק זה לא ניתן לקבוע תורים מראש");
            }
            for (int i = 0; i < limitDays; i++, day++)
            {
                if (day == 7)
                {
                    day = 1;
                    i++;
                    limitDays++;
                }
                if (activityTimes.FirstOrDefault(a => a.dayInWeek == day) != null)
                {
                    optionalDays.Add(date.AddDays(i));
                }
            }
            return(optionalDays);
        }
Example #2
0
        /// <summary>
        /// get the avg per-day in all services of specific business
        /// </summary>
        /// <param name="businessId"></param>
        /// <returns></returns>
        public static List <List <double> > GetAvgForBusiness(int businessId)
        {
            //todo: check if it is cprrect
            List <List <double> > avgForService = new List <List <double> >();

            var services = DAL.BusinessDal.GetBusinessById(businessId).services;

            if (services == null)
            {
                throw new Exception("there is no services!");
            }
            int cnt = 0;

            foreach (var item in services)
            {
                var activityTimes = ActivityTimeDal.GetActivityTimes(item.serviceId);
                if (activityTimes == null)
                {
                    throw new Exception("there is no activityTimes!");
                }

                List <double> days = new List <double>();

                for (int i = 0; i < 7; i++)
                {
                    var dailyAC = activityTimes.Where(a => a.dayInWeek == i + 1);
                    if (dailyAC != null && dailyAC.Count() > 0)
                    {
                        days.Add(dailyAC.Average(a => a.avgWaitings.Value));
                    }
                    else
                    {
                        days.Add(0);
                    }
                }
                avgForService.Add(days);
                cnt++;
            }
            return(avgForService);
        }
Example #3
0
        public static ActivityTimeDTO GetNearestActivityTime(TimeSpan time, int serviceId)
        {
            List <ActivityTimeDTO> activityTimes = new List <ActivityTimeDTO>();

            activityTimes = converters.ActivityTimeConverters.GetListActivityTimesDTO(ActivityTimeDal.GetActivityTimes(serviceId));
            activityTimes = activityTimes.Where(a => a.DayInWeek == (int)DateTime.Now.DayOfWeek + 1 && a.StartDate <= DateTime.Now && a.EndDate <= DateTime.Now && a.StartTime >= time).OrderBy(t => t.StartTime).Take(1).ToList();
            if (activityTimes.Count() == 0)
            {
                return(null);
            }
            return(activityTimes[0]);
        }
Example #4
0
        /// <summary>
        /// הפונקציה מקבלת שעה וקוד שירות ומחפשת את המשמרת בשירות הספציפי בהתאם לשעה שקיבלה
        /// </summary>
        /// <param name="time">שעה</param>
        /// <param name="serviceId">קוד שירות</param>
        /// <returns>קוד משמרת </returns>


        public static ActivityTimeDTO GetActivityTime(DateTime time, int serviceId)
        {
            List <ActivityTimeDTO> activityTimes = new List <ActivityTimeDTO>();

            activityTimes = converters.ActivityTimeConverters.GetListActivityTimesDTO(ActivityTimeDal.GetActivityTimes(serviceId));
            ActivityTimeDTO activityTime = activityTimes.FirstOrDefault(a => a.DayInWeek == ((int)time.DayOfWeek + 1) && a.StartTime <= time.TimeOfDay && a.EndTime > time.TimeOfDay && a.StartDate <= time && (a.EndDate == null || a.EndDate >= time));

            if (activityTime == null)
            {
                activityTime = ActivityTimeBL.GetNearestActivityTime(time.TimeOfDay, serviceId);
            }
            return(activityTime);
        }