public virtual void NotifyAsync(object controller, Dictionary <string, Parameter> parameters, View view, Dictionary <string, object> values, DataRow prevRow, string pk, string siteWithoutQueryString, string mainSiteWithoutQueryString, string urlAction, string connectionString, int currentUserId, string currentUsername, string currentUserRole, IDbCommand command) { string host = Convert.ToString(System.Configuration.ConfigurationManager.AppSettings["host"]); int port = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["port"]); string username = Convert.ToString(System.Configuration.ConfigurationManager.AppSettings["username"]); string password = Convert.ToString(System.Configuration.ConfigurationManager.AppSettings["password"]); EmailParameters emailParameters = GetEmailParameters(controller, parameters, view, values, prevRow, pk, siteWithoutQueryString, mainSiteWithoutQueryString, connectionString, currentUserId.ToString(), currentUsername, currentUserRole); View userView = view.Database.GetUserView(); Dictionary <int, bool> recipients = GetRecipients(emailParameters, userView); if (string.IsNullOrEmpty(emailParameters.From)) { emailParameters.From = Convert.ToString(System.Configuration.ConfigurationManager.AppSettings["fromAlert"]); } if (emailParameters.To.Length > 0) { Durados.Cms.DataAccess.Email.Send(host, view.Database.UseSmtpDefaultCredentials, port, username, password, false, emailParameters.To, emailParameters.Cc, emailParameters.Bcc, emailParameters.Subject, emailParameters.Message, emailParameters.From, null, null, ((INotifier)controller).DontSend, view.Database.Logger); } if (ShouldSaveInMessageBoard(controller, parameters, view, values, prevRow, pk, siteWithoutQueryString, connectionString)) { SaveInMessageBoard(controller, parameters, view, values, prevRow, pk, siteWithoutQueryString, urlAction, connectionString, emailParameters.Subject, emailParameters.Message, currentUserId, currentUserRole, recipients); } }
protected virtual EmailParameters GetEmailParameters(object controller, Dictionary <string, Parameter> parameters, View view, Dictionary <string, object> values, DataRow prevRow, string pk, string siteWithoutQueryString, string mainSiteWithoutQueryString, string connectionString, string currentUserId, string currentUsername, string currentUserRole) { EmailParameters emailParameters = new EmailParameters(); if (parameters.ContainsKey("from")) { emailParameters.From = parameters["from"].Value; } if (parameters.ContainsKey("to")) { emailParameters.To = parameters["to"].Value.Split(';'); } if (parameters.ContainsKey("cc")) { emailParameters.Cc = parameters["cc"].Value.Split(';'); } if (parameters.ContainsKey("bcc")) { emailParameters.Bcc = parameters["bcc"].Value.Split(';'); } if (parameters.ContainsKey("subject")) { emailParameters.Subject = parameters["subject"].Value; } if (parameters.ContainsKey("message")) { emailParameters.Message = parameters["message"].Value; } return(emailParameters); }
private Dictionary <int, bool> GetRecipients(EmailParameters emailParameters, View userView) { HashSet <string> emails = new HashSet <string>(); foreach (string email in emailParameters.To) { if (!emails.Contains(email)) { emails.Add(email); } } Dictionary <int, bool> recipients = new Dictionary <int, bool>(); if (emails.Count >= 1) { Durados.Data.IDataAccess dal = userView.Database.GetDataAccess(userView.ConnectionString); ISqlTextBuilder sqlBuilder = dal.GetSqlBuilder(); string emailString = emails.ToArray().Delimited("'", "'"); string sql = GetSelectPKStatement(userView, sqlBuilder, emailString); using (IDbConnection connection = dal.GetConnection(userView.ConnectionString))// GetConnection(userView.ConnectionString)) { connection.Open(); using (IDbCommand command = dal.GetCommand(connection, sql)) { using (IDataReader reader = command.ExecuteReader()) { while (reader.Read()) { int i = reader.GetOrdinal("ID"); if (!reader.IsDBNull(i)) { recipients.Add(reader.GetInt32(i), false); } } } } } } return(recipients); }