public async Task <bool> SendNotificationForSuppliers(int notificationCodeId, List <string> crsList, MainNotificationTemplateModel mainNotificationTemplateModel, Dictionary <string, Dictionary <int, string> > dynamicParameterList = null) { string output = JsonConvert.SerializeObject(mainNotificationTemplateModel); MainNotificationTemplateModel mainView = JsonConvert.DeserializeObject <MainNotificationTemplateModel>(output); List <CRNotificationModel> crs = new List <CRNotificationModel>(); if (crsList.Any()) { var idmContacts = await _idmProxy.GetContactOfficersByCR(crsList); crs = idmContacts.Items.AsEnumerable().Select(x => new CRNotificationModel { CR = x.supplierNumber, Mobile = x.mobile, Email = x.email }).ToList(); } var userNotificationSettings = await _iNotificationQuerie.GetNotificationSettingByCrAndOperationCode(crs.Select(x => x.CR).ToList(), notificationCodeId); if (userNotificationSettings.Count == 0) { return(true); } var entityKey = TempletKey(mainView.EntityValue, mainView.EntityType); bool IsNullEmailFirstArrgs = string.IsNullOrEmpty(Convert.ToString(mainView.Args.BodyEmailArgs[0])); bool IsNullSmsmFirstArrgs = string.IsNullOrEmpty(Convert.ToString(mainView.Args.SMSArgs[0])); NotificationEmail email; NotificationSMS sms; NotificationPanel panel; foreach (var setting in userNotificationSettings) { if (IsNullEmailFirstArrgs) { mainView.Args.BodyEmailArgs[0] = setting.Supplier.SelectedCrName; } if (IsNullSmsmFirstArrgs) { mainView.Args.SMSArgs[0] = setting.Supplier.SelectedCrName; } if (dynamicParameterList != null) { foreach (var newValue in dynamicParameterList[setting.Cr]) { mainView.Args.BodyEmailArgs[newValue.Key] = newValue.Value; } } NotificationDataModel template = await BuildNotificationTemplate(userNotificationSettings.FirstOrDefault().IsArabic, userNotificationSettings.FirstOrDefault().NotificationCodeId, mainView.Args); var ContactOfficer = crs.Where(a => a.CR == setting.Cr).ToList(); foreach (var currentCR in ContactOfficer) { if (setting.Email) { email = new NotificationEmail(setting.Cr, currentCR.Email, template.Email.Title, template.Email.Body, setting.Id, mainView.Link, entityKey); await _notifayCommands.AddNotifayWithOutSave(email); } if (setting.Sms) { sms = new NotificationSMS(setting.Cr, currentCR.Mobile, template.SMS.Body, setting.Id, mainView.Link, entityKey); await _notifayCommands.AddNotifayWithOutSave(sms); } } panel = new NotificationPanel(setting.Cr, template.PanelMessage, template.PanelMessage, setting.Id, mainView.Link, mainView.BranchId, mainView.CommitteeId, entityKey); await _notifayCommands.AddNotifayWithOutSave(panel); } if (userNotificationSettings.Count > 0) { await _notifayCommands.SaveChangesAsync(); } return(true); }