Esempio n. 1
0
        /// <summary>
        /// Updates from other RSSettings instances, leaves Id & SalesArea
        /// Update Mode:
        /// 0=Current sales area only (include demographics) - Not passed through
        /// 1=All sales areas (include demographics)
        /// 2=All sales areas (exclude demographics)
        /// 3=All sales areas (Demographics only)
        /// </summary>
        /// <param name="isrSettings"></param>
        /// <param name="updateMode"></param>
        public void UpdateFrom(RSSettings rsSettings, int updateMode)
        {
            // Update main settings
            if (updateMode == 1 || updateMode == 2)
            {
                DefaultDeliverySettingsList.Clear();
                foreach (var deliverySettings in rsSettings.DefaultDeliverySettingsList)
                {
                    DefaultDeliverySettingsList.Add((RSDeliverySettings)deliverySettings.Clone());
                }
            }

            // Update demographics
            if (updateMode == 1 || updateMode == 3)
            {
                DemographicsSettings.Clear();
                foreach (var demographicSettings in rsSettings.DemographicsSettings)
                {
                    var newDemographicSettings = new RSDemographicSettings()
                    {
                        DemographicId = demographicSettings.DemographicId
                    };
                    demographicSettings.DeliverySettingsList.ForEach(ds => newDemographicSettings.DeliverySettingsList.Add((RSDeliverySettings)ds.Clone()));
                    DemographicsSettings.Add(newDemographicSettings);
                }
            }
        }
Esempio n. 2
0
        public static void ValidateForSave(RSSettings rsSettings)
        {
            if (String.IsNullOrEmpty(rsSettings.SalesArea))
            {
                throw new Exception("Sales Area is not set");
            }

            // Check default settings
            if (rsSettings.DefaultDeliverySettingsList.FindAll(ds => ds.DaysToCampaignEnd < 0).Count > 0)
            {
                throw new Exception("Days To Campaign End for default delivery settings cannot be less than zero");
            }
            if (rsSettings.DefaultDeliverySettingsList.FindAll(ds => ds.LowerLimitOfOverDelivery < 0).Count > 0)
            {
                throw new Exception("Lower Limit of Over Delivery for default delivery settings cannot be less than zero");
            }
            if (rsSettings.DefaultDeliverySettingsList.FindAll(ds => ds.UpperLimitOfOverDelivery < 0).Count > 0)
            {
                throw new Exception("Upper Limit of Over Delivery for default delivery settings cannot be less than zero");
            }
            if (rsSettings.DefaultDeliverySettingsList.FindAll(ds => ds.UpperLimitOfOverDelivery < ds.LowerLimitOfOverDelivery).Count > 0)
            {
                throw new Exception("Lower Limit of Over Delivery for default delivery settings must be less than Upper Limit of Over Delivery");
            }

            /*
             * if (rsSettings.DefaultDeliverySettingsList.FindAll(ds => ds.UpperLimitOfOverDelivery == ds.LowerLimitOfOverDelivery).Count > 0)
             * {
             *  throw new Exception("Lower Limit of Over Delivery for default deliver settings cannot be the same as Upper Limit of Over Delivery");
             * }
             */

            // Check demographic settings
            if (rsSettings.DemographicsSettings.FindAll(ds => ds.DeliverySettingsList.Where(s => s.DaysToCampaignEnd < 0).Any()).Count > 0)
            {
                throw new Exception("Days To Campaign End for demographic delivery settings cannot be less than zero");
            }
            if (rsSettings.DemographicsSettings.FindAll(ds => ds.DeliverySettingsList.Where(s => s.LowerLimitOfOverDelivery < 0).Any()).Count > 0)
            {
                throw new Exception("Lower Limit of Over Delivery for demographic delivery settings cannot be less than zero");
            }
            if (rsSettings.DemographicsSettings.FindAll(ds => ds.DeliverySettingsList.Where(s => s.UpperLimitOfOverDelivery < 0).Any()).Count > 0)
            {
                throw new Exception("Upper Limit of Over Delivery for demographic delivery settings cannot be less than zero");
            }
            if (rsSettings.DemographicsSettings.FindAll(ds => ds.DeliverySettingsList.Where(s => s.UpperLimitOfOverDelivery < s.LowerLimitOfOverDelivery).Any()).Count > 0)
            {
                throw new Exception("Lower Limit of Over Delivery for demographic delivery setting must be less than Upper Limit of Over Delivery");
            }

            /*
             * if (rsSettings.DemographicsSettings.FindAll(ds => ds.DeliverySettingsList.Where(s => s.UpperLimitOfOverDelivery == s.LowerLimitOfOverDelivery).Any()).Count > 0)
             * {
             *  throw new Exception("Lower Limit of Over Delivery for demographic delivery setting cannot be the same as Upper Limit of Over Delivery");
             * }
             */
        }
Esempio n. 3
0
        /// <summary>
        /// Returns whether instance has same settings as input
        /// Compare Mode:
        /// 0=Full settings comparison (include demographics)
        /// 1=Top level settings comparison (exclude demographics)
        /// 2=Demographic settings only
        /// </summary>
        /// <param name="isrSettings"></param>
        /// <param name="compareMode"></param>
        /// <returns></returns>
        public bool IsSame(RSSettings rsSettings, int compareMode)
        {
            // Compare main settings
            if (compareMode == 0 || compareMode == 1)
            {
                if (!RSDeliverySettings.IsSame(DefaultDeliverySettingsList, rsSettings.DefaultDeliverySettingsList))
                {
                    return(false);
                }
            }

            // Compare demographics
            if (compareMode == 0 || compareMode == 2)
            {
                return(RSDemographicSettings.IsSame(DemographicsSettings, rsSettings.DemographicsSettings));
            }
            return(true);
        }