public static void SetFullUrlOfImages(this EditionTranslationEntity editionTranslation) { if (!string.IsNullOrWhiteSpace(editionTranslation.WebLogoFileName)) { editionTranslation.WebLogoFileName = EditionImageType.WebLogo.BlobFullUrl(editionTranslation); //.WebLogoFileName); } if (!string.IsNullOrWhiteSpace(editionTranslation.PeopleImageFileName)) { editionTranslation.PeopleImageFileName = EditionImageType.PeopleImage.BlobFullUrl(editionTranslation); //.PeopleImageFileName); } if (!string.IsNullOrWhiteSpace(editionTranslation.ProductImageFileName)) { editionTranslation.ProductImageFileName = EditionImageType.ProductImage.BlobFullUrl(editionTranslation); //.ProductImageFileName); } if (!string.IsNullOrWhiteSpace(editionTranslation.MasterLogoFileName)) { editionTranslation.MasterLogoFileName = EditionImageType.MasterLogo.BlobFullUrl(editionTranslation); //.MasterLogoFileName); } if (!string.IsNullOrWhiteSpace(editionTranslation.CrmLogoFileName)) { editionTranslation.CrmLogoFileName = EditionImageType.CrmLogo.BlobFullUrl(editionTranslation); //.CrmLogoFileName); } if (!string.IsNullOrWhiteSpace(editionTranslation.IconFileName)) { editionTranslation.IconFileName = EditionImageType.Icon.BlobFullUrl(editionTranslation); //.IconFileName); } }
public bool UpdateEditionTranslation(EditionTranslationEntity editionTranslationEntity, int userId, bool?autoIntegration = false) { var success = false; if (editionTranslationEntity != null) { var editionTranslation = _unitOfWork.EditionTranslationRepository.GetById(editionTranslationEntity.EditionTranslationId); if (editionTranslation != null) { // TODO: Mapping overrides the values of the properties which are unintended to be mapped. Mapper.Map(editionTranslationEntity, editionTranslation); if (autoIntegration == false) { editionTranslation.UpdateTime = DateTime.Now; editionTranslation.UpdateUser = userId; } else { editionTranslation.UpdateTimeByAutoIntegration = DateTime.Now; } _unitOfWork.EditionTranslationRepository.Update(editionTranslation); _unitOfWork.Save(); success = true; } } return(success); }
public static EditionEditImagesModel ComposeEditionEditImagesModel( CedUser currentUser, EditionEntity edition, EditionTranslationEntity editionTranslation, bool isEditableForImages) { var model = new EditionEditImagesModel { EditionTranslationId = editionTranslation.EditionTranslationId, EditionId = edition.EditionId, EditionName = edition.EditionName, ProductImageFileName = editionTranslation.ProductImageFileName, MasterLogoFileName = editionTranslation.MasterLogoFileName, CrmLogoFileName = editionTranslation.CrmLogoFileName, IconFileName = editionTranslation.IconFileName, PromotedLogoFileName = editionTranslation.PromotedLogoFileName, DetailsImageFileName = editionTranslation.DetailsImageFileName, LanguageCode = editionTranslation.LanguageCode, IsAlive = edition.IsAlive(), IsCancelled = edition.IsCancelled(), IsEditableForImages = isEditableForImages, CurrentUser = currentUser }; return(model); }
public static string GetFileName(this EditionTranslationEntity editionTranslation, EditionImageType imageType) { switch (imageType) { case EditionImageType.WebLogo: return(editionTranslation.WebLogoFileName); case EditionImageType.PeopleImage: return(editionTranslation.PeopleImageFileName); case EditionImageType.MasterLogo: return(editionTranslation.MasterLogoFileName); case EditionImageType.CrmLogo: return(editionTranslation.CrmLogoFileName); case EditionImageType.ProductImage: return(editionTranslation.ProductImageFileName); case EditionImageType.Icon: return(editionTranslation.IconFileName); case EditionImageType.PromotedLogo: return(editionTranslation.PromotedLogoFileName); case EditionImageType.DetailsImage: return(editionTranslation.DetailsImageFileName); default: throw new Exception("Unexpected edition image type!"); } }
public static string GetUpdatedContent(EditionTranslationEntity current, EditionTranslationEntity updated) { var diff = current.Compare(updated); diff = PrepareDiff(diff); var updateInfo = new HtmlUpdateInfo("EditionTranslation", diff, true); var updatedContent = updateInfo.ComposeContent(); return(updatedContent); }
public static string BlobFullUrl(this EditionImageType editionImageType, EditionTranslationEntity editionTranslation) { var fileName = editionTranslation.GetFileName(editionImageType); if (string.IsNullOrWhiteSpace(fileName)) { return(editionImageType.EditionDefaultImageUrl()); } return(editionImageType.BlobSubDirectory() + fileName); }
public static void CopyEditionImages(int editionId, string editionName, EditionTranslationEntity sourceEditionTranslation, EditionTranslationEntity targetEditionTranslation) { foreach (EditionImageType imageType in Enum.GetValues(typeof(EditionImageType))) { var sourceFileName = sourceEditionTranslation.GetFileName(imageType); var targetFileName = ComposeImageName(editionId, editionName, targetEditionTranslation.LanguageCode, Path.GetExtension(sourceFileName)); var uploadedFileName = CopyImageOnAzure(sourceFileName, targetFileName, imageType); targetEditionTranslation.SetFileName(imageType, uploadedFileName); } }
public int CreateEditionTranslation(EditionTranslationEntity editionTranslationEntity, int userId) { var editionTranslation = Mapper.Map <EditionTranslationEntity, EditionTranslation>(editionTranslationEntity); editionTranslation.CreateTime = DateTime.Now; editionTranslation.CreateUser = userId; _unitOfWork.EditionTranslationRepository.Insert(editionTranslation); _unitOfWork.Save(); return(editionTranslation.EditionTranslationId); }
public static void RenameEditionImages(int editionId, string newEditionName, EditionTranslationEntity editionTranslation) { var azureService = new Service(); foreach (EditionImageType imageType in Enum.GetValues(typeof(EditionImageType))) { var oldFileName = editionTranslation.GetFileName(imageType); var newFileName = ComposeImageName(editionId, newEditionName, editionTranslation.LanguageCode, Path.GetExtension(oldFileName)); var oldFileFullName = imageType.BlobFullName(oldFileName); var newFileFullName = imageType.BlobFullName(newFileName); azureService.RenameFile(oldFileFullName, newFileFullName); editionTranslation.SetFileName(imageType, newFileName); } }
public static EditionTranslationEntity PrepareNewEditionTranslation(Edition newEdition, DWStaging.Edition stagingEdition, EditionTranslationEntity lastEditionTranslation) { if (lastEditionTranslation == null) { lastEditionTranslation = new EditionTranslationEntity { LanguageCode = LanguageHelper.GetBaseLanguageCultureName() }; } var venueName = lastEditionTranslation.LanguageCode == LanguageHelper.GetBaseLanguageCultureName() ? stagingEdition.EventVenue : lastEditionTranslation.VenueName; var newEditionTranslation = new EditionTranslationEntity { EditionId = newEdition.EditionId, LanguageCode = lastEditionTranslation.LanguageCode, Summary = lastEditionTranslation.Summary, Description = lastEditionTranslation.Description, ExhibitorProfile = lastEditionTranslation.ExhibitorProfile, VisitorProfile = lastEditionTranslation.VisitorProfile, VenueName = venueName, MapVenueFullAddress = lastEditionTranslation.MapVenueFullAddress, WebLogoFileName = lastEditionTranslation.WebLogoFileName, PeopleImageFileName = lastEditionTranslation.PeopleImageFileName, ProductImageFileName = lastEditionTranslation.ProductImageFileName, MasterLogoFileName = lastEditionTranslation.MasterLogoFileName, CrmLogoFileName = lastEditionTranslation.CrmLogoFileName, IconFileName = lastEditionTranslation.IconFileName, BookStandUrl = lastEditionTranslation.BookStandUrl, OnlineInvitationUrl = lastEditionTranslation.OnlineInvitationUrl, CreateTime = DateTime.Now, CreateUser = Constants.AutoIntegrationUserId }; //EditionName = stagingEdition.EventName, //ReportingName = !string.IsNullOrWhiteSpace(stagingEdition.EventNameReporting) ? stagingEdition.EventNameReporting : stagingEdition.EventName, //LocalName = !string.IsNullOrWhiteSpace(stagingEdition.EventLongNameLocal) ? stagingEdition.EventLongNameLocal : stagingEdition.EventName, //InternationalName = !string.IsNullOrWhiteSpace(stagingEdition.EventLongNameInternational) ? stagingEdition.EventLongNameInternational : stagingEdition.EventName, return(newEditionTranslation); }
private int SaveEditionTranslation(EditionTranslationEntity editionTranslation, DWStaging.Edition stagingEdition) { try { var et = Mapper.Map <EditionTranslationEntity, EditionTranslation>(editionTranslation); _unitOfWork.EditionTranslationRepository.Insert(et); _unitOfWork.Save(); return(et.EditionTranslationId); } catch (Exception exc) { var extraInfo = "StagingEditionEventBEID=" + stagingEdition.EventBEID; var log = CreateInternalLog(exc, extraInfo); ExternalLogHelper.Log(log, LoggingEventType.Error); return(-1); } }
bool IsEditionTranslationInfoCompleted(EditionTranslationEntity editionTranslationEntity, EditionInfoType infoType) { return(EditionServiceHelper.IsEditionInfoCompleted(editionTranslationEntity, infoType)); }
public void CopySocialMediaAccounts(int sourceEditionId, string languageCode, EditionTranslationEntity targetEditionTranslation) { var socialMedias = _editionTranslationSocialMediaServices.GetByEdition(sourceEditionId, languageCode); foreach (var sm in socialMedias) { var clonedEntity = (EditionTranslationSocialMediaEntity)sm.Clone(); clonedEntity.EditionId = targetEditionTranslation.EditionId; clonedEntity.EditionTranslationId = targetEditionTranslation.EditionTranslationId; _editionTranslationSocialMediaServices.Create(clonedEntity, Constants.AutoIntegrationUserId); } }
public static EditionEditGeneralInfoModel ComposeEditionEditGeneralInfoModel( CedUser currentUser, EditionEntity edition, EditionTranslationEntity editionTranslation, string lang, bool isEditableForImages) { var model = new EditionEditGeneralInfoModel { EditionTranslationId = editionTranslation.EditionTranslationId, EditionId = edition.EditionId, EditionName = edition.EditionName, EditionNo = edition.EditionNo, EventId = edition.EventId, Country = edition.Country, City = edition.City, CountryLocalName = edition.CountryLocalName, CityLocalName = edition.CityLocalName, ReportingName = edition.ReportingName, LocalName = edition.LocalName, InternationalName = edition.InternationalName, LanguageCode = lang, EventType = edition.Event.EventTypeCode.ToEnumFromDescription <EventType>(), StartDate = edition.StartDate, EndDate = edition.EndDate, VisitEndTime = edition.VisitEndTime, VisitStartTime = edition.VisitStartTime, CoolOffPeriodStartDate = edition.CoolOffPeriodStartDate, CoolOffPeriodEndDate = edition.CoolOffPeriodEndDate, InternationalDate = edition.InternationalDate, LocalDate = edition.LocalDate, Summary = editionTranslation.Summary, Description = editionTranslation.Description, ExhibitorProfile = editionTranslation.ExhibitorProfile, VisitorProfile = editionTranslation.VisitorProfile, WebLogoFileName = editionTranslation.WebLogoFileName, PeopleImageFileName = editionTranslation.PeopleImageFileName, EventFlagPictureFileName = edition.EventFlagPictureFileName, AllDayEvent = edition.AllDayEvent, Promoted = edition.Promoted, TradeShowConnectDisplay = edition.TradeShowConnectDisplay, ManagingOfficeEmail = edition.ManagingOfficeEmail, ManagingOfficePhone = edition.ManagingOfficePhone, EventWebSite = edition.EventWebSite, MarketoPreferenceCenterLink = edition.MarketoPreferenceCenterLink, VenueName = editionTranslation.VenueName, MapVenueFullAddress = editionTranslation.MapVenueFullAddress, VenueCoordinates = edition.VenueCoordinates, BookStandUrl = editionTranslation.BookStandUrl, OnlineInvitationUrl = editionTranslation.OnlineInvitationUrl, EventActivity = edition.EventActivity, DisplayOnIteGermany = edition.DisplayOnIteGermany, DisplayOnIteAsia = edition.DisplayOnIteAsia, DisplayOnIteI = edition.DisplayOnIteI, DisplayOnItePoland = edition.DisplayOnItePoland, DisplayOnIteModa = edition.DisplayOnIteModa, DisplayOnIteTurkey = edition.DisplayOnIteTurkey, DisplayOnIteRussia = edition.DisplayOnIteRussia, DisplayOnIteEurasia = edition.DisplayOnIteEurasia, DisplayOnTradeLink = edition.DisplayOnTradeLink, DisplayOnIteUkraine = edition.DisplayOnIteUkraine, DisplayOnIteBuildInteriors = edition.DisplayOnIteBuildInteriors, DisplayOnIteFoodDrink = edition.DisplayOnIteFoodDrink, DisplayOnIteOilGas = edition.DisplayOnIteOilGas, DisplayOnIteTravelTourism = edition.DisplayOnIteTravelTourism, DisplayOnIteTransportLogistics = edition.DisplayOnIteTransportLogistics, DisplayOnIteFashion = edition.DisplayOnIteFashion, DisplayOnIteSecurity = edition.DisplayOnIteSecurity, DisplayOnIteBeauty = edition.DisplayOnIteBeauty, DisplayOnIteHealthCare = edition.DisplayOnIteHealthCare, DisplayOnIteMining = edition.DisplayOnIteMining, DisplayOnIteEngineeringIndustrial = edition.DisplayOnIteEngineeringIndustrial, HiddenFromWebSites = edition.HiddenFromWebSites, IsAlive = edition.IsAlive(), IsCancelled = edition.IsCancelled(), IsEditableForImages = isEditableForImages, CurrentUser = currentUser }; return(model); }
internal EmailResult SendNotificationEmailForEditionCreation(EditionEntity edition, EditionTranslationEntity editionTranslation, EditionMailTemplate emailTemplate) { if (!string.IsNullOrWhiteSpace(emailTemplate.Recipients)) { const NotificationType notificationType = NotificationType.EditionCreated; var recipientFullName = emailTemplate.RecipientFullName; var body = "Hello," + "<br/><br/>" + $"This is to inform you that a new event has been created with a name {edition.EditionName}." + @"<br/><br/> Please click the button below to go to event's page."; var buttonUrl = _editionHelper.GetEditionUrl(edition); return(_emailNotificationHelper.Send(edition, editionTranslation, notificationType, recipientFullName, body, emailTemplate.Recipients, buttonUrl, emailTemplate.UnsubscriptionUrl)); } return(new EmailResult { Sent = false, ErrorMessage = "Event doesn't fit the necessary criteria for emailing." }); }
private EmailResult SendNotificationEmailForEditionLocationUpdate(EditionEntity edition, EditionTranslationEntity editionTranslation, EditionMailTemplate emailTemplate) { if (!WebConfigHelper.TrackEditionLocationUpdate) { return new EmailResult { Sent = false, ErrorMessage = "Tracking disabled." } } ; // IF EDITION START DATE IS LATER THAN NOW if (edition.HasNotStartedYet() && edition.HasCityOrCountry()) { // SEND NOTIFICATION EMAIL var recipients = emailTemplate.Recipients; if (!string.IsNullOrWhiteSpace(recipients)) { const NotificationType notificationType = NotificationType.EditionLocationUpdated; var recipientFullName = emailTemplate.RecipientFullName; var body = $"Dear {recipientFullName} ," + "<br/><br/>" + $"This is to inform you that there have been some changes to the city and/or country information for {edition.EditionName}." + @"<br/><br/> You may want to log in and double check whether this information affects the address / map location of the existing Venue location information. <br/><br/> To do so please click the button below to go to event edition's page and make the changes in Event Venue section of General Info tab shown below if needed. <br/><br/>" + $"<img src='{AzureStorageHelper.AzureStorageContainerUri}event-venue-map.png' />"; var buttonUrl = _editionHelper.GetEditionUrl(edition); return(_emailNotificationHelper.Send(edition, editionTranslation, notificationType, recipientFullName, body, recipients, buttonUrl, emailTemplate.UnsubscriptionUrl)); } } return(new EmailResult { Sent = false, ErrorMessage = "Event doesn't fit the necessary criteria for emailing." }); }
private EmailResult SendNotificationEmailForEditionNameUpdate(EditionEntity edition, EditionTranslationEntity editionTranslation, EditionMailTemplate emailTemplate) { if (!WebConfigHelper.TrackEditionNameUpdate) { return new EmailResult { Sent = false, ErrorMessage = "Tracking disabled." } } ; // ADDITIONAL RECIPIENTS if (!WebConfigHelper.IsLocal && !WebConfigHelper.IsTest) { emailTemplate.Recipients += "," + WebConfigHelper.TrackEditionNameUpdateAdditionalRecipients; } if (!string.IsNullOrWhiteSpace(emailTemplate.Recipients)) { const NotificationType notificationType = NotificationType.EditionNameUpdated; var recipientFullName = emailTemplate.RecipientFullName; var body = $"Dear {recipientFullName} ," + "<br/><br/>" + $"This is to inform you that there have been some changes to the event name information for {edition.EditionName}." + @"<br/><br/> You may want to log in and double check whether this change causes inconsistency on any information. <br/><br/> To do so please click the button below to go to event's page."; var buttonUrl = _editionHelper.GetEditionUrl(edition); return(_emailNotificationHelper.Send(edition, editionTranslation, notificationType, recipientFullName, body, emailTemplate.Recipients, buttonUrl, emailTemplate.UnsubscriptionUrl)); } return(new EmailResult { Sent = false, ErrorMessage = "Event doesn't fit the necessary criteria for emailing." }); }
private void StartNotificationProcessForEditionLocationUpdate(EditionEntity edition, EditionTranslationEntity editionTranslation, List <Variance> diffOnEdition) { if (IsLocationChanged(diffOnEdition)) { if (WebConfigHelper.TrackEditionLocationUpdate) { var emailTemplate = GetEmailTemplateForEditionUpdateNotification(edition); SendNotificationEmailForEditionLocationUpdate(edition, editionTranslation, emailTemplate); } } }
private void StartNotificationProcessForEditionNameUpdate(EditionEntity edition, EditionTranslationEntity editionTranslation, List <Variance> diffOnEdition) { if (IsEditionNameChanged(diffOnEdition)) { if (WebConfigHelper.TrackEditionNameUpdate) { var emailTemplate = GetEmailTemplateForEditionUpdateNotification(edition); var recipients = WebConfigHelper.PrimaryDirectorNotificationsUseMockRecipients ? WebConfigHelper.AdminEmails : _eventDirectorServices.GetRecipientEmails(edition); emailTemplate.Recipients = recipients; SendNotificationEmailForEditionNameUpdate(edition, editionTranslation, emailTemplate); } } }
public void CreateEventEditionFromStagingDb(DWStaging.Edition stagingEdition, DateTime eventStartDate, DateTime eventEndDate) { using (var scope = new TransactionScope()) { var existingEvent = _unitOfWork.EventRepository.Get(x => x.MasterCode == stagingEdition.EventMasterCode); int eventId; if (existingEvent == null) { var newEvent = EditionServiceHelper.PrepareNewEvent(stagingEdition); if (!SaveNewEvent(newEvent, stagingEdition)) { return; } eventId = newEvent.EventId; } else { eventId = existingEvent.EventId; } var axId = Convert.ToInt32(stagingEdition.EventBEID); // TODO: Make it faster var lastEdition = _editionServices.GetLastEdition(eventId, Utility.Constants.DefaultValidEditionStatusesForCed, Utility.Constants.ValidEventTypesForCed); var newEdition = EditionServiceHelper.PrepareNewEdition(axId, eventId, stagingEdition, eventStartDate, eventEndDate, lastEdition); EditionTranslationEntity newEditionTranslation = null; if (!SaveNewEdition(newEdition, stagingEdition)) { return; } UpdateStartDateDiffFieldsOfNewEdition(newEdition.EditionId); if (lastEdition != null) { foreach (var editionTranslation in lastEdition.EditionTranslations) { newEditionTranslation = EditionServiceHelper.PrepareNewEditionTranslation(newEdition, stagingEdition, editionTranslation); EditionServiceHelper.CopyEditionImages(newEdition.EditionId, newEdition.EditionName, editionTranslation, newEditionTranslation); var newEditionTranslationId = SaveEditionTranslation(newEditionTranslation, stagingEdition); if (!(newEditionTranslationId > 0)) { continue; } newEditionTranslation.EditionTranslationId = newEditionTranslationId; _editionServiceHelper.CopySocialMediaAccounts(lastEdition.EditionId, editionTranslation.LanguageCode, newEditionTranslation); } } else { // Add a new EditionTranslation (en-gb) newEditionTranslation = EditionServiceHelper.PrepareNewEditionTranslation(newEdition, stagingEdition, null); var newEditionTranslationId = SaveEditionTranslation(newEditionTranslation, stagingEdition); } scope.Complete(); if (Utility.Constants.ValidEventTypesForCed.Contains(newEdition.EventTypeCode)) { var newEditionEntity = Mapper.Map <Edition, EditionEntity>(newEdition); SendNotificationEmailForEditionCreation(newEditionEntity, newEditionTranslation, GetEmailTemplateForEditionCreation(newEditionEntity)); } } }
public static EditionTranslationEntity PreUpdateExistingEditionTranslation(EditionTranslationEntity existingEditionTranslation, DWStaging.Edition stagingEdition) { existingEditionTranslation.LanguageCode = LanguageHelper.GetBaseLanguageCultureName(); existingEditionTranslation.VenueName = stagingEdition.EventVenue; return(existingEditionTranslation); }
protected void UpdateLogInMemory(EditionEntity currentEdition, EditionEntity edition, EditionTranslationEntity currentEditionTranslation, EditionTranslationEntity editionTranslation) { var updatedFields = LogControllerHelper.GetUpdatedFields(currentEdition, edition, currentEditionTranslation, editionTranslation, UpdateDisplayType.Json); if (string.IsNullOrWhiteSpace(updatedFields)) { return; } UpdateLogInMemory(edition, updatedFields); }
public EmailResult Send(EditionEntity edition, EditionTranslationEntity editionTranslation, NotificationType notificationType, string recipientFullName, string body, string recipients, string buttonUrl, string unsubscriptionUrl) { if (string.IsNullOrWhiteSpace(recipients)) { var message = $"{notificationType} type of notification email could not be sent since edition {edition.EditionId} - {edition.EditionName} has no recipients."; return(new EmailResult { Sent = false, ErrorMessage = message }); } var sendEmail = notificationType.GetAttribute <NotificationAttribute>().SendEmail; if (sendEmail) { MvcMailMessage mailMessage = null; var webLogoUrl = EditionImageType.WebLogo.BlobFullUrl(editionTranslation); var displayDate = DateHelper.GetDisplayDate(edition.StartDate, edition.EndDate); var subject = GetSubject(edition, notificationType); subject += WebConfigHelper.IsLocal ? " " + _emailSubjectMarkForLocal : (WebConfigHelper.IsTest ? " " + _emailSubjectMarkForTest : null); var notfAttr = notificationType.GetAttribute <NotificationAttribute>(); if (notfAttr == null) { throw new Exception("Notification Attribute not found!"); } var editionMailTemplate = new EditionMailTemplate { EditionId = edition.EditionId, EventId = edition.EventId, AxEventId = edition.AxEventId, EditionName = edition.EditionName, EventName = edition.Event.MasterName, WebLogoUrl = webLogoUrl, Recipients = recipients, RecipientFullName = recipientFullName, DisplayDate = displayDate, VenueName = editionTranslation.VenueName, Subject = subject, Body = body, ButtonText = notfAttr.ButtonText, ButtonUrl = buttonUrl, UnsubscriptionUrl = unsubscriptionUrl, GuideUrl = WebConfigHelper.CedLogoUrl, PartialViewName = notfAttr.ViewName }; var mailer = new UserMailer.UserMailer(); mailMessage = mailer.Send(editionMailTemplate, notfAttr.PrivateEmail); return(new EmailResult { Sent = true, ErrorMessage = "" }); } return(new EmailResult { Sent = false, ErrorMessage = "Unknown error" }); }