/// <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(); }
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)); }
/// <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); }
/// <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); }
/// <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 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(); }
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; }
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); }
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); }
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); }
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); }
/// <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); } }
/// <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); }
/// <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(); } } }
/// <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(); }
/// <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(); }
/// <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(); }
/// <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(); }
/// <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; }
/// <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> "; } }
/// <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; }
/// <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); }
/// <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 ); } } }
/// <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(); }
public Discount() { this.marketingCampaign = new MarketingCampaign(); }
/// <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>"; }
/// <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 ); }
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)); }
/// <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> "; } }
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); }