/// <summary> /// Prepare campaign model /// </summary> /// <param name="model">Campaign model</param> /// <param name="campaign">Campaign</param> /// <param name="excludeProperties">Whether to exclude populating of some properties of model</param> /// <returns>Campaign model</returns> public virtual async Task<CampaignModel> PrepareCampaignModelAsync(CampaignModel model, Campaign campaign, bool excludeProperties = false) { //fill in model values from the entity if (campaign != null) { model ??= campaign.ToModel<CampaignModel>(); if (campaign.DontSendBeforeDateUtc.HasValue) model.DontSendBeforeDate = await _dateTimeHelper.ConvertToUserTimeAsync(campaign.DontSendBeforeDateUtc.Value, DateTimeKind.Utc); } model.AllowedTokens = string.Join(", ", await _messageTokenProvider.GetListOfCampaignAllowedTokensAsync()); //whether to fill in some of properties if (!excludeProperties) model.EmailAccountId = _emailAccountSettings.DefaultEmailAccountId; //prepare available stores await _baseAdminModelFactory.PrepareStoresAsync(model.AvailableStores); //prepare available customer roles await _baseAdminModelFactory.PrepareCustomerRolesAsync(model.AvailableCustomerRoles); //prepare available email accounts await _baseAdminModelFactory.PrepareEmailAccountsAsync(model.AvailableEmailAccounts, false); return model; }