示例#1
0
 private void FlushAfterHourSettings()
 {
     if (this.afterHourSettings != null)
     {
         this.AfterHourFeatures = AutoAttendantSettings.ToXml(this.afterHourSettings);
     }
 }
示例#2
0
        private LocalizedString ValidateSettings(AutoAttendantSettings aa, AASettingsEnum settings, string operatorExtension)
        {
            string text = (settings == AASettingsEnum.BusinessHourSettings) ? "BusinessHours" : "AfterHours";

            if (aa.WelcomeGreetingEnabled && string.IsNullOrEmpty(aa.WelcomeGreetingFilename))
            {
                return(DirectoryStrings.InvalidAutoAttendantSetting(text + "WelcomeGreetingEnabled", text + "WelcomeGreetingFilename"));
            }
            if (!string.IsNullOrEmpty(aa.WelcomeGreetingFilename) && !this.VerifyValidCustomGreetingFile(aa.WelcomeGreetingFilename))
            {
                return(DirectoryStrings.InvalidCustomGreetingFilename(text + "WelcomeGreetingFilename"));
            }
            if (aa.MainMenuCustomPromptEnabled && string.IsNullOrEmpty(aa.MainMenuCustomPromptFilename))
            {
                return(DirectoryStrings.InvalidAutoAttendantSetting(text + "MainMenuCustomPromptEnabled", text + "MainMenuCustomPromptFilename"));
            }
            if (!string.IsNullOrEmpty(aa.MainMenuCustomPromptFilename) && !this.VerifyValidCustomGreetingFile(aa.MainMenuCustomPromptFilename))
            {
                return(DirectoryStrings.InvalidCustomGreetingFilename(text + "MainMenuCustomPromptFilename"));
            }
            if (aa.KeyMappingEnabled && (aa.KeyMapping == null || aa.KeyMapping.Length == 0))
            {
                return(DirectoryStrings.InvalidAutoAttendantSetting(text + "KeyMappingEnabled", text + "KeyMapping"));
            }
            if (aa.KeyMapping != null && aa.KeyMapping.Length > 10)
            {
                return(DirectoryStrings.TooManyKeyMappings(text));
            }
            return(LocalizedString.Empty);
        }
示例#3
0
 private void FlushBusinessHourSettings()
 {
     if (this.businessHourSettings != null)
     {
         this.BusinessHourFeatures = AutoAttendantSettings.ToXml(this.businessHourSettings);
     }
 }
        private static AutoAttendantSettings GetAASettingsFromPropertyBag(IPropertyBag propertyBag, AASettingsEnum settingsType)
        {
            ADPropertyDefinition propertyDefinition = (settingsType == AASettingsEnum.BusinessHourSettings) ? UMAutoAttendantSchema.BusinessHourFeatures : UMAutoAttendantSchema.AfterHourFeatures;
            string text = (string)propertyBag[propertyDefinition];

            if (string.IsNullOrEmpty(text))
            {
                return(new AutoAttendantSettings());
            }
            return(AutoAttendantSettings.FromXml(text));
        }
示例#5
0
 private void Write4_AutoAttendantSettings(string n, string ns, AutoAttendantSettings o, bool isNullable, bool needType)
 {
     if (o == null)
     {
         if (isNullable)
         {
             base.WriteNullTagLiteral(n, ns);
         }
         return;
     }
     if (!needType)
     {
         Type type = o.GetType();
         if (!(type == typeof(AutoAttendantSettings)))
         {
             throw base.CreateUnknownTypeException(o);
         }
     }
     base.WriteStartElement(n, ns, o, false, null);
     if (needType)
     {
         base.WriteXsiType("AutoAttendantSettings", string.Empty);
     }
     base.WriteElementString("TimeZoneKeyName", string.Empty, o.TimeZoneKeyName);
     base.WriteElementStringRaw("IsBusinessHourSetting", string.Empty, XmlConvert.ToString(o.IsBusinessHourSetting));
     base.WriteElementString("WelcomeGreetingFilename", string.Empty, o.WelcomeGreetingFilename);
     base.WriteElementStringRaw("WelcomeGreetingEnabled", string.Empty, XmlConvert.ToString(o.WelcomeGreetingEnabled));
     base.WriteElementString("GlobalInfoAnnouncementFilename", string.Empty, o.GlobalInfoAnnouncementFilename);
     base.WriteElementStringRaw("MainMenuCustomPromptEnabled", string.Empty, XmlConvert.ToString(o.MainMenuCustomPromptEnabled));
     base.WriteElementString("MainMenuCustomPromptFilename", string.Empty, o.MainMenuCustomPromptFilename);
     base.WriteElementStringRaw("TransferToOperatorEnabled", string.Empty, XmlConvert.ToString(o.TransferToOperatorEnabled));
     base.WriteElementString("GlobalOperatorExtension", string.Empty, o.GlobalOperatorExtension);
     base.WriteElementStringRaw("KeyMappingEnabled", string.Empty, XmlConvert.ToString(o.KeyMappingEnabled));
     CustomMenuKeyMapping[] keyMapping = o.KeyMapping;
     if (keyMapping != null)
     {
         base.WriteStartElement("KeyMapping", string.Empty, null, false);
         for (int i = 0; i < keyMapping.Length; i++)
         {
             this.Write3_CustomMenuKeyMapping("CustomMenuKeyMapping", string.Empty, keyMapping[i], true, false);
         }
         base.WriteEndElement();
     }
     base.WriteEndElement(o);
 }
示例#6
0
        internal AutoAttendantSettings GetCurrentSettings(out HolidaySchedule holidaySettings, ref bool isBusinessHour)
        {
            ExTimeZone exTimeZone = null;
            string     timeZone   = this.TimeZone;

            if (string.IsNullOrEmpty(timeZone))
            {
                ExTraceGlobals.UMAutoAttendantTracer.TraceDebug <string>((long)this.GetHashCode(), "AA [Name = \"{0}\"] TZ Id = empty string, defaulting to using Current machine timezone", base.Name);
                exTimeZone = ExTimeZone.CurrentTimeZone;
            }
            else if (!ExTimeZoneEnumerator.Instance.TryGetTimeZoneByName(this.TimeZone, out exTimeZone))
            {
                throw new InvalidOperationException(DirectoryStrings.InvalidTimeZoneId(this.TimeZone));
            }
            ExDateTime utcNow     = ExDateTime.UtcNow;
            ExDateTime exDateTime = exTimeZone.ConvertDateTime(utcNow);

            ExTraceGlobals.UMAutoAttendantTracer.TraceDebug((long)this.GetHashCode(), "AA [Name = \"{0}\"] UTC = {1} LOCAL = {2} TZ Id = {3}", new object[]
            {
                base.Name,
                utcNow.ToString("R"),
                exDateTime.ToString("R"),
                this.TimeZone
            });
            AutoAttendantSettings autoAttendantSettings            = null;
            HolidaySchedule       holidaySchedule                  = null;
            MultiValuedProperty <HolidaySchedule> holidaySchedule2 = this.HolidaySchedule;

            if (holidaySchedule2 != null && holidaySchedule2.Count > 0)
            {
                using (MultiValuedProperty <HolidaySchedule> .Enumerator enumerator = holidaySchedule2.GetEnumerator())
                {
                    while (enumerator.MoveNext())
                    {
                        HolidaySchedule holidaySchedule3 = enumerator.Current;
                        if ((ExDateTime)holidaySchedule3.StartDate.Date <= exDateTime.Date && (ExDateTime)holidaySchedule3.EndDate.Date >= exDateTime.Date)
                        {
                            ExTraceGlobals.UMAutoAttendantTracer.TraceDebug((long)this.GetHashCode(), "AA: {0} Call Time: {1} Matched with holiday: {2} {3}-{4}", new object[]
                            {
                                base.Name,
                                exDateTime.ToString("R"),
                                holidaySchedule3.Name,
                                holidaySchedule3.StartDate.ToString("R"),
                                holidaySchedule3.EndDate.ToString("R")
                            });
                            autoAttendantSettings = this.AfterHourSettings;
                            isBusinessHour        = false;
                            if (holidaySchedule == null)
                            {
                                holidaySchedule = holidaySchedule3;
                            }
                            else if (holidaySchedule3.StartDate.Date > holidaySchedule.StartDate.Date)
                            {
                                holidaySchedule = holidaySchedule3;
                            }
                            else if (holidaySchedule3.StartDate.Date == holidaySchedule.StartDate.Date)
                            {
                                int num = string.Compare(holidaySchedule.Name, holidaySchedule3.Name, StringComparison.OrdinalIgnoreCase);
                                holidaySchedule = ((num > 0) ? holidaySchedule3 : holidaySchedule);
                            }
                        }
                    }
                    goto IL_290;
                }
            }
            ExTraceGlobals.UMAutoAttendantTracer.TraceDebug <string, string>((long)this.GetHashCode(), "AA: {0} Call Time: {1} No holiday schedule found", base.Name, exDateTime.ToString("R"));
IL_290:
            holidaySettings = holidaySchedule;
            if (autoAttendantSettings != null)
            {
                return(autoAttendantSettings);
            }
            autoAttendantSettings = this.AfterHourSettings;
            isBusinessHour        = false;
            foreach (ScheduleInterval scheduleInterval in this.BusinessHoursSchedule)
            {
                ExTraceGlobals.UMAutoAttendantTracer.TraceDebug <string, string, string>((long)this.GetHashCode(), "AA: {0} Call Time: {1} BusinessHour: {2}", base.Name, exDateTime.ToString("R"), scheduleInterval.ToString());
                if (scheduleInterval.Contains(new WeekDayAndTime((DateTime)exDateTime)))
                {
                    ExTraceGlobals.UMAutoAttendantTracer.TraceDebug <string, string, string>((long)this.GetHashCode(), "AA: {0} Call Time: {1} Matched with BusinessHour: {2}", base.Name, exDateTime.ToString("R"), scheduleInterval.ToString());
                    isBusinessHour        = true;
                    autoAttendantSettings = this.BusinessHourSettings;
                    break;
                }
            }
            if (!isBusinessHour)
            {
                ExTraceGlobals.UMAutoAttendantTracer.TraceDebug <string, string>((long)this.GetHashCode(), "AA: {0} Call Time: {1} Returning AfterHour settings", base.Name, exDateTime.ToString("R"));
            }
            return(autoAttendantSettings);
        }
        private AutoAttendantSettings Read4_AutoAttendantSettings(bool isNullable, bool checkType)
        {
            XmlQualifiedName xmlQualifiedName = checkType ? base.GetXsiType() : null;
            bool             flag             = false;

            if (isNullable)
            {
                flag = base.ReadNull();
            }
            if (checkType && !(xmlQualifiedName == null) && (xmlQualifiedName.Name != this.id1_AutoAttendantSettings || xmlQualifiedName.Namespace != this.id2_Item))
            {
                throw base.CreateUnknownTypeException(xmlQualifiedName);
            }
            if (flag)
            {
                return(null);
            }
            AutoAttendantSettings autoAttendantSettings = new AutoAttendantSettings();

            bool[] array = new bool[11];
            while (base.Reader.MoveToNextAttribute())
            {
                if (!base.IsXmlnsAttribute(base.Reader.Name))
                {
                    base.UnknownNode(autoAttendantSettings);
                }
            }
            base.Reader.MoveToElement();
            if (base.Reader.IsEmptyElement)
            {
                base.Reader.Skip();
                return(autoAttendantSettings);
            }
            base.Reader.ReadStartElement();
            base.Reader.MoveToContent();
            int num         = 0;
            int readerCount = base.ReaderCount;

            while (base.Reader.NodeType != XmlNodeType.EndElement && base.Reader.NodeType != XmlNodeType.None)
            {
                if (base.Reader.NodeType == XmlNodeType.Element)
                {
                    if (!array[0] && base.Reader.LocalName == this.id3_TimeZoneKeyName && base.Reader.NamespaceURI == this.id2_Item)
                    {
                        autoAttendantSettings.TimeZoneKeyName = base.Reader.ReadElementString();
                        array[0] = true;
                    }
                    else if (!array[1] && base.Reader.LocalName == this.id4_IsBusinessHourSetting && base.Reader.NamespaceURI == this.id2_Item)
                    {
                        autoAttendantSettings.IsBusinessHourSetting = XmlConvert.ToBoolean(base.Reader.ReadElementString());
                        array[1] = true;
                    }
                    else if (!array[2] && base.Reader.LocalName == this.id5_WelcomeGreetingFilename && base.Reader.NamespaceURI == this.id2_Item)
                    {
                        autoAttendantSettings.WelcomeGreetingFilename = base.Reader.ReadElementString();
                        array[2] = true;
                    }
                    else if (!array[3] && base.Reader.LocalName == this.id6_WelcomeGreetingEnabled && base.Reader.NamespaceURI == this.id2_Item)
                    {
                        autoAttendantSettings.WelcomeGreetingEnabled = XmlConvert.ToBoolean(base.Reader.ReadElementString());
                        array[3] = true;
                    }
                    else if (!array[4] && base.Reader.LocalName == this.id7_GlobalInfoAnnouncementFilename && base.Reader.NamespaceURI == this.id2_Item)
                    {
                        autoAttendantSettings.GlobalInfoAnnouncementFilename = base.Reader.ReadElementString();
                        array[4] = true;
                    }
                    else if (!array[5] && base.Reader.LocalName == this.id8_MainMenuCustomPromptEnabled && base.Reader.NamespaceURI == this.id2_Item)
                    {
                        autoAttendantSettings.MainMenuCustomPromptEnabled = XmlConvert.ToBoolean(base.Reader.ReadElementString());
                        array[5] = true;
                    }
                    else if (!array[6] && base.Reader.LocalName == this.id9_MainMenuCustomPromptFilename && base.Reader.NamespaceURI == this.id2_Item)
                    {
                        autoAttendantSettings.MainMenuCustomPromptFilename = base.Reader.ReadElementString();
                        array[6] = true;
                    }
                    else if (!array[7] && base.Reader.LocalName == this.id10_TransferToOperatorEnabled && base.Reader.NamespaceURI == this.id2_Item)
                    {
                        autoAttendantSettings.TransferToOperatorEnabled = XmlConvert.ToBoolean(base.Reader.ReadElementString());
                        array[7] = true;
                    }
                    else if (!array[8] && base.Reader.LocalName == this.id11_GlobalOperatorExtension && base.Reader.NamespaceURI == this.id2_Item)
                    {
                        autoAttendantSettings.GlobalOperatorExtension = base.Reader.ReadElementString();
                        array[8] = true;
                    }
                    else if (!array[9] && base.Reader.LocalName == this.id12_KeyMappingEnabled && base.Reader.NamespaceURI == this.id2_Item)
                    {
                        autoAttendantSettings.KeyMappingEnabled = XmlConvert.ToBoolean(base.Reader.ReadElementString());
                        array[9] = true;
                    }
                    else if (base.Reader.LocalName == this.id13_KeyMapping && base.Reader.NamespaceURI == this.id2_Item)
                    {
                        if (!base.ReadNull())
                        {
                            CustomMenuKeyMapping[] array2 = null;
                            int num2 = 0;
                            if (base.Reader.IsEmptyElement)
                            {
                                base.Reader.Skip();
                            }
                            else
                            {
                                base.Reader.ReadStartElement();
                                base.Reader.MoveToContent();
                                int num3         = 0;
                                int readerCount2 = base.ReaderCount;
                                while (base.Reader.NodeType != XmlNodeType.EndElement && base.Reader.NodeType != XmlNodeType.None)
                                {
                                    if (base.Reader.NodeType == XmlNodeType.Element)
                                    {
                                        if (base.Reader.LocalName == this.id14_CustomMenuKeyMapping && base.Reader.NamespaceURI == this.id2_Item)
                                        {
                                            array2         = (CustomMenuKeyMapping[])base.EnsureArrayIndex(array2, num2, typeof(CustomMenuKeyMapping));
                                            array2[num2++] = this.Read3_CustomMenuKeyMapping(true, true);
                                        }
                                        else
                                        {
                                            base.UnknownNode(null, ":CustomMenuKeyMapping");
                                        }
                                    }
                                    else
                                    {
                                        base.UnknownNode(null, ":CustomMenuKeyMapping");
                                    }
                                    base.Reader.MoveToContent();
                                    base.CheckReaderCount(ref num3, ref readerCount2);
                                }
                                base.ReadEndElement();
                            }
                            autoAttendantSettings.KeyMapping = (CustomMenuKeyMapping[])base.ShrinkArray(array2, num2, typeof(CustomMenuKeyMapping), false);
                        }
                    }
                    else
                    {
                        base.UnknownNode(autoAttendantSettings, ":TimeZoneKeyName, :IsBusinessHourSetting, :WelcomeGreetingFilename, :WelcomeGreetingEnabled, :GlobalInfoAnnouncementFilename, :MainMenuCustomPromptEnabled, :MainMenuCustomPromptFilename, :TransferToOperatorEnabled, :GlobalOperatorExtension, :KeyMappingEnabled, :KeyMapping");
                    }
                }
                else
                {
                    base.UnknownNode(autoAttendantSettings, ":TimeZoneKeyName, :IsBusinessHourSetting, :WelcomeGreetingFilename, :WelcomeGreetingEnabled, :GlobalInfoAnnouncementFilename, :MainMenuCustomPromptEnabled, :MainMenuCustomPromptFilename, :TransferToOperatorEnabled, :GlobalOperatorExtension, :KeyMappingEnabled, :KeyMapping");
                }
                base.Reader.MoveToContent();
                base.CheckReaderCount(ref num, ref readerCount);
            }
            base.ReadEndElement();
            return(autoAttendantSettings);
        }
示例#8
0
 public static string ToXml(AutoAttendantSettings aa)
 {
     return(SerializationHelper.Serialize(aa));
 }