Example #1
0
        /// <summary>
        /// Modify business channel override
        /// </summary>
        /// <param name="businessChannelOverride">BusinessChannelOverride to update</param>
        /// <param name="modifyVisible">modifyVisible</param>
        /// <param name="modifyCommissions">modifyCommissions</param>
        public void ModifyBusinessChannelOverride(BusinessChannelOverride businessChannelOverride, bool modifyVisible, bool modifyCommissions)
        {
            using (var tx = new BusinessTransaction())
            {
                //Values needed for the previous Business Channel Override
                var oldBusinessChannelOverride = businessChannelOverrideDao.GetById(businessChannelOverride.Id);

                oldBusinessChannelOverride.Channel = channelDao.GetById(businessChannelOverride.ChannelId);
                oldBusinessChannelOverride.Business = businessDao.GetByKey(businessChannelOverride.BusinessId);

                SetOverrideValues(businessChannelOverride, modifyVisible, modifyCommissions, oldBusinessChannelOverride);

                //opted out if was opted in and now is not visible
                if (businessChannelOverride.IsVisible == false)
                {
                    businessChannelOptInDao.RemoveByChannelAndBusiness(businessChannelOverride.BusinessId, businessChannelOverride.ChannelId);
                }

                businessChannelOverrideDao.Modify(businessChannelOverride);

                UpsertCommissionDisplay(businessChannelOverride);

                var channelName = oldBusinessChannelOverride.Channel.Name;

                // Record business event
                if (!businessChannelOverride.HasSameVisibility(oldBusinessChannelOverride))
                {
                    eventTrackingManager.CreateBusinessEventAsync(businessChannelOverride.BusinessId,
                                                             BusinessEventTypesEnum.ChannelSettingUpdated,
                                                             businessChannelOverride.ChannelId.ToString(),
                                                             String.Format("{0}: Set channel to {1}",
                                                                           channelName,
                                                                           businessChannelOverride.IsVisible == true
                                                                               ? "visible"
                                                                               : "hidden"));
                }

                //Send CRM email message
                //if both overrides are the same, we don't bother
                if (!businessChannelOverride.HasSameCommissions(oldBusinessChannelOverride))
                {
                    eventTrackingManager.CreateBusinessEventAsync(businessChannelOverride.BusinessId,
                                                             BusinessEventTypesEnum.ChannelSettingUpdated,
                                                             businessChannelOverride.ChannelId.ToString(),
                                                             String.Format("{0}: Edit Business Commission", channelName));

                    emailManager.SendCommissionUpdateEmail(businessChannelOverride, oldBusinessChannelOverride);
                }

                tx.Commit();
            }
        }