using System; using System.Collections; using System.ComponentModel; using System.Configuration; using System.Data; using System.Data.SqlClient; using System.Drawing; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.HtmlControls; namespace AeroNet { //******************************************************* // // Класс CustomerDetails // // Простой класс данных, который инкапсулирует // подробности о конкретном клиенте в базе данных // коммерческих клиентов. // //******************************************************* public class CustomerDetails { public String FullName; public String Email; public String Password; public String Secret; } //******************************************************* // // Класс CustomersDB // // Класс логики бизнеса/данных, который инкапсулирует всю логику // данных, необходимую для добавления/регистрации/запроса клиентов // в базе данных коммерческих клиентов. // //******************************************************* public class CustomersDB { /// Mail-server protected static string mailServer="172.16.1.26"; // было 172.16.1.22 protected string Result; //******************************************************* // // Метод CustomersDB.GetCustomerDetails() // // Метод GetCustomerDetails возвращает структуру CustomerDetails, // которая содержит информацию о конкретном // клиенте (имя, адрес электронной почты, пароль и т.д). // //******************************************************* public CustomerDetails GetCustomerDetails(String customerID) { // Создание экземпляра объекта подключения и команды SqlConnection myConnection = new SqlConnection(ConfigurationSettings.AppSettings["ConnectionString"]); SqlCommand myCommand = new SqlCommand("CustomerDetail", myConnection); // Пометка команды как SPROC myCommand.CommandType = CommandType.StoredProcedure; // Добавление параметров к SPROC SqlParameter parameterCustomerID = new SqlParameter("@CustomerID", SqlDbType.Int, 4); parameterCustomerID.Value = Int32.Parse(customerID); myCommand.Parameters.Add(parameterCustomerID); SqlParameter parameterFullName = new SqlParameter("@FullName", SqlDbType.NVarChar, 50); parameterFullName.Direction = ParameterDirection.Output; myCommand.Parameters.Add(parameterFullName); SqlParameter parameterEmail = new SqlParameter("@Email", SqlDbType.NVarChar, 50); parameterEmail.Direction = ParameterDirection.Output; myCommand.Parameters.Add(parameterEmail); SqlParameter parameterPassword = new SqlParameter("@Password", SqlDbType.NVarChar, 50); parameterPassword.Direction = ParameterDirection.Output; myCommand.Parameters.Add(parameterPassword); SqlParameter parameterSecret = new SqlParameter("@Secret", SqlDbType.NVarChar, 100); parameterSecret.Direction = ParameterDirection.Output; myCommand.Parameters.Add(parameterSecret); myConnection.Open(); myCommand.ExecuteNonQuery(); myConnection.Close(); // Создание структуры CustomerDetails CustomerDetails myCustomerDetails = new CustomerDetails(); // Заполнение структуры с помощью параметров вывода SPROC myCustomerDetails.FullName = (string)parameterFullName.Value; myCustomerDetails.Password = (string)parameterPassword.Value; myCustomerDetails.Email = (string)parameterEmail.Value; myCustomerDetails.Secret = (string)parameterSecret.Value; return myCustomerDetails; } //******************************************************* // // Метод CustomersDB.AddCustomer() // // Метод AddCustomer добавляет новую запись клиента // в базу данных клиентов. Затем он возвращает // уникальный ключ "CustomerId". Впоследствии он может быть // использован для размещения заказов, отслеживания // покупательских корзин и т.д в системе электронной коммерции. // //******************************************************* public String AddCustomer(string fullName, string email, string secret, string password) { // Создание экземпляра объекта подключения и команды SqlConnection myConnection = new SqlConnection(ConfigurationSettings.AppSettings["ConnectionString"]); SqlCommand myCommand = new SqlCommand("CustomerAdd", myConnection); // Пометка команды как SPROC myCommand.CommandType = CommandType.StoredProcedure; // Добавление параметров к SPROC SqlParameter parameterFullName = new SqlParameter("@FullName", SqlDbType.NVarChar, 50); parameterFullName.Value = fullName; myCommand.Parameters.Add(parameterFullName); SqlParameter parameterEmail = new SqlParameter("@Email", SqlDbType.NVarChar, 50); parameterEmail.Value = email; myCommand.Parameters.Add(parameterEmail); SqlParameter parameterSecret = new SqlParameter("@Secret", SqlDbType.NVarChar, 100); parameterSecret.Value = secret; myCommand.Parameters.Add(parameterSecret); SqlParameter parameterPassword = new SqlParameter("@Password", SqlDbType.NVarChar, 50); parameterPassword.Value = password; myCommand.Parameters.Add(parameterPassword); SqlParameter parameterCustomerID = new SqlParameter("@CustomerID", SqlDbType.Int, 4); parameterCustomerID.Direction = ParameterDirection.Output; myCommand.Parameters.Add(parameterCustomerID); try { myConnection.Open(); myCommand.ExecuteNonQuery(); myConnection.Close(); // Вычисление CustomerID с помощью параметров вывода SPROC int customerId = (int)parameterCustomerID.Value; return customerId.ToString(); } catch { return String.Empty; } } //******************************************************* // // Метод CustomersDB.Login() // // Метод Login проверяет пару адрес электронной почты/пароль на // соответствие удостоверениям, хранящимся в базе данных // клиентов. Если пара адрес электронной почты/пароль верна, метод // возвращает номер клиента "CustomerId". В противном случае // он генерирует исключение. // //******************************************************* public String Login(string email, string password) { // Создание экземпляра объекта подключения и команды SqlConnection myConnection = new SqlConnection(ConfigurationSettings.AppSettings["ConnectionString"]); SqlCommand myCommand = new SqlCommand("CustomerLogin", myConnection); // Пометка команды как SPROC myCommand.CommandType = CommandType.StoredProcedure; // Добавление параметров к SPROC SqlParameter parameterEmail = new SqlParameter("@Email", SqlDbType.NVarChar, 50); parameterEmail.Value = email; myCommand.Parameters.Add(parameterEmail); SqlParameter parameterPassword = new SqlParameter("@Password", SqlDbType.NVarChar, 50); parameterPassword.Value = password; myCommand.Parameters.Add(parameterPassword); SqlParameter parameterCustomerID = new SqlParameter("@CustomerID", SqlDbType.Int, 4); parameterCustomerID.Direction = ParameterDirection.Output; myCommand.Parameters.Add(parameterCustomerID); // Открытие подключения и выполнение команды myConnection.Open(); myCommand.ExecuteNonQuery(); myConnection.Close(); int customerId = (int)(parameterCustomerID.Value); if (customerId == 0) { return null; } else { return customerId.ToString(); } } /// /// Отправка данных пользователю на электронный адрес /// /// Электронный адрес /// Пароль public string SendLoginAndPass(string email, string pass) { try { System.Web.Mail.MailMessage Message = new System.Web.Mail.MailMessage(); Message.From = "aerotechnics@bk.ru"; Message.Body = "Уважаемый посетитель сайта www.aerotechnics.ru!\r\r"; Message.Body += "При регистрации (или смене пароля) Вы указали следующие данные:\r\r"; Message.Body += "Login : "+email+"\r"; Message.Body += "Пароль : "+pass+"\r\r"; Message.Body += "Пожалуйста, сохраните это письмо в безопасном месте, недоступном для других лиц.\r"; Message.Body += "Если Вы считаете, что данное сообщение было послано Вам ошибочно, возможно, кто-то указал Ваш адрес электронной почты в данных клиента без вашего разрешения.\r"; Message.Body += "Для принятия мер Вы можете сообщить об этом по адресу mailto:aerotechnics@bk.ru.\r\r"; Message.Subject = "Данные регистрации (логин и пароль) сайт www.aerotechnics.ru\r"; Message.To = email; System.Web.Mail.SmtpMail.SmtpServer = mailServer; System.Web.Mail.SmtpMail.Send(Message); Result = "Сообщение с Вашими логином/паролем отправлено на указанный Вами адрес электронной почты - "+email+" ."; return Result; } catch { string Result = "Ошибка при отправке сообщения."; return Result; } } //******************************************************* // // Метод CustomersDB.Secret() // // Метод Secret проверяет пару адрес электронной почты/секретное слово на // соответствие удостоверениям, хранящимся в базе данных // клиентов. Если пара адрес электронной почты/секретное слово верна, метод // возвращает номер клиента "CustomerId". В противном случае // он генерирует исключение. // //******************************************************* public String Secret(string email, string secret) { // Создание экземпляра объекта подключения и команды SqlConnection myConnection = new SqlConnection(ConfigurationSettings.AppSettings["ConnectionString"]); SqlCommand myCommand = new SqlCommand("CustomerSecret", myConnection); // Пометка команды как SPROC myCommand.CommandType = CommandType.StoredProcedure; // Добавление параметров к SPROC SqlParameter parameterEmail = new SqlParameter("@Email", SqlDbType.NVarChar, 50); parameterEmail.Value = email; myCommand.Parameters.Add(parameterEmail); SqlParameter parameterSecret = new SqlParameter("@Secret", SqlDbType.NVarChar, 100); parameterSecret.Value = secret; myCommand.Parameters.Add(parameterSecret); SqlParameter parameterCustomerID = new SqlParameter("@CustomerID", SqlDbType.Int, 4); parameterCustomerID.Direction = ParameterDirection.Output; myCommand.Parameters.Add(parameterCustomerID); // Открытие подключения и выполнение команды myConnection.Open(); myCommand.ExecuteNonQuery(); myConnection.Close(); int customerId = (int)(parameterCustomerID.Value); if (customerId == 0) { return null; } else { return customerId.ToString(); } } /// /// Смена пароля пользователя /// /// Электронный адрес /// Секретное слово /// Пароль public String ChangePass(string email, string secret, string password) { /// Проверка секретного слова String Customer = Secret(email, secret); if (Customer != "") { ///Меняем пароль: /// // Создание экземпляра объекта подключения и команды SqlConnection myConnection = new SqlConnection(ConfigurationSettings.AppSettings["ConnectionString"]); SqlCommand myCommand = new SqlCommand("PassUpdate", myConnection); // Пометка команды как SPROC myCommand.CommandType = CommandType.StoredProcedure; // Добавление параметров к SPROC SqlParameter parameterEmail = new SqlParameter("@Email", SqlDbType.NVarChar, 50); parameterEmail.Value = email; myCommand.Parameters.Add(parameterEmail); SqlParameter parameterPassword = new SqlParameter("@Password", SqlDbType.NVarChar, 50); parameterPassword.Value = password; myCommand.Parameters.Add(parameterPassword); SqlParameter parameterCustomerID = new SqlParameter("@CustomerID", SqlDbType.Int, 4); parameterCustomerID.Direction = ParameterDirection.Output; myCommand.Parameters.Add(parameterCustomerID); // Открытие подключения и выполнение команды myConnection.Open(); myCommand.ExecuteNonQuery(); myConnection.Close(); int customerId = (int)(parameterCustomerID.Value); if (customerId == 0) { return null; } else { /// Возвращаем идентификатор пользователя return customerId.ToString(); } } else { return null; } } } }