Ejemplo n.º 1
0
        /// <summary>
        /// Shows the edit details.
        /// </summary>
        /// <param name="marketingCampaign">The marketing campaign.</param>
        private void ShowEditDetails(MarketingCampaign marketingCampaign)
        {
            if (marketingCampaign.Id > 0)
            {
                lActionTitle.Text = ActionTitle.Edit(MarketingCampaign.FriendlyTypeName).FormatAsHtmlTitle();
            }
            else
            {
                lActionTitle.Text = ActionTitle.Add(MarketingCampaign.FriendlyTypeName).FormatAsHtmlTitle();
            }

            SetEditMode(true);

            tbTitle.Text              = marketingCampaign.Title;
            tbContactEmail.Text       = marketingCampaign.ContactEmail;
            tbContactFullName.Text    = marketingCampaign.ContactFullName;
            tbContactPhoneNumber.Text = marketingCampaign.ContactPhoneNumber;

            LoadDropDowns();
            ppContactPerson.SetValue(marketingCampaign.ContactPerson);
            ddlEventGroup.SetValue(marketingCampaign.EventGroupId);

            cpCampuses.SelectedCampusIds = marketingCampaign.MarketingCampaignCampuses.Select(a => a.CampusId).ToList();

            MarketingCampaignAudiencesState = new ViewStateList <MarketingCampaignAudience>();
            foreach (var item in marketingCampaign.MarketingCampaignAudiences.ToList())
            {
                MarketingCampaignAudiencesState.Add(new MarketingCampaignAudience {
                    Id = item.Id, IsPrimary = item.IsPrimary, AudienceTypeValueId = item.AudienceTypeValueId
                });
            }

            BindMarketingCampaignAudiencesGrid();
        }
Ejemplo n.º 2
0
        public JsonNetResult SaveCampaign(MarketingCampaign campaign)
        {
            var user = ConnectCmsRepository.SecurityRepository.GetLoggedInUser();

            ConnectCmsRepository.MarketingCampaignRepository.SaveMarketingCampaign(user.PKID, campaign);
            var adboardIds =
                ConnectCmsRepository.WelcomeTabletRepository.GetAdBoardsUsingCampaign(campaign.PKID).Select(x => x.PKID);

            Task.Run(() =>
            {
                foreach (var adboard in adboardIds)
                {
                    try
                    {
                        var callBackUrl = string.Format("{0}://{1}/adboard/NotifyAdBoardChanged?id={2}", Request.Url.Scheme,
                                                        Request.Url.Host, adboard);
                        using (var wc = new System.Net.WebClient())
                        {
                            wc.Headers.Add(System.Net.HttpRequestHeader.ContentType, "application/json; charset=utf-8");
                            wc.Encoding = Encoding.UTF8;
                            wc.UploadString(callBackUrl, "POST", "");
                        }
                    }
                    catch (Exception ex)
                    {
                        Logger.LogException(ex);
                    }
                }
            });

            return(JsonNet(true));
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Handles the Click event of the btnEdit control.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="EventArgs" /> instance containing the event data.</param>
        protected void btnEdit_Click(object sender, EventArgs e)
        {
            MarketingCampaignService service = new MarketingCampaignService();
            MarketingCampaign        item    = service.Get(hfMarketingCampaignId.ValueAsInt());

            ShowEditDetails(item);
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Shows the readonly details.
        /// </summary>
        /// <param name="marketingCampaign">The marketing campaign.</param>
        private void ShowReadonlyDetails(MarketingCampaign marketingCampaign)
        {
            SetEditMode(false);

            // set title.text value even though it is hidden so that Ad Edit can get the title of the campaign
            tbTitle.Text = marketingCampaign.Title;

            string contactInfo = string.Format("{0}<br>{1}<br>{2}", marketingCampaign.ContactFullName, marketingCampaign.ContactEmail, marketingCampaign.ContactPhoneNumber);

            contactInfo = string.IsNullOrWhiteSpace(contactInfo.Replace("<br>", string.Empty)) ? None.TextHtml : contactInfo;

            string eventGroupHtml = null;
            string eventPageGuid  = this.GetAttributeValue("EventPage");

            if (marketingCampaign.EventGroup != null)
            {
                eventGroupHtml = marketingCampaign.EventGroup.Name;

                if (!string.IsNullOrWhiteSpace(eventPageGuid))
                {
                    var page = new PageService().Get(new Guid(eventPageGuid));

                    Dictionary <string, string> queryString = new Dictionary <string, string>();
                    queryString.Add("groupId", marketingCampaign.EventGroupId.ToString());
                    string eventGroupUrl = new PageReference(page.Id, 0, queryString).BuildUrl();
                    eventGroupHtml = string.Format("<a href='{0}'>{1}</a>", eventGroupUrl, marketingCampaign.EventGroup.Name);
                }
            }

            string campusList = marketingCampaign.MarketingCampaignCampuses.Select(a => a.Campus.Name).OrderBy(a => a).ToList().AsDelimited("<br>");

            string primaryAudiences = marketingCampaign.MarketingCampaignAudiences.Where(a => a.IsPrimary).Select(a => a.Name).OrderBy(a => a).ToList().AsDelimited("<br>");

            primaryAudiences = marketingCampaign.MarketingCampaignAudiences.Where(a => a.IsPrimary).Count() == 0 ? None.TextHtml : primaryAudiences;

            string secondaryAudiences = marketingCampaign.MarketingCampaignAudiences.Where(a => !a.IsPrimary).Select(a => a.Name).OrderBy(a => a).ToList().AsDelimited("<br>");

            secondaryAudiences = marketingCampaign.MarketingCampaignAudiences.Where(a => !a.IsPrimary).Count() == 0 ? None.TextHtml : secondaryAudiences;

            DescriptionList descriptionList = new DescriptionList()
                                              .Add("Title", marketingCampaign.Title)
                                              .Add("Contact", contactInfo);

            if (eventGroupHtml != null)
            {
                descriptionList.Add("Linked Event", eventGroupHtml);
            }

            if (marketingCampaign.MarketingCampaignCampuses.Count > 0)
            {
                descriptionList.Add("Campuses", campusList);
            }

            descriptionList
            .Add("Primary Audience", primaryAudiences)
            .Add("Secondary Audience", secondaryAudiences);

            lblMainDetails.Text = descriptionList.Html;
        }
        public void Test2()
        {
            var campaign = new MarketingCampaign();

            var isCrazySalesDay = campaign.IsCrazySalesDay();

            Assert.False(isCrazySalesDay);
        }
Ejemplo n.º 6
0
        /// <summary>
        /// Shows the detail.
        /// </summary>
        /// <param name="itemKey">The item key.</param>
        /// <param name="itemKeyValue">The item key value.</param>
        public void ShowDetail(string itemKey, int itemKeyValue)
        {
            if (!itemKey.Equals("marketingCampaignId"))
            {
                return;
            }

            MarketingCampaign marketingCampaign = null;

            if (!itemKeyValue.Equals(0))
            {
                MarketingCampaignService marketingCampaignService = new MarketingCampaignService();
                marketingCampaign = marketingCampaignService.Get(itemKeyValue);
            }
            else
            {
                marketingCampaign = new MarketingCampaign {
                    Id = 0
                };
                marketingCampaign.MarketingCampaignAds       = new List <MarketingCampaignAd>();
                marketingCampaign.MarketingCampaignAudiences = new List <MarketingCampaignAudience>();
                marketingCampaign.MarketingCampaignCampuses  = new List <MarketingCampaignCampus>();
            }

            hfMarketingCampaignId.Value = marketingCampaign.Id.ToString();

            // render UI based on Authorized and IsSystem
            bool readOnly = false;

            nbEditModeMessage.Text = string.Empty;
            if (!IsUserAuthorized("Edit"))
            {
                readOnly = true;
                nbEditModeMessage.Text = EditModeMessage.ReadOnlyEditActionNotAllowed(MarketingCampaign.FriendlyTypeName);
            }

            if (readOnly)
            {
                btnEdit.Visible = false;
                ShowReadonlyDetails(marketingCampaign);
            }
            else
            {
                btnEdit.Visible = true;
                if (marketingCampaign.Id > 0)
                {
                    ShowReadonlyDetails(marketingCampaign);
                }
                else
                {
                    ShowEditDetails(marketingCampaign);
                }
            }
        }
Ejemplo n.º 7
0
        /// <summary>
        /// Shows the edit.
        /// </summary>
        /// <param name="marketingCampaignId">The marketing campaign id.</param>
        protected void ShowEdit(int marketingCampaignId)
        {
            MarketingCampaignService marketingCampaignService = new MarketingCampaignService();
            MarketingCampaign        marketingCampaign        = marketingCampaignService.Get(marketingCampaignId);

            MarketingCampaignAudiencesState = new List <MarketingCampaignAudienceDto>();

            if (marketingCampaign == null)
            {
                marketingCampaign = new MarketingCampaign {
                    Id = 0
                };
                marketingCampaign.MarketingCampaignAds       = new List <MarketingCampaignAd>();
                marketingCampaign.MarketingCampaignAudiences = new List <MarketingCampaignAudience>();
                marketingCampaign.MarketingCampaignCampuses  = new List <MarketingCampaignCampus>();
            }

            hfMarketingCampaignId.Value = marketingCampaign.Id.ToString();
            tbTitle.Text              = marketingCampaign.Title;
            tbContactEmail.Text       = marketingCampaign.ContactEmail;
            tbContactFullName.Text    = marketingCampaign.ContactFullName;
            tbContactPhoneNumber.Text = marketingCampaign.ContactPhoneNumber;

            ddlContactPerson.SelectedValue = (marketingCampaign.ContactPersonId ?? None.Id).ToString();
            ddlEventGroup.SelectedValue    = (marketingCampaign.EventGroupId ?? None.Id).ToString();

            foreach (var audience in marketingCampaign.MarketingCampaignAudiences)
            {
                MarketingCampaignAudiencesState.Add(new MarketingCampaignAudienceDto(audience));
            }

            cpCampuses.SelectedCampusIds = marketingCampaign.MarketingCampaignCampuses.Select(a => a.CampusId).ToList();

            UpdateReadonlyDetails(marketingCampaign);

            if (marketingCampaign.Id > 0)
            {
                lActionTitle.Text = ActionTitle.Edit(MarketingCampaign.FriendlyTypeName);
                SetEditMode(false);
            }
            else
            {
                lActionTitle.Text = ActionTitle.Add(MarketingCampaign.FriendlyTypeName);
                SetEditMode(true);
            }

            pnlList.Visible    = false;
            pnlDetails.Visible = true;

            BindMarketingCampaignAdsGrid();
            BindMarketingCampaignAudiencesGrid();
        }
Ejemplo n.º 8
0
        public static MarketingCampaign CreateMarketingCampaign(string companyName, string website, string city, string country,
            string username, string email, string phone, HttpFileCollectionBase postedFiles, string description,
            HttpPostedFileBase logoFile, string referringURL, Action<EntityContext, Company> createPortfolios)
        {
            var context = new Entities();

            if (Account.Exists(username))
                throw new Exception("The username already exists.");

            var account = new Account();
            account.Username = username;
            account.Password = AgileFx.Security.CryptoUtil.HashPassword(Guid.NewGuid().ToString());
            account.Status = ACCOUNT_STATUS.ACTIVE;
            account.LastLoginDate = DateTime.Now;
            account.DateAdded = DateTime.Now;
            account.Type = ACCOUNT_TYPE.COMPANY;
            account.Email = email;

            var company = new Company();
            company.Account = account;
            company.Name = companyName;
            company.Website = website;
            company.City = city;
            company.Country = country;
            company.Phone = phone;

            if (logoFile.ContentLength > 0)
                company.SaveLogo(logoFile);

            company.Description = description;

            foreach (var tag in context.Tag.Where(t => t.Name == "Web Design" || t.Name == ""))
                company.Tags.Add(tag);

            createPortfolios(context, company);

            context.AddObject(company);
            context.SaveChanges();

            var marketingCamp = new MarketingCampaign();
            marketingCamp.Account = account.Id;
            marketingCamp.DateCreated = DateTime.UtcNow;
            marketingCamp.DateModified = DateTime.UtcNow;
            marketingCamp.ReferringURL = referringURL;
            marketingCamp.Status = MARKETING_CAMPAIGN_STATUS.NEW;
            marketingCamp.Token = Guid.NewGuid();

            context.AddObject(marketingCamp);
            context.SaveChanges();

            return marketingCamp;
        }
Ejemplo n.º 9
0
        public void test_no_discount_on_cheap_item()
        {
            var marketingCampaign = new MarketingCampaign(
                new MockDateTimeService(
                    new DateTime(2020, 7, 1, 0, 0, 0, 2)
                    )
                );

            var net      = new Money(80);
            var discount = DiscountFactory.Create(marketingCampaign, net);
            var total    = discount.DiscountFor(net);

            Assert.Equal(new Money(80m), total);
        }
Ejemplo n.º 10
0
        public void test_discount_crazy_sales_tonight_fun_radio()
        {
            var marketingCampaign = new MarketingCampaign(
                new MockDateTimeService(
                    new DateTime(2020, 7, 3, 0, 0, 0, 2)
                    )
                );

            var net      = new Money(100);
            var discount = DiscountFactory.Create(marketingCampaign, net);
            var total    = discount.DiscountFor(net);

            Assert.Equal(new Money(85m), total);
        }
Ejemplo n.º 11
0
        public void test_discount_one_thousand_shades_of_grey()
        {
            var marketingCampaign = new MarketingCampaign(
                new MockDateTimeService(
                    new DateTime(2020, 7, 1)
                    )
                );

            var net      = new Money(1002);
            var discount = DiscountFactory.Create(marketingCampaign, net);
            var total    = discount.DiscountFor(net);

            Assert.Equal(new Money(901.8m), total);
        }
Ejemplo n.º 12
0
        public void test_discount_one_hundred_shades_of_pink()
        {
            var marketingCampaign = new MarketingCampaign(
                new MockDateTimeService(
                    new DateTime(2020, 7, 1, 0, 0, 0, 2)
                    )
                );

            var net      = new Money(102);
            var discount = DiscountFactory.Create(marketingCampaign, net);
            var total    = discount.DiscountFor(net);

            Assert.Equal(new Money(96.9m), total);
        }
Ejemplo n.º 13
0
        /// <summary>
        /// Handles the Click event of the btnCancel control.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="EventArgs" /> instance containing the event data.</param>
        protected void btnCancel_Click(object sender, EventArgs e)
        {
            SetEditMode(false);

            if (hfMarketingCampaignId.Value.Equals("0"))
            {
                // Cancelling on Add.  Return to Grid
                NavigateToParentPage();
            }
            else
            {
                // Cancelling on Edit.  Return to Details
                MarketingCampaignService service = new MarketingCampaignService();
                MarketingCampaign        item    = service.Get(hfMarketingCampaignId.ValueAsInt());
                ShowReadonlyDetails(item);
            }
        }
Ejemplo n.º 14
0
        /// <summary>
        /// Updates the readonly details.
        /// </summary>
        /// <param name="marketingCampaign">The marketing campaign.</param>
        private void UpdateReadonlyDetails(MarketingCampaign marketingCampaign)
        {
            // make a Description section for nonEdit mode
            string descriptionFormat = "<dt>{0}</dt><dd>{1}</dd>";

            lblMainDetails.Text = @"
<div class='span6'>
    <dl>";

            lblMainDetails.Text += string.Format(descriptionFormat, "Title", marketingCampaign.Title);

            string contactInfo = string.Format("{0}<br>{1}<br>{2}", marketingCampaign.ContactFullName, marketingCampaign.ContactEmail, marketingCampaign.ContactPhoneNumber);

            contactInfo          = string.IsNullOrWhiteSpace(contactInfo.Replace("<br>", string.Empty)) ? None.TextHtml : contactInfo;
            lblMainDetails.Text += string.Format(descriptionFormat, "Contact", contactInfo);

            lblMainDetails.Text += string.Format(descriptionFormat, "Event", marketingCampaign.EventGroup == null ? None.TextHtml : marketingCampaign.EventGroup.Name);

            lblMainDetails.Text += @"
    </dl>
</div>
<div class='span6'>
    <dl>";

            string campusList = marketingCampaign.MarketingCampaignCampuses.Select(a => a.Campus.Name).OrderBy(a => a).ToList().AsDelimited("<br>");

            campusList           = marketingCampaign.MarketingCampaignCampuses.Count == 0 ? None.TextHtml : campusList;
            lblMainDetails.Text += string.Format(descriptionFormat, "Campuses", campusList);

            string primaryAudiences = marketingCampaign.MarketingCampaignAudiences.Where(a => a.IsPrimary).Select(a => a.Name).OrderBy(a => a).ToList().AsDelimited("<br>");

            primaryAudiences     = marketingCampaign.MarketingCampaignAudiences.Where(a => a.IsPrimary).Count() == 0 ? None.TextHtml : primaryAudiences;
            lblMainDetails.Text += string.Format(descriptionFormat, "Primary Audience", primaryAudiences);

            string secondaryAudiences = marketingCampaign.MarketingCampaignAudiences.Where(a => !a.IsPrimary).Select(a => a.Name).OrderBy(a => a).ToList().AsDelimited("<br>");

            secondaryAudiences   = marketingCampaign.MarketingCampaignAudiences.Where(a => !a.IsPrimary).Count() == 0 ? None.TextHtml : secondaryAudiences;
            lblMainDetails.Text += string.Format(descriptionFormat, "Secondary Audience", secondaryAudiences);

            lblMainDetails.Text += @"
    </dl>
</div>";
        }
        public void DeleteCampaign(string campaignId)
        {
            ExceptionDispatchInfo capturedException    = null;
            DbContextTransaction  dbContextTransaction = null;

            Guid id;
            MarketingCampaign marketingCampaign = new MarketingCampaign()
            {
                Id = !string.IsNullOrEmpty(campaignId) && Guid.TryParse(campaignId, out id) ? id : Guid.Empty
            };

            try
            {
                using (var dbContext = new CSPDatabaseModelEntities())
                {
                    // Begin transaction
                    using (dbContextTransaction = dbContext.Database.BeginTransaction())
                    {
                        using (var dataCampaignsCustomerManager = new DataManagers.MarketingCampaignsCustomer(dbContext))
                        {
                            dataCampaignsCustomerManager.DeleteWhere <MarketingCampaignsCustomer>(c => c.MarketingCampaignId.ToString() == campaignId);
                        }

                        using (var dataCampaignManager = new DataManagers.MarketingCampaignManager(dbContext))
                        {
                            dataCampaignManager.DeleteWhere <MarketingCampaign>(c => c.Id.ToString() == campaignId);
                        }

                        dbContextTransaction.Commit();
                    }
                }
            }
            catch (Exception ex)
            {
                capturedException = ExceptionDispatchInfo.Capture(ex);

                if (dbContextTransaction != null)
                {
                    // Rollback transaction
                    dbContextTransaction.Rollback();
                }
            }
        }
        public Campaign GetCampaign(string campaignId)
        {
            Campaign campaign = new Campaign();

            using (var dbContext = new CSPDatabaseModelEntities())
            {
                using (var dataCampaignManager = new DataManagers.MarketingCampaignManager(dbContext))
                {
                    MarketingCampaign campaignsDb = dataCampaignManager.FirstOrDefaultBy <MarketingCampaign>(c => c.Id != null &&
                                                                                                             c.Id.ToString() == campaignId, c => c.MarketingCampaignsCustomers);

                    campaign = campaignsDb != null
                                   ? MarketingCampaignMapper.MapFromSource(campaignsDb)
                                   : null;
                }
            }

            return(campaign);
        }
        public Campaign Create(Campaign campaign)
        {
            Campaign          campaignResult    = null;
            MarketingCampaign marketingCampaign = MarketingCampaignMapper.MapFromSource(campaign);

            using (var dbContext = new CSPDatabaseModelEntities())
            {
                using (var dataCampaignManager = new DataManagers.MarketingCampaignManager(dbContext))
                {
                    MarketingCampaign campaignDb = dataCampaignManager.AddOrUpdate <MarketingCampaign>(marketingCampaign, c => c.Id.ToString() == campaign.CampaignId);

                    MarketingCampaign campaignNew = dbContext.MarketingCampaigns.Include(c => c.MarketingCampaignsCustomers)
                                                    .Include(c => c.MarketingCampaignsCustomers.Select(x => x.Customer)).FirstOrDefault(c => c.Id == campaignDb.Id);

                    campaignResult = MarketingCampaignMapper.MapFromSource(campaignNew);
                }
            }

            return(campaignResult);
        }
Ejemplo n.º 18
0
        /// <summary>
        /// Raises the <see cref="E:System.Web.UI.Control.Load" /> event.
        /// </summary>
        /// <param name="e">The <see cref="T:System.EventArgs" /> object that contains the event data.</param>
        protected override void OnLoad(EventArgs e)
        {
            base.OnLoad(e);

            if (!Page.IsPostBack)
            {
                MarketingCampaign marketingCampaign = this.ContextEntity <MarketingCampaign>();
                if (marketingCampaign != null)
                {
                    hfMarketingCampaignId.Value = marketingCampaign.Id.ToString();
                    BindGrid();
                }
                else
                {
                    // if there isn't a marketingCampaign context, don't allow new ads to be added (since we don't know which campaign to add the ad to)
                    gMarketingCampaignAds.Actions.ShowAdd = false;
                    hfMarketingCampaignId.Value           = null;
                    BindGrid();
                }
            }
        }
Ejemplo n.º 19
0
        /// <summary>
        /// Handles the Delete event of the gMarketingCampaigns control.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="RowEventArgs" /> instance containing the event data.</param>
        protected void gMarketingCampaigns_Delete(object sender, RowEventArgs e)
        {
            MarketingCampaignService marketingCampaignService = new MarketingCampaignService();
            int marketingCampaignId             = (int)e.RowKeyValue;
            MarketingCampaign marketingCampaign = marketingCampaignService.Get(marketingCampaignId);

            string errorMessage;

            if (!marketingCampaignService.CanDelete(marketingCampaign, out errorMessage))
            {
                mdGridWarning.Show(errorMessage, ModalAlertType.Information);
                return;
            }

            if (CurrentBlock != null)
            {
                marketingCampaignService.Delete(marketingCampaign, CurrentPersonId);
                marketingCampaignService.Save(marketingCampaign, CurrentPersonId);
            }

            BindGrid();
        }
Ejemplo n.º 20
0
        /// <summary>
        /// Handles the Delete event of the gMarketingCampaigns control.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="RowEventArgs" /> instance containing the event data.</param>
        protected void gMarketingCampaigns_Delete(object sender, RowEventArgs e)
        {
            var rockContext = new RockContext();
            MarketingCampaignService marketingCampaignService = new MarketingCampaignService(rockContext);

            MarketingCampaign marketingCampaign = marketingCampaignService.Get((int)e.RowKeyValue);

            if (marketingCampaign != null)
            {
                string errorMessage;
                if (!marketingCampaignService.CanDelete(marketingCampaign, out errorMessage))
                {
                    mdGridWarning.Show(errorMessage, ModalAlertType.Information);
                    return;
                }

                marketingCampaignService.Delete(marketingCampaign);
                rockContext.SaveChanges();
            }

            BindGrid();
        }
Ejemplo n.º 21
0
        /// <summary>
        /// Handles the Delete event of the gMarketingCampaigns control.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="RowEventArgs" /> instance containing the event data.</param>
        protected void gMarketingCampaigns_Delete(object sender, RowEventArgs e)
        {
            RockTransactionScope.WrapTransaction(() =>
            {
                MarketingCampaignService marketingCampaignService = new MarketingCampaignService();
                MarketingCampaign marketingCampaign = marketingCampaignService.Get((int)e.RowKeyValue);

                if (marketingCampaign != null)
                {
                    string errorMessage;
                    if (!marketingCampaignService.CanDelete(marketingCampaign, out errorMessage))
                    {
                        mdGridWarning.Show(errorMessage, ModalAlertType.Information);
                        return;
                    }

                    marketingCampaignService.Delete(marketingCampaign, CurrentPersonId);
                    marketingCampaignService.Save(marketingCampaign, CurrentPersonId);
                }
            });

            BindGrid();
        }
Ejemplo n.º 22
0
        /// <summary>
        /// Shows the edit.
        /// </summary>
        /// <param name="marketingCampaignId">The marketing campaign id.</param>
        protected void ShowEdit( int marketingCampaignId )
        {
            MarketingCampaignService marketingCampaignService = new MarketingCampaignService();
            MarketingCampaign marketingCampaign = marketingCampaignService.Get( marketingCampaignId );
            MarketingCampaignAudiencesState = new List<MarketingCampaignAudienceDto>();

            if ( marketingCampaign == null )
            {
                marketingCampaign = new MarketingCampaign { Id = 0 };
                marketingCampaign.MarketingCampaignAds = new List<MarketingCampaignAd>();
                marketingCampaign.MarketingCampaignAudiences = new List<MarketingCampaignAudience>();
                marketingCampaign.MarketingCampaignCampuses = new List<MarketingCampaignCampus>();
            }

            hfMarketingCampaignId.Value = marketingCampaign.Id.ToString();
            tbTitle.Text = marketingCampaign.Title;
            tbContactEmail.Text = marketingCampaign.ContactEmail;
            tbContactFullName.Text = marketingCampaign.ContactFullName;
            tbContactPhoneNumber.Text = marketingCampaign.ContactPhoneNumber;

            ddlContactPerson.SelectedValue = ( marketingCampaign.ContactPersonId ?? None.Id ).ToString();
            ddlEventGroup.SelectedValue = ( marketingCampaign.EventGroupId ?? None.Id ).ToString();

            foreach ( var audience in marketingCampaign.MarketingCampaignAudiences )
            {
                MarketingCampaignAudiencesState.Add( new MarketingCampaignAudienceDto( audience ) );
            }

            cpCampuses.SelectedCampusIds = marketingCampaign.MarketingCampaignCampuses.Select( a => a.CampusId ).ToList();

            UpdateReadonlyDetails( marketingCampaign );

            if ( marketingCampaign.Id > 0 )
            {
                lActionTitle.Text = ActionTitle.Edit( MarketingCampaign.FriendlyTypeName );
                SetEditMode( false );
            }
            else
            {
                lActionTitle.Text = ActionTitle.Add( MarketingCampaign.FriendlyTypeName );
                SetEditMode( true );
            }

            pnlList.Visible = false;
            pnlDetails.Visible = true;

            BindMarketingCampaignAdsGrid();
            BindMarketingCampaignAudiencesGrid();
        }
Ejemplo n.º 23
0
        /// <summary>
        /// Handles the Click event of the btnSave control.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="EventArgs" /> instance containing the event data.</param>
        protected void btnSave_Click(object sender, EventArgs e)
        {
            MarketingCampaign        marketingCampaign;
            MarketingCampaignService marketingCampaignService = new MarketingCampaignService();

            int marketingCampaignId = int.Parse(hfMarketingCampaignId.Value);

            if (marketingCampaignId == 0)
            {
                marketingCampaign = new MarketingCampaign();
                marketingCampaignService.Add(marketingCampaign, CurrentPersonId);
            }
            else
            {
                marketingCampaign = marketingCampaignService.Get(marketingCampaignId);
            }

            marketingCampaign.Title = tbTitle.Text;
            if (ddlContactPerson.SelectedValue.Equals(None.Id.ToString()))
            {
                marketingCampaign.ContactPersonId = null;
            }
            else
            {
                marketingCampaign.ContactPersonId = int.Parse(ddlContactPerson.SelectedValue);
            }

            marketingCampaign.ContactEmail       = tbContactEmail.Text;
            marketingCampaign.ContactPhoneNumber = tbContactPhoneNumber.Text;
            marketingCampaign.ContactFullName    = tbContactFullName.Text;

            if (ddlEventGroup.SelectedValue.Equals(None.Id.ToString()))
            {
                marketingCampaign.EventGroupId = null;
            }
            else
            {
                marketingCampaign.EventGroupId = int.Parse(ddlEventGroup.SelectedValue);
            }

            // check for duplicates
            if (marketingCampaignService.Queryable().Count(a => a.Title.Equals(marketingCampaign.Title, StringComparison.OrdinalIgnoreCase) && !a.Id.Equals(marketingCampaign.Id)) > 0)
            {
                tbTitle.ShowErrorMessage(WarningMessage.DuplicateFoundMessage("title", MarketingCampaign.FriendlyTypeName));
                return;
            }

            if (!marketingCampaign.IsValid)
            {
                // Controls will render the error messages
                return;
            }

            RockTransactionScope.WrapTransaction(() =>
            {
                #region Save MarketingCampaignAudiences to db

                // Update MarketingCampaignAudiences with UI values
                if (marketingCampaign.MarketingCampaignAudiences == null)
                {
                    marketingCampaign.MarketingCampaignAudiences = new List <MarketingCampaignAudience>();
                }

                // delete Audiences that aren't assigned in the UI anymore
                MarketingCampaignAudienceService marketingCampaignAudienceService = new MarketingCampaignAudienceService();
                var deletedAudiences = from audienceInDB in marketingCampaign.MarketingCampaignAudiences.AsQueryable()
                                       where !(from audienceStateItem in MarketingCampaignAudiencesState
                                               select audienceStateItem.AudienceTypeValueId).Contains(audienceInDB.AudienceTypeValueId)
                                       select audienceInDB;
                deletedAudiences.ToList().ForEach(a =>
                {
                    var aud = marketingCampaignAudienceService.Get(a.Guid);
                    marketingCampaignAudienceService.Delete(aud, CurrentPersonId);
                    marketingCampaignAudienceService.Save(aud, CurrentPersonId);
                });

                // add or update the Audiences that are assigned in the UI
                foreach (var item in MarketingCampaignAudiencesState)
                {
                    MarketingCampaignAudience marketingCampaignAudience = marketingCampaign.MarketingCampaignAudiences.FirstOrDefault(a => a.AudienceTypeValueId.Equals(item.AudienceTypeValueId));
                    if (marketingCampaignAudience == null)
                    {
                        marketingCampaignAudience = new MarketingCampaignAudience();
                        marketingCampaign.MarketingCampaignAudiences.Add(marketingCampaignAudience);
                    }

                    marketingCampaignAudience.AudienceTypeValueId = item.AudienceTypeValueId;
                    marketingCampaignAudience.IsPrimary           = item.IsPrimary;
                }

                #endregion

                #region Save MarketingCampaignCampuses to db

                // Update MarketingCampaignCampuses with UI values
                if (marketingCampaign.MarketingCampaignCampuses == null)
                {
                    marketingCampaign.MarketingCampaignCampuses = new List <MarketingCampaignCampus>();
                }

                // take care of deleted Campuses
                MarketingCampaignCampusService marketingCampaignCampusService = new MarketingCampaignCampusService();
                var deletedCampuses = from mcc in marketingCampaign.MarketingCampaignCampuses.AsQueryable()
                                      where !(cpCampuses.SelectedCampusIds).Contains(mcc.CampusId)
                                      select mcc;

                deletedCampuses.ToList().ForEach(a =>
                {
                    var c = marketingCampaignCampusService.Get(a.Guid);
                    marketingCampaignCampusService.Delete(c, CurrentPersonId);
                    marketingCampaignCampusService.Save(c, CurrentPersonId);
                });

                // add or update the Campuses that are assigned in the UI
                foreach (int campusId in cpCampuses.SelectedCampusIds)
                {
                    MarketingCampaignCampus marketingCampaignCampus = marketingCampaign.MarketingCampaignCampuses.FirstOrDefault(a => a.CampusId.Equals(campusId));
                    if (marketingCampaignCampus == null)
                    {
                        marketingCampaignCampus = new MarketingCampaignCampus();
                        marketingCampaign.MarketingCampaignCampuses.Add(marketingCampaignCampus);
                    }

                    marketingCampaignCampus.CampusId = campusId;
                }

                #endregion

                marketingCampaignService.Save(marketingCampaign, CurrentPersonId);
            });

            hfMarketingCampaignId.Value = marketingCampaign.Id.ToString();

            // refresh from db using new service context since the above child items were saved outside of the marketingCampaign object
            marketingCampaign = MarketingCampaign.Read(marketingCampaign.Id);
            UpdateReadonlyDetails(marketingCampaign);

            SetEditMode(false);
            pnlDetails.Visible = true;
            pnlList.Visible    = false;
        }
Ejemplo n.º 24
0
        /// <summary>
        /// Shows the detail.
        /// </summary>
        /// <param name="itemKey">The item key.</param>
        /// <param name="itemKeyValue">The item key value.</param>
        public void ShowDetail( string itemKey, int itemKeyValue )
        {
            if ( !itemKey.Equals( "marketingCampaignId" ) )
            {
                return;
            }

            MarketingCampaign marketingCampaign = null;

            if ( !itemKeyValue.Equals( 0 ) )
            {
                MarketingCampaignService marketingCampaignService = new MarketingCampaignService();
                marketingCampaign = marketingCampaignService.Get( itemKeyValue );
            }
            else
            {
                marketingCampaign = new MarketingCampaign { Id = 0 };
                marketingCampaign.MarketingCampaignAds = new List<MarketingCampaignAd>();
                marketingCampaign.MarketingCampaignAudiences = new List<MarketingCampaignAudience>();
                marketingCampaign.MarketingCampaignCampuses = new List<MarketingCampaignCampus>();
            }

            hfMarketingCampaignId.Value = marketingCampaign.Id.ToString();

            // render UI based on Authorized and IsSystem
            bool readOnly = false;

            nbEditModeMessage.Text = string.Empty;
            if ( !IsUserAuthorized( "Edit" ) )
            {
                readOnly = true;
                nbEditModeMessage.Text = EditModeMessage.ReadOnlyEditActionNotAllowed( MarketingCampaign.FriendlyTypeName );
            }

            if ( readOnly )
            {
                btnEdit.Visible = false;
                ShowReadonlyDetails( marketingCampaign );
            }
            else
            {
                btnEdit.Visible = true;
                if ( marketingCampaign.Id > 0 )
                {
                    ShowReadonlyDetails( marketingCampaign );
                }
                else
                {
                    ShowEditDetails( marketingCampaign );
                }
            }
        }
        /// <summary>
        /// Shows the readonly details.
        /// </summary>
        /// <param name="marketingCampaign">The marketing campaign.</param>
        private void ShowReadonlyDetails(MarketingCampaign marketingCampaign)
        {
            SetEditMode(false);

            // set title.text value even though it is hidden so that Ad Edit can get the title of the campaign
            tbTitle.Text = marketingCampaign.Title;

            string contactInfo = string.Format("{0}<br>{1}<br>{2}", marketingCampaign.ContactFullName, marketingCampaign.ContactEmail, marketingCampaign.ContactPhoneNumber);

            contactInfo = string.IsNullOrWhiteSpace(contactInfo.Replace("<br>", string.Empty)) ? None.TextHtml : contactInfo;


            string eventGroupHtml = null;

            /*
             * -- Hide until we implement Marketing Events
             *
             * string eventPageGuid = this.GetAttributeValue( "EventPage" );
             *
             * if ( marketingCampaign.EventGroup != null )
             * {
             *  eventGroupHtml = marketingCampaign.EventGroup.Name;
             *
             *  if ( !string.IsNullOrWhiteSpace( eventPageGuid ) )
             *  {
             *      var page = new PageService( new RockContext() ).Get( new Guid( eventPageGuid ) );
             *
             *      Dictionary<string, string> queryString = new Dictionary<string, string>();
             *      queryString.Add( "groupId", marketingCampaign.EventGroupId.ToString() );
             *      string eventGroupUrl = new PageReference( page.Id, 0, queryString ).BuildUrl();
             *      eventGroupHtml = string.Format( "<a href='{0}'>{1}</a>", eventGroupUrl, marketingCampaign.EventGroup.Name );
             *  }
             * }
             */


            string primaryAudiences = marketingCampaign.MarketingCampaignAudiences.Where(a => a.IsPrimary).Select(a => a.Name).OrderBy(a => a).ToList().AsDelimited("<br>");

            primaryAudiences = marketingCampaign.MarketingCampaignAudiences.Where(a => a.IsPrimary).Count() == 0 ? None.TextHtml : primaryAudiences;

            string secondaryAudiences = marketingCampaign.MarketingCampaignAudiences.Where(a => !a.IsPrimary).Select(a => a.Name).OrderBy(a => a).ToList().AsDelimited("<br>");

            secondaryAudiences = marketingCampaign.MarketingCampaignAudiences.Where(a => !a.IsPrimary).Count() == 0 ? None.TextHtml : secondaryAudiences;

            lCampaignTitle.Text = marketingCampaign.Title.FormatAsHtmlTitle();

            DescriptionList descriptionListCol1 = new DescriptionList()
                                                  .Add("Contact", contactInfo);

            if (eventGroupHtml != null)
            {
                descriptionListCol1.Add("Linked Event", eventGroupHtml);
            }

            lDetailsCol1.Text = descriptionListCol1.Html;

            DescriptionList descriptionListCol2 = new DescriptionList()
                                                  .Add("Primary Audience", primaryAudiences)
                                                  .Add("Secondary Audience", secondaryAudiences);

            lDetailsCol2.Text = descriptionListCol2.Html;

            lCampusLabels.Text = string.Empty;
            foreach (var campus in marketingCampaign.MarketingCampaignCampuses.Select(a => a.Campus.Name).OrderBy(a => a).ToList())
            {
                lCampusLabels.Text += "<span class='label label-campus'>" + campus + "</span> ";
            }
        }
Ejemplo n.º 26
0
        /// <summary>
        /// Handles the Click event of the btnSave control.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="EventArgs" /> instance containing the event data.</param>
        protected void btnSave_Click( object sender, EventArgs e )
        {
            MarketingCampaign marketingCampaign;
            MarketingCampaignService marketingCampaignService = new MarketingCampaignService();

            int marketingCampaignId = int.Parse( hfMarketingCampaignId.Value );

            if ( marketingCampaignId == 0 )
            {
                marketingCampaign = new MarketingCampaign();
                marketingCampaignService.Add( marketingCampaign, CurrentPersonId );
            }
            else
            {
                marketingCampaign = marketingCampaignService.Get( marketingCampaignId );
            }

            marketingCampaign.Title = tbTitle.Text;
            if ( ddlContactPerson.SelectedValue.Equals( None.Id.ToString() ) )
            {
                marketingCampaign.ContactPersonId = null;
            }
            else
            {
                marketingCampaign.ContactPersonId = int.Parse( ddlContactPerson.SelectedValue );
            }

            marketingCampaign.ContactEmail = tbContactEmail.Text;
            marketingCampaign.ContactPhoneNumber = tbContactPhoneNumber.Text;
            marketingCampaign.ContactFullName = tbContactFullName.Text;

            if ( ddlEventGroup.SelectedValue.Equals( None.Id.ToString() ) )
            {
                marketingCampaign.EventGroupId = null;
            }
            else
            {
                marketingCampaign.EventGroupId = int.Parse( ddlEventGroup.SelectedValue );
            }

            // check for duplicates
            if ( marketingCampaignService.Queryable().Count( a => a.Title.Equals( marketingCampaign.Title, StringComparison.OrdinalIgnoreCase ) && !a.Id.Equals( marketingCampaign.Id ) ) > 0 )
            {
                tbTitle.ShowErrorMessage( WarningMessage.DuplicateFoundMessage( "title", MarketingCampaign.FriendlyTypeName ) );
                return;
            }

            if ( !marketingCampaign.IsValid )
            {
                // Controls will render the error messages
                return;
            }

            RockTransactionScope.WrapTransaction( () =>
            {
                #region Save MarketingCampaignAudiences to db

                // Update MarketingCampaignAudiences with UI values
                if ( marketingCampaign.MarketingCampaignAudiences == null )
                {
                    marketingCampaign.MarketingCampaignAudiences = new List<MarketingCampaignAudience>();
                }

                // delete Audiences that aren't assigned in the UI anymore
                MarketingCampaignAudienceService marketingCampaignAudienceService = new MarketingCampaignAudienceService();
                var deletedAudiences = from audienceInDB in marketingCampaign.MarketingCampaignAudiences.AsQueryable()
                                       where !( from audienceStateItem in MarketingCampaignAudiencesState
                                                select audienceStateItem.AudienceTypeValueId ).Contains( audienceInDB.AudienceTypeValueId )
                                       select audienceInDB;
                deletedAudiences.ToList().ForEach( a =>
                {
                    var aud = marketingCampaignAudienceService.Get( a.Guid );
                    marketingCampaignAudienceService.Delete( aud, CurrentPersonId );
                    marketingCampaignAudienceService.Save( aud, CurrentPersonId );
                } );

                // add or update the Audiences that are assigned in the UI
                foreach ( var item in MarketingCampaignAudiencesState )
                {
                    MarketingCampaignAudience marketingCampaignAudience = marketingCampaign.MarketingCampaignAudiences.FirstOrDefault( a => a.AudienceTypeValueId.Equals( item.AudienceTypeValueId ) );
                    if ( marketingCampaignAudience == null )
                    {
                        marketingCampaignAudience = new MarketingCampaignAudience();
                        marketingCampaign.MarketingCampaignAudiences.Add( marketingCampaignAudience );
                    }

                    marketingCampaignAudience.AudienceTypeValueId = item.AudienceTypeValueId;
                    marketingCampaignAudience.IsPrimary = item.IsPrimary;
                }

                #endregion

                #region Save MarketingCampaignCampuses to db

                // Update MarketingCampaignCampuses with UI values
                if ( marketingCampaign.MarketingCampaignCampuses == null )
                {
                    marketingCampaign.MarketingCampaignCampuses = new List<MarketingCampaignCampus>();
                }

                // take care of deleted Campuses
                MarketingCampaignCampusService marketingCampaignCampusService = new MarketingCampaignCampusService();
                var deletedCampuses = from mcc in marketingCampaign.MarketingCampaignCampuses.AsQueryable()
                                      where !( cpCampuses.SelectedCampusIds ).Contains( mcc.CampusId )
                                      select mcc;

                deletedCampuses.ToList().ForEach( a =>
                {
                    var c = marketingCampaignCampusService.Get( a.Guid );
                    marketingCampaignCampusService.Delete( c, CurrentPersonId );
                    marketingCampaignCampusService.Save( c, CurrentPersonId );
                } );

                // add or update the Campuses that are assigned in the UI
                foreach ( int campusId in cpCampuses.SelectedCampusIds )
                {
                    MarketingCampaignCampus marketingCampaignCampus = marketingCampaign.MarketingCampaignCampuses.FirstOrDefault( a => a.CampusId.Equals( campusId ) );
                    if ( marketingCampaignCampus == null )
                    {
                        marketingCampaignCampus = new MarketingCampaignCampus();
                        marketingCampaign.MarketingCampaignCampuses.Add( marketingCampaignCampus );
                    }

                    marketingCampaignCampus.CampusId = campusId;
                }

                #endregion

                marketingCampaignService.Save( marketingCampaign, CurrentPersonId );
            } );

            hfMarketingCampaignId.Value = marketingCampaign.Id.ToString();

            // refresh from db using new service context since the above child items were saved outside of the marketingCampaign object
            marketingCampaign = MarketingCampaign.Read( marketingCampaign.Id );
            UpdateReadonlyDetails( marketingCampaign );

            SetEditMode( false );
            pnlDetails.Visible = true;
            pnlList.Visible = false;
        }
Ejemplo n.º 27
0
        /// <summary>
        /// Handles the Click event of the btnSave control.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="EventArgs" /> instance containing the event data.</param>
        protected void btnSave_Click(object sender, EventArgs e)
        {
            MarketingCampaign        marketingCampaign;
            MarketingCampaignService marketingCampaignService = new MarketingCampaignService();

            int marketingCampaignId = int.Parse(hfMarketingCampaignId.Value);

            if (marketingCampaignId == 0)
            {
                marketingCampaign = new MarketingCampaign();
                marketingCampaignService.Add(marketingCampaign, CurrentPersonId);
            }
            else
            {
                marketingCampaign = marketingCampaignService.Get(marketingCampaignId);
            }

            marketingCampaign.Title = tbTitle.Text;
            if (ppContactPerson.SelectedValue.Equals(None.Id.ToString()))
            {
                marketingCampaign.ContactPersonId = null;
            }
            else
            {
                marketingCampaign.ContactPersonId = ppContactPerson.PersonId;
            }

            marketingCampaign.ContactEmail       = tbContactEmail.Text;
            marketingCampaign.ContactPhoneNumber = tbContactPhoneNumber.Text;
            marketingCampaign.ContactFullName    = tbContactFullName.Text;

            if (ddlEventGroup.SelectedValue.Equals(None.Id.ToString()))
            {
                marketingCampaign.EventGroupId = null;
            }
            else
            {
                marketingCampaign.EventGroupId = int.Parse(ddlEventGroup.SelectedValue);
            }

            if (!marketingCampaign.IsValid)
            {
                // Controls will render the error messages
                return;
            }

            RockTransactionScope.WrapTransaction(() =>
            {
                /* Save MarketingCampaignAudiences to db */
                if (marketingCampaign.MarketingCampaignAudiences == null)
                {
                    marketingCampaign.MarketingCampaignAudiences = new List <MarketingCampaignAudience>();
                }

                // delete Audiences that aren't assigned in the UI anymore
                MarketingCampaignAudienceService marketingCampaignAudienceService = new MarketingCampaignAudienceService();
                var deletedAudiences = from audienceInDB in marketingCampaign.MarketingCampaignAudiences.AsQueryable()
                                       where !(from audienceStateItem in MarketingCampaignAudiencesState
                                               select audienceStateItem.AudienceTypeValueId).Contains(audienceInDB.AudienceTypeValueId)
                                       select audienceInDB;
                deletedAudiences.ToList().ForEach(a =>
                {
                    var aud = marketingCampaignAudienceService.Get(a.Guid);
                    marketingCampaignAudienceService.Delete(aud, CurrentPersonId);
                    marketingCampaignAudienceService.Save(aud, CurrentPersonId);
                });

                // add or update the Audiences that are assigned in the UI
                foreach (var item in MarketingCampaignAudiencesState)
                {
                    MarketingCampaignAudience marketingCampaignAudience = marketingCampaign.MarketingCampaignAudiences.FirstOrDefault(a => a.AudienceTypeValueId.Equals(item.AudienceTypeValueId));
                    if (marketingCampaignAudience == null)
                    {
                        marketingCampaignAudience = new MarketingCampaignAudience();
                        marketingCampaign.MarketingCampaignAudiences.Add(marketingCampaignAudience);
                    }

                    marketingCampaignAudience.AudienceTypeValueId = item.AudienceTypeValueId;
                    marketingCampaignAudience.IsPrimary           = item.IsPrimary;
                }

                /* Save MarketingCampaignCampuses to db */

                // Update MarketingCampaignCampuses with UI values
                if (marketingCampaign.MarketingCampaignCampuses == null)
                {
                    marketingCampaign.MarketingCampaignCampuses = new List <MarketingCampaignCampus>();
                }

                // take care of deleted Campuses
                MarketingCampaignCampusService marketingCampaignCampusService = new MarketingCampaignCampusService();
                var deletedCampuses = from mcc in marketingCampaign.MarketingCampaignCampuses.AsQueryable()
                                      where !cpCampuses.SelectedCampusIds.Contains(mcc.CampusId)
                                      select mcc;

                deletedCampuses.ToList().ForEach(a =>
                {
                    var c = marketingCampaignCampusService.Get(a.Guid);
                    marketingCampaignCampusService.Delete(c, CurrentPersonId);
                    marketingCampaignCampusService.Save(c, CurrentPersonId);
                });

                // add or update the Campuses that are assigned in the UI
                foreach (int campusId in cpCampuses.SelectedCampusIds)
                {
                    MarketingCampaignCampus marketingCampaignCampus = marketingCampaign.MarketingCampaignCampuses.FirstOrDefault(a => a.CampusId.Equals(campusId));
                    if (marketingCampaignCampus == null)
                    {
                        marketingCampaignCampus = new MarketingCampaignCampus();
                        marketingCampaign.MarketingCampaignCampuses.Add(marketingCampaignCampus);
                    }

                    marketingCampaignCampus.CampusId = campusId;
                }

                marketingCampaignService.Save(marketingCampaign, CurrentPersonId);
            });


            var qryParams = new Dictionary <string, string>();

            qryParams["marketingCampaignId"] = marketingCampaign.Id.ToString();
            NavigateToPage(RockPage.Guid, qryParams);
        }
Ejemplo n.º 28
0
        /// <summary>
        /// Shows the detail.
        /// </summary>
        /// <param name="marketingCampaignId">The marketing campaign identifier.</param>
        public void ShowDetail( int marketingCampaignId )
        {
            MarketingCampaign marketingCampaign = null;

            if ( !marketingCampaignId.Equals( 0 ) )
            {
                MarketingCampaignService marketingCampaignService = new MarketingCampaignService( new RockContext() );
                marketingCampaign = marketingCampaignService.Get( marketingCampaignId );
            }

            if (marketingCampaign == null)
            {
                marketingCampaign = new MarketingCampaign { Id = 0 };
                marketingCampaign.MarketingCampaignAds = new List<MarketingCampaignAd>();
                marketingCampaign.MarketingCampaignAudiences = new List<MarketingCampaignAudience>();
                marketingCampaign.MarketingCampaignCampuses = new List<MarketingCampaignCampus>();
            }

            hfMarketingCampaignId.Value = marketingCampaign.Id.ToString();

            // render UI based on Authorized and IsSystem
            bool readOnly = false;

            nbEditModeMessage.Text = string.Empty;
            if ( !IsUserAuthorized( Authorization.EDIT ) )
            {
                readOnly = true;
                nbEditModeMessage.Text = EditModeMessage.ReadOnlyEditActionNotAllowed( MarketingCampaign.FriendlyTypeName );
            }

            if ( readOnly )
            {
                btnEdit.Visible = false;
                ShowReadonlyDetails( marketingCampaign );
            }
            else
            {
                btnEdit.Visible = true;
                if ( marketingCampaign.Id > 0 )
                {
                    ShowReadonlyDetails( marketingCampaign );
                }
                else
                {
                    ShowEditDetails( marketingCampaign );
                }
            }
        }
Ejemplo n.º 29
0
        /// <summary>
        /// Shows the edit details.
        /// </summary>
        /// <param name="marketingCampaign">The marketing campaign.</param>
        private void ShowEditDetails( MarketingCampaign marketingCampaign )
        {
            if ( marketingCampaign.Id > 0 )
            {
                lActionTitle.Text = ActionTitle.Edit( MarketingCampaign.FriendlyTypeName ).FormatAsHtmlTitle();
            }
            else
            {
                lActionTitle.Text = ActionTitle.Add( MarketingCampaign.FriendlyTypeName ).FormatAsHtmlTitle();
            }

            SetEditMode( true );

            tbTitle.Text = marketingCampaign.Title;
            tbContactEmail.Text = marketingCampaign.ContactEmail;
            tbContactFullName.Text = marketingCampaign.ContactFullName;
            tbContactPhoneNumber.Text = marketingCampaign.ContactPhoneNumber;

            LoadDropDowns();
            ppContactPerson.SetValue( marketingCampaign.ContactPerson );
            ddlEventGroup.SetValue( marketingCampaign.EventGroupId );

            cpCampuses.SelectedCampusIds = marketingCampaign.MarketingCampaignCampuses.Select( a => a.CampusId ).ToList();

            MarketingCampaignAudiencesState = new ViewStateList<MarketingCampaignAudience>();
            foreach ( var item in marketingCampaign.MarketingCampaignAudiences.ToList() )
            {
                MarketingCampaignAudiencesState.Add( new MarketingCampaignAudience { Id = item.Id, IsPrimary = item.IsPrimary, AudienceTypeValueId = item.AudienceTypeValueId } );
            }

            BindMarketingCampaignAudiencesGrid();
        }
Ejemplo n.º 30
0
 public Discount()
 {
     this.marketingCampaign = new MarketingCampaign();
 }
Ejemplo n.º 31
0
        /// <summary>
        /// Updates the readonly details.
        /// </summary>
        /// <param name="marketingCampaign">The marketing campaign.</param>
        private void UpdateReadonlyDetails( MarketingCampaign marketingCampaign )
        {
            // make a Description section for nonEdit mode
            string descriptionFormat = "<dt>{0}</dt><dd>{1}</dd>";
            lblMainDetails.Text = @"
            <div class='span6'>
            <dl>";

            lblMainDetails.Text += string.Format( descriptionFormat, "Title", marketingCampaign.Title );

            string contactInfo = string.Format( "{0}<br>{1}<br>{2}", marketingCampaign.ContactFullName, marketingCampaign.ContactEmail, marketingCampaign.ContactPhoneNumber );
            contactInfo = string.IsNullOrWhiteSpace( contactInfo.Replace( "<br>", string.Empty ) ) ? None.TextHtml : contactInfo;
            lblMainDetails.Text += string.Format( descriptionFormat, "Contact", contactInfo );

            lblMainDetails.Text += string.Format( descriptionFormat, "Event", marketingCampaign.EventGroup == null ? None.TextHtml : marketingCampaign.EventGroup.Name );

            lblMainDetails.Text += @"
            </dl>
            </div>
            <div class='span6'>
            <dl>";

            string campusList = marketingCampaign.MarketingCampaignCampuses.Select( a => a.Campus.Name ).OrderBy( a => a ).ToList().AsDelimited( "<br>" );
            campusList = marketingCampaign.MarketingCampaignCampuses.Count == 0 ? None.TextHtml : campusList;
            lblMainDetails.Text += string.Format( descriptionFormat, "Campuses", campusList );

            string primaryAudiences = marketingCampaign.MarketingCampaignAudiences.Where( a => a.IsPrimary ).Select( a => a.Name ).OrderBy( a => a ).ToList().AsDelimited( "<br>" );
            primaryAudiences = marketingCampaign.MarketingCampaignAudiences.Where( a => a.IsPrimary ).Count() == 0 ? None.TextHtml : primaryAudiences;
            lblMainDetails.Text += string.Format( descriptionFormat, "Primary Audience", primaryAudiences );

            string secondaryAudiences = marketingCampaign.MarketingCampaignAudiences.Where( a => !a.IsPrimary ).Select( a => a.Name ).OrderBy( a => a ).ToList().AsDelimited( "<br>" );
            secondaryAudiences = marketingCampaign.MarketingCampaignAudiences.Where( a => !a.IsPrimary ).Count() == 0 ? None.TextHtml : secondaryAudiences;
            lblMainDetails.Text += string.Format( descriptionFormat, "Secondary Audience", secondaryAudiences );

            lblMainDetails.Text += @"
            </dl>
            </div>";
        }
Ejemplo n.º 32
0
        /// <summary>
        /// Handles the Click event of the btnSave control.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="EventArgs" /> instance containing the event data.</param>
        protected void btnSave_Click( object sender, EventArgs e )
        {
            var rockContext = new RockContext();

            MarketingCampaign marketingCampaign;

            MarketingCampaignService marketingCampaignService = new MarketingCampaignService( rockContext );

            int marketingCampaignId = int.Parse( hfMarketingCampaignId.Value );

            if ( marketingCampaignId == 0 )
            {
                marketingCampaign = new MarketingCampaign();
                marketingCampaignService.Add( marketingCampaign );
            }
            else
            {
                marketingCampaign = marketingCampaignService.Get( marketingCampaignId );
            }

            marketingCampaign.Title = tbTitle.Text;
            if ( ppContactPerson.SelectedValue.Equals( None.Id.ToString() ) )
            {
                marketingCampaign.ContactPersonId = null;
            }
            else
            {
                marketingCampaign.ContactPersonId = ppContactPerson.PersonId;
            }

            marketingCampaign.ContactEmail = tbContactEmail.Text;
            marketingCampaign.ContactPhoneNumber = tbContactPhoneNumber.Text;
            marketingCampaign.ContactFullName = tbContactFullName.Text;

            if ( ddlEventGroup.SelectedValue.Equals( None.Id.ToString() ) )
            {
                marketingCampaign.EventGroupId = null;
            }
            else
            {
                marketingCampaign.EventGroupId = int.Parse( ddlEventGroup.SelectedValue );
            }

            if ( !marketingCampaign.IsValid )
            {
                // Controls will render the error messages
                return;
            }

            rockContext.WrapTransaction( () =>
            {
                /* Save MarketingCampaignAudiences to db */
                if ( marketingCampaign.MarketingCampaignAudiences == null )
                {
                    marketingCampaign.MarketingCampaignAudiences = new List<MarketingCampaignAudience>();
                }

                // delete Audiences that aren't assigned in the UI anymore
                MarketingCampaignAudienceService marketingCampaignAudienceService = new MarketingCampaignAudienceService( rockContext );
                var deletedAudiences = from audienceInDB in marketingCampaign.MarketingCampaignAudiences.AsQueryable()
                                       where !( from audienceStateItem in MarketingCampaignAudiencesState
                                                select audienceStateItem.AudienceTypeValueId ).Contains( audienceInDB.AudienceTypeValueId )
                                       select audienceInDB;
                deletedAudiences.ToList().ForEach( a =>
                {
                    var aud = marketingCampaignAudienceService.Get( a.Guid );
                    marketingCampaignAudienceService.Delete( aud );
                } );

                rockContext.SaveChanges();

                // add or update the Audiences that are assigned in the UI
                foreach ( var item in MarketingCampaignAudiencesState )
                {
                    MarketingCampaignAudience marketingCampaignAudience = marketingCampaign.MarketingCampaignAudiences.FirstOrDefault( a => a.AudienceTypeValueId.Equals( item.AudienceTypeValueId ) );
                    if ( marketingCampaignAudience == null )
                    {
                        marketingCampaignAudience = new MarketingCampaignAudience();
                        marketingCampaign.MarketingCampaignAudiences.Add( marketingCampaignAudience );
                    }

                    marketingCampaignAudience.AudienceTypeValueId = item.AudienceTypeValueId;
                    marketingCampaignAudience.IsPrimary = item.IsPrimary;
                }

                /* Save MarketingCampaignCampuses to db */

                // Update MarketingCampaignCampuses with UI values
                if ( marketingCampaign.MarketingCampaignCampuses == null )
                {
                    marketingCampaign.MarketingCampaignCampuses = new List<MarketingCampaignCampus>();
                }

                // take care of deleted Campuses
                MarketingCampaignCampusService marketingCampaignCampusService = new MarketingCampaignCampusService( rockContext );
                var deletedCampuses = from mcc in marketingCampaign.MarketingCampaignCampuses.AsQueryable()
                                      where !cpCampuses.SelectedCampusIds.Contains( mcc.CampusId )
                                      select mcc;

                deletedCampuses.ToList().ForEach( a =>
                {
                    var c = marketingCampaignCampusService.Get( a.Guid );
                    marketingCampaignCampusService.Delete( c );
                } );

                rockContext.SaveChanges();

                // add or update the Campuses that are assigned in the UI
                foreach ( int campusId in cpCampuses.SelectedCampusIds )
                {
                    MarketingCampaignCampus marketingCampaignCampus = marketingCampaign.MarketingCampaignCampuses.FirstOrDefault( a => a.CampusId.Equals( campusId ) );
                    if ( marketingCampaignCampus == null )
                    {
                        marketingCampaignCampus = new MarketingCampaignCampus();
                        marketingCampaign.MarketingCampaignCampuses.Add( marketingCampaignCampus );
                    }

                    marketingCampaignCampus.CampusId = campusId;
                }

                rockContext.SaveChanges();
            } );

            var qryParams = new Dictionary<string, string>();
            qryParams["marketingCampaignId"] = marketingCampaign.Id.ToString();
            NavigateToPage( RockPage.Guid, qryParams );
        }
Ejemplo n.º 33
0
        public void SaveMarketingCampaign(int userId, MarketingCampaign campaign)
        {
            if (campaign.PKID != 0)
            {
                var c1 = GetMarketingCampaign(userId, campaign.PKID).Include(x => x.MarketingCampaignExceptions).FirstOrDefault();
                if (c1 == null)
                {
                    return;
                }

                c1.Name            = campaign.Name;
                c1.FKDefaultScreen = campaign.FKDefaultScreen;
                c1.Orientation     = campaign.Orientation;
                c1.FKWelcomeMessageBackgroundImage = campaign.FKWelcomeMessageBackgroundImage;
                c1.WelcomeMessage = campaign.WelcomeMessage;
                c1.MarketingCampaignExceptions.ToList().ForEach(e =>
                {
                    var exc = campaign.MarketingCampaignExceptions.FirstOrDefault(x => x.PKID == e.PKID);
                    if (exc != null)
                    {
                        e.FKMarketingCampaignScreen = exc.FKMarketingCampaignScreen;
                        e.Start = exc.Start;
                        e.End   = exc.End;
                    }
                    else
                    {
                        ProxylessContext.MarketingCampaignExceptions.Remove(e);
                    }
                });
                campaign.MarketingCampaignExceptions.ForEach(e =>
                {
                    var exc = c1.MarketingCampaignExceptions.FirstOrDefault(x => x.PKID == e.PKID);
                    if (exc == null)
                    {
                        c1.MarketingCampaignExceptions.Add(new MarketingCampaignException()
                        {
                            FKMarketingCampaignScreen = e.FKMarketingCampaignScreen,
                            Start = e.Start,
                            End   = e.End
                        });
                    }
                });
            }
            else
            {
                Rp.ExecuteAction(() =>
                {
                    var user = ProxylessContext.ContactUsers.Include(x => x.UserRoleMaps.Select(y => y.UserRolePermissionTagMaps)).FirstOrDefault(x => x.PKID == userId);
                    if (user != null)
                    {
                        var role = user.UserRoleMaps.FirstOrDefault(x => x.UserRolePermissionTagMaps.Any());
                        if (role != null)
                        {
                            var permissions = role.UserRolePermissionTagMaps;
                            permissions.ForEach(
                                x =>
                                campaign.MarketingCampaignPermissionsTagMaps.Add(new MarketingCampaignPermissionsTagMap()
                            {
                                FKPermissionTag = x.FKPermissionTag
                            }));
                        }
                    }

                    ProxylessContext.MarketingCampaigns.Add(campaign);
                });
            }

            ProxylessContext.LogValidationFailSaveChanges(string.Format("CU|{0}", userId));
        }
Ejemplo n.º 34
0
        /// <summary>
        /// Shows the readonly details.
        /// </summary>
        /// <param name="marketingCampaign">The marketing campaign.</param>
        private void ShowReadonlyDetails( MarketingCampaign marketingCampaign )
        {
            SetEditMode( false );

            // set title.text value even though it is hidden so that Ad Edit can get the title of the campaign
            tbTitle.Text = marketingCampaign.Title;

            string contactInfo = string.Format( "{0}<br>{1}<br>{2}", marketingCampaign.ContactFullName, marketingCampaign.ContactEmail, marketingCampaign.ContactPhoneNumber );
            contactInfo = string.IsNullOrWhiteSpace( contactInfo.Replace( "<br>", string.Empty ) ) ? None.TextHtml : contactInfo;

            string eventGroupHtml = null;
            /*
             * -- Hide until we implement Marketing Events

            string eventPageGuid = this.GetAttributeValue( "EventPage" );

            if ( marketingCampaign.EventGroup != null )
            {
                eventGroupHtml = marketingCampaign.EventGroup.Name;

                if ( !string.IsNullOrWhiteSpace( eventPageGuid ) )
                {
                    var page = new PageService( new RockContext() ).Get( new Guid( eventPageGuid ) );

                    Dictionary<string, string> queryString = new Dictionary<string, string>();
                    queryString.Add( "groupId", marketingCampaign.EventGroupId.ToString() );
                    string eventGroupUrl = new PageReference( page.Id, 0, queryString ).BuildUrl();
                    eventGroupHtml = string.Format( "<a href='{0}'>{1}</a>", eventGroupUrl, marketingCampaign.EventGroup.Name );
                }
            }
            */

            string primaryAudiences = marketingCampaign.MarketingCampaignAudiences.Where( a => a.IsPrimary ).Select( a => a.Name ).OrderBy( a => a ).ToList().AsDelimited( "<br>" );
            primaryAudiences = marketingCampaign.MarketingCampaignAudiences.Where( a => a.IsPrimary ).Count() == 0 ? None.TextHtml : primaryAudiences;

            string secondaryAudiences = marketingCampaign.MarketingCampaignAudiences.Where( a => !a.IsPrimary ).Select( a => a.Name ).OrderBy( a => a ).ToList().AsDelimited( "<br>" );
            secondaryAudiences = marketingCampaign.MarketingCampaignAudiences.Where( a => !a.IsPrimary ).Count() == 0 ? None.TextHtml : secondaryAudiences;

            lCampaignTitle.Text = marketingCampaign.Title.FormatAsHtmlTitle();

            DescriptionList descriptionListCol1 = new DescriptionList()
                .Add("Contact", contactInfo);

            if (eventGroupHtml != null)
            {
                descriptionListCol1.Add("Linked Event", eventGroupHtml);
            }

            lDetailsCol1.Text = descriptionListCol1.Html;

            DescriptionList descriptionListCol2 = new DescriptionList()
                .Add("Primary Audience", primaryAudiences)
                .Add("Secondary Audience", secondaryAudiences);

            lDetailsCol2.Text = descriptionListCol2.Html;

            lCampusLabels.Text = string.Empty;
            foreach (var campus in marketingCampaign.MarketingCampaignCampuses.Select(a => a.Campus.Name).OrderBy(a => a).ToList())
            {
                lCampusLabels.Text += "<span class='label label-campus'>" + campus + "</span> ";
            }
        }
Ejemplo n.º 35
0
        public static MarketingCampaign CreateMarketingCampaign(string companyName, string website, string city, string country,
                                                                string username, string email, string phone, HttpFileCollectionBase postedFiles, string description,
                                                                HttpPostedFileBase logoFile, string referringURL, Action <EntityContext, Company> createPortfolios)
        {
            var context = new Entities();

            if (Account.Exists(username))
            {
                throw new Exception("The username already exists.");
            }

            var account = new Account();

            account.Username      = username;
            account.Password      = AgileFx.Security.CryptoUtil.HashPassword(Guid.NewGuid().ToString());
            account.Status        = ACCOUNT_STATUS.ACTIVE;
            account.LastLoginDate = DateTime.Now;
            account.DateAdded     = DateTime.Now;
            account.Type          = ACCOUNT_TYPE.COMPANY;
            account.Email         = email;

            var company = new Company();

            company.Account = account;
            company.Name    = companyName;
            company.Website = website;
            company.City    = city;
            company.Country = country;
            company.Phone   = phone;

            if (logoFile.ContentLength > 0)
            {
                company.SaveLogo(logoFile);
            }

            company.Description = description;

            foreach (var tag in context.Tag.Where(t => t.Name == "Web Design" || t.Name == ""))
            {
                company.Tags.Add(tag);
            }

            createPortfolios(context, company);

            context.AddObject(company);
            context.SaveChanges();

            var marketingCamp = new MarketingCampaign();

            marketingCamp.Account      = account.Id;
            marketingCamp.DateCreated  = DateTime.UtcNow;
            marketingCamp.DateModified = DateTime.UtcNow;
            marketingCamp.ReferringURL = referringURL;
            marketingCamp.Status       = MARKETING_CAMPAIGN_STATUS.NEW;
            marketingCamp.Token        = Guid.NewGuid();

            context.AddObject(marketingCamp);
            context.SaveChanges();

            return(marketingCamp);
        }