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;
}
}
}
}