private ScheduleRulesetAbridged ToAbridged(ScheduleRuleset obj)
        {
            var abridged = new ScheduleRulesetAbridged(obj.Identifier, obj.DaySchedules, obj.DefaultDaySchedule, obj.DisplayName, obj.UserData,
                                                       obj.ScheduleRules, obj.HolidaySchedule, obj.SummerDesigndaySchedule, obj.WinterDesigndaySchedule, obj.ScheduleTypeLimit?.Identifier);

            //_typeLimits.Add(obj.ScheduleTypeLimit);
            return(abridged);
        }
        private ScheduleRuleset AbridgedToReal(ScheduleRulesetAbridged obj)
        {
            var typeLimit = _typeLimits.FirstOrDefault(_ => _.Identifier == obj.ScheduleTypeLimit);

            var realObj = new ScheduleRuleset(obj.Identifier, obj.DaySchedules, obj.DefaultDaySchedule, obj.DisplayName, obj.UserData,
                                              obj.ScheduleRules, obj.HolidaySchedule, obj.SummerDesigndaySchedule, obj.WinterDesigndaySchedule, typeLimit);

            return(realObj);
        }
예제 #3
0
        public static Profile ToSAM(this ScheduleRulesetAbridged scheduleRulesetAbridged, ProfileType?profileType)
        {
            if (scheduleRulesetAbridged == null)
            {
                return(null);
            }

            Dictionary <string, Profile> profiles = new Dictionary <string, Profile>();

            List <ScheduleDay> scheduleDays = scheduleRulesetAbridged.DaySchedules;

            if (scheduleDays != null)
            {
                foreach (ScheduleDay scheduleDay in scheduleDays)
                {
                    Profile profile = scheduleDay.ToSAM();
                    if (profile == null)
                    {
                        continue;
                    }

                    profiles[scheduleDay.Identifier] = profile;
                }
            }

            Profile result = null;

            if (profileType != null && profileType.HasValue)
            {
                result = new Profile(scheduleRulesetAbridged.Identifier, profileType.Value);
            }
            else
            {
                result = new Profile(scheduleRulesetAbridged.Identifier, scheduleRulesetAbridged.Type);
            }

            List <ScheduleRuleAbridged> scheduleRuleAbridges = scheduleRulesetAbridged.ScheduleRules;

            if (scheduleRuleAbridges == null || scheduleRuleAbridges.Count == 0)
            {
                string name = scheduleRulesetAbridged.DefaultDaySchedule;
                if (!string.IsNullOrWhiteSpace(name))
                {
                    if (profiles.TryGetValue(name, out Profile profile))
                    {
                        result.Add(profile);
                    }
                }
            }
            else
            {
                ScheduleRuleAbridged scheduleRuleAbridged = scheduleRuleAbridges[0]; //TODO: Not fully implemented assumtion: there is just one scheduleRuleAbrided
                string  name    = null;
                Profile profile = null;

                //Sunday
                name = null;
                scheduleRuleAbridged = scheduleRuleAbridges.Find(x => x.ApplySunday);
                if (scheduleRuleAbridged != null)
                {
                    name = scheduleRuleAbridged.ScheduleDay;
                }

                if (string.IsNullOrWhiteSpace(name))
                {
                    name = scheduleRulesetAbridged.DefaultDaySchedule;
                }

                if (!string.IsNullOrWhiteSpace(name) && profiles.TryGetValue(name, out profile) && profile != null)
                {
                    result.Add(profile);
                }

                //Monday
                name = null;
                scheduleRuleAbridged = scheduleRuleAbridges.Find(x => x.ApplyMonday);
                if (scheduleRuleAbridged != null)
                {
                    name = scheduleRuleAbridged.ScheduleDay;
                }

                if (string.IsNullOrWhiteSpace(name))
                {
                    name = scheduleRulesetAbridged.DefaultDaySchedule;
                }

                if (!string.IsNullOrWhiteSpace(name) && profiles.TryGetValue(name, out profile) && profile != null)
                {
                    result.Add(profile);
                }

                //Tuesday
                name = null;
                scheduleRuleAbridged = scheduleRuleAbridges.Find(x => x.ApplyTuesday);
                if (scheduleRuleAbridged != null)
                {
                    name = scheduleRuleAbridged.ScheduleDay;
                }

                if (string.IsNullOrWhiteSpace(name))
                {
                    name = scheduleRulesetAbridged.DefaultDaySchedule;
                }

                if (!string.IsNullOrWhiteSpace(name) && profiles.TryGetValue(name, out profile) && profile != null)
                {
                    result.Add(profile);
                }

                //Wednesday
                name = null;
                scheduleRuleAbridged = scheduleRuleAbridges.Find(x => x.ApplyWednesday);
                if (scheduleRuleAbridged != null)
                {
                    name = scheduleRuleAbridged.ScheduleDay;
                }

                if (string.IsNullOrWhiteSpace(name))
                {
                    name = scheduleRulesetAbridged.DefaultDaySchedule;
                }

                if (!string.IsNullOrWhiteSpace(name) && profiles.TryGetValue(name, out profile) && profile != null)
                {
                    result.Add(profile);
                }

                //Thursday
                name = null;
                scheduleRuleAbridged = scheduleRuleAbridges.Find(x => x.ApplyThursday);
                if (scheduleRuleAbridged != null)
                {
                    name = scheduleRuleAbridged.ScheduleDay;
                }

                if (string.IsNullOrWhiteSpace(name))
                {
                    name = scheduleRulesetAbridged.DefaultDaySchedule;
                }

                if (!string.IsNullOrWhiteSpace(name) && profiles.TryGetValue(name, out profile) && profile != null)
                {
                    result.Add(profile);
                }

                //Friday
                name = null;
                scheduleRuleAbridged = scheduleRuleAbridges.Find(x => x.ApplyFriday);
                if (scheduleRuleAbridged != null)
                {
                    name = scheduleRuleAbridged.ScheduleDay;
                }

                if (string.IsNullOrWhiteSpace(name))
                {
                    name = scheduleRulesetAbridged.DefaultDaySchedule;
                }

                if (!string.IsNullOrWhiteSpace(name) && profiles.TryGetValue(name, out profile) && profile != null)
                {
                    result.Add(profile);
                }

                //Saturday
                name = null;
                scheduleRuleAbridged = scheduleRuleAbridges.Find(x => x.ApplySaturday);
                if (scheduleRuleAbridged != null)
                {
                    name = scheduleRuleAbridged.ScheduleDay;
                }

                if (string.IsNullOrWhiteSpace(name))
                {
                    name = scheduleRulesetAbridged.DefaultDaySchedule;
                }

                if (!string.IsNullOrWhiteSpace(name) && profiles.TryGetValue(name, out profile) && profile != null)
                {
                    result.Add(profile);
                }
            }

            return(result);
        }