コード例 #1
0
ファイル: Notifier.cs プロジェクト: yarivat/Admin
        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);
            }
        }
コード例 #2
0
ファイル: Notifier.cs プロジェクト: yarivat/Admin
        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);
        }
コード例 #3
0
ファイル: Notifier.cs プロジェクト: yarivat/Admin
        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);
        }