/// <summary>
        /// Prepare SendInBlueModel
        /// </summary>
        /// <param name="model">Model</param>
        protected void PrepareModel(SendInBlueModel model)
        {
            var storeId            = GetActiveStoreScopeConfiguration(_storeService, _workContext);
            var sendInBlueSettings = _settingService.LoadSetting <SendInBlueSettings>(storeId);

            model.ActiveStoreScopeConfiguration = storeId;

            if (string.IsNullOrEmpty(sendInBlueSettings.ApiKey))
            {
                return;
            }

            //synchronization task
            var task = FindScheduledTask();

            if (task != null)
            {
                model.AutoSyncEachMinutes = task.Seconds / 60;
                model.AutoSync            = task.Enabled;
            }

            //settings to model
            model.ApiKey        = sendInBlueSettings.ApiKey;
            model.ListId        = sendInBlueSettings.ListId;
            model.SMTPSenderId  = sendInBlueSettings.SMTPSenderId;
            model.UseSMS        = sendInBlueSettings.UseSMS;
            model.SMSFrom       = sendInBlueSettings.SMSFrom;
            model.MyPhoneNumber = sendInBlueSettings.MyPhoneNumber;

            //check whether email account exist
            if (sendInBlueSettings.UseSendInBlueSMTP && _emailAccountService.GetEmailAccountById(sendInBlueSettings.SendInBlueEmailAccountId) != null)
            {
                model.UseSendInBlueSMTP = sendInBlueSettings.UseSendInBlueSMTP;
            }

            //overridable settings
            if (storeId > 0)
            {
                model.ListId_OverrideForStore            = _settingService.SettingExists(sendInBlueSettings, x => x.ListId, storeId);
                model.UseSendInBlueSMTP_OverrideForStore = _settingService.SettingExists(sendInBlueSettings, x => x.UseSendInBlueSMTP, storeId);
                model.SMTPSenderId_OverrideForStore      = _settingService.SettingExists(sendInBlueSettings, x => x.SMTPSenderId, storeId);
                model.UseSMS_OverrideForStore            = _settingService.SettingExists(sendInBlueSettings, x => x.UseSMS, storeId);
                model.SMSFrom_OverrideForStore           = _settingService.SettingExists(sendInBlueSettings, x => x.SMSFrom, storeId);
            }

            //get SendInBlue account info
            var errors      = string.Empty;
            var accountInfo = _sendInBlueEmailManager.GetAccountInfo(ref errors);

            if (string.IsNullOrEmpty(errors))
            {
                model.AccountInfo = accountInfo;
            }
            else
            {
                ErrorNotification(errors);
            }

            //check SMTP status
            if (!_sendInBlueEmailManager.SmtpIsEnabled(ref errors))
            {
                ErrorNotification(errors);
            }

            //get available lists of subscriptions for the synchronization from SendInBlue account
            model.AvailableLists = _sendInBlueEmailManager.GetLists();

            //get available senders of emails from SendInBlue account
            model.AvailableSenders = _sendInBlueEmailManager.GetSenders();

            //get message templates
            model.AvailableMessageTemplates = _messageTemplateService.GetAllMessageTemplates(storeId).Select(x => new SelectListItem
            {
                Value = x.Id.ToString(),
                Text  = storeId > 0 ? x.Name : string.Format("{0} {1}", x.Name, !x.LimitedToStores ? string.Empty :
                                                             _storeService.GetAllStores().Where(s => _storeMappingService.GetStoresIdsWithAccess(x).Contains(s.Id))
                                                             .Aggregate("-", (current, next) => string.Format("{0} {1}, ", current, next.Name)).TrimEnd(','))
            }).ToList();

            //get string of allowed tokens
            model.AllowedTokens = _messageTokenProvider.GetListOfAllowedTokens()
                                  .Aggregate(string.Empty, (current, next) => string.Format("{0}, {1}", current, next)).Trim(',');
        }