2023-03-30 02:29:40 +04:00
using BeautySaloonContracts.BindingModels ;
using BeautySaloonContracts.BusinessLogicsContracts ;
using BeautySaloonContracts.SearchModels ;
using BeautySaloonContracts.ViewModels ;
2023-05-05 19:46:47 +04:00
using BeautySaloonDatabaseImplement ;
2023-03-30 02:29:40 +04:00
using BeautySaloonDataModels ;
using System.Diagnostics ;
using System.Text ;
namespace BeautySaloonView
{
public partial class FormTest : Form
{
private readonly IServiceLogic _SLogic ;
private readonly IPositionLogic _PLogic ;
private readonly IEmployeeLogic _ELogic ;
private readonly IClientLogic _CLogic ;
private readonly IOrderLogic _OLogic ;
private readonly List < ServiceViewModel > ? SList ;
private readonly List < PositionViewModel > ? PList ;
private List < EmployeeViewModel > ? EList ;
private List < ClientViewModel > ? CList ;
private List < OrderViewModel > ? OList ;
2023-05-05 19:46:47 +04:00
public FormTest ( IServiceLogic serviceLogic , IPositionLogic positionLogic ,
2023-03-30 02:29:40 +04:00
IEmployeeLogic employeeLogic ,
IClientLogic clientLogic , IOrderLogic orderLogic )
{
InitializeComponent ( ) ;
_SLogic = serviceLogic ;
_PLogic = positionLogic ;
_ELogic = employeeLogic ;
_CLogic = clientLogic ;
_OLogic = orderLogic ;
SList = _SLogic . ReadList ( null ) ;
PList = _PLogic . ReadList ( null ) ;
}
string [ ] names = new string [ ] { "З а х а р " , "Ева" , "Сергей" , "Максим" , "Максимильян" , "Лука" , "Олег" , "Мишель" , "София" , "Стела" , "Аким" , "Матвей" , "Анисия" , "Василий" , "Лукьян" , "Руслан" , "Клара" , "Андрей" , "Мстислав" , "Федот" , "Олег" , "Аркадий" , "Ангелина" , "Анжелика" , "Стефания" , "Мариам" , "Дементий" , "Андрон" , "Даниил" , "Адам" , "Евдоким" , "Валерий" , "Дамир" , "Фёдор" , "Василиса" , "Сафина" , "Даниэль" , "Дарина" , "Мир" , "Феофан" , "Всеслава" , "Инна" , "Платон" , "Ирина" , "Рафаэль" , "Милана" , "Клавдий" , "Лейла" , "Роза" , "Тимофей" , "Пимен" , "Модест" , "Эмма" , "Георгий" , "Дарья" , "Дмитрий" , "Эрик" , "Филипп" , "Владилен" , "Евсей" , "Даниль" , "Ростислав" , "Тихон" , "Тея" , "Наум" , "Виолетта" , "Анатолий" , "Рустам" , "Юлия" , "Дана" , "Самсон" , "Ариадна" , "Ибрагим" , "Светлана" , "Инга" , "Али" , "Виталий" , "Алисия" , "Оксана" , "Тимур" , "Аида" , "Камиль" , "Иннокентий" , "Элина" , "Виктория" , "Анна" , "Амелия" , "Япсина" , "Эвелина" , "Кира" , "Артур" , "Владлена" , "Никифор" , "Марина" , "Артем" , "Моисей" , "Иван" , "Лидия" , "Трофим" , "Игорь" } ;
string [ ] surnames = new string [ ] { "Пищальников" , "Яхонтов" , "Кочетов" , "Ермилова" , "Разбойникова" , "Окулова" , "Дудинова" , "Добрынина" , "Кучава" , "Лазарев" , "Егорова" , "Ипатьев" , "Байдавлетов" , "Шалаганов" , "Масмехов" , "Шентеряков" , "Юдачёв" , "Дагина" , "Лавлинский" , "Гунин" , "Яшвили" , "Шуршалина" , "Сомкина" , "Бояринов" , "Коленко" , "Меншикова" , "Бойков" , "Ябловский" , "Любова" , "Ямпольский" , "Фанина" , "Молчанова" , "Верещагин" , "Окладников" , "Чичерина" , "Ключников" , "Барышев" , "Вятт" , "Толбугин" , "Радченко" , "Веселкова" , "Щавлева" , "Слепынина" , "Садков" , "Барышников" , "Бенедиктов" , "Графова" , "Мирнова" , "Васильев" , "Никишина" , "Краснов" , "Набатников" , "Пронин" , "Стрельцов" , "Булка" , "Саврасова" , "Элиашева" , "Канаев" , "Кичеева" , "Портнова" , "Машарин" , "Ларина" , "Курганова" , "Лапаева" , "Яшуков" , "Шлыков" , "Арнаутова" , "Ширяев" , "Зуев" , "Синдеева" , "Трутнев" , "Кошечкин" , "Логинов" , "Колпаков" , "Бендлина" , "Мурзакова" , "Витинский" , "Ратаева" , "Щедрин" , "Овощников" , "Язвецова" , "Крупин" , "Седельников" , "Юхтрица" , "Лыков" , "Смешной" , "Пожарский" , "Мичуев" , "Шлиппенбах" , "Татаринов" , "Янютин" , "Кулагина" , "Семёнов" , "Зверева" , "Ивакин" , "Бабинова" , "Цейдлерин" , "Сагадиев" , "Истлентьев" , "Деменока" } ;
string [ ] patronymics = new string [ ] { "Владимирович(на)" , "Олегович(на)" , "Александрович(на)" , "Алексеевич(на)" , "Генадьевич(на)" , "Максимович(на)" , "Павлович(на)" , "Акимович(на)" , "Лукьянович(на)" , "Матвеевич(на)" , "Адреевич(на)" , "Федотович(на)" , "Аркадий(на)" , "Мстиславович(на)" , "Федотович(на)" , "Даниилович(на)" , "Никитьевич(на)" , "Евдокимович(на)" , "Валерьевич(на)" , "Дамирович(на)" , "Клавдьевич(на)" , "Мирович(на)" , "Миронович(на)" , "Платонович(на)" , "Игоревич(на)" , "Антонович(на)" , "Валерьевич(на)" , "Модестович(на)" , "Тимофеевич(на)" , "Владленович(на)" , "Дмитриевич(на)" , "Бенедиктович(на)" , "Рустамович(на)" , "Ростиславович(на)" , "Николаевич(на)" , "Данателович(на)" , "Ибрагимович(на)" , "Анатольевич(на)" } ;
2023-05-05 19:46:47 +04:00
string [ ] positions = new string [ ] { "Администратор" , "Продавец" , "Парикмахер" , "Мастер ногтевого сервиса" , "Мастер по наращиванию ресниц" , "Мастер депиляции" , "Массажист" , "Визажист" , "Косметолог" , "Мастер перманентного макияжа" } ;
2023-03-30 02:29:40 +04:00
string [ ] services = new string [ ] { "Свадебные и вечерние прически" , "Завивка и выпрямление волос" , "Кератиновое разглаживание" , "Долговременная укладка" , "Брондирование и колорирование" , "Мелирование и блондирование" , "Каутеризация" , "Ламинирование волос" , "Амбре-окрашивание" , "Укладки и тонирование" , "Цветовой дизайн волос" , "Женская, мужская и детская стрижка" , "Уход за волосами и лечение волос" , "Наращивание и окраска волос" , "Биопилинг кожи головы" , "Плетение косичек" , "Аппаратный" , "Классический мужской и детский" , "Европейский" , "Долгосрочное покрытие гель-лаками(ши-лаками)" , "Горячие обвертывания" , "Наращивание и коррекция ногтей гелем" , "Парафинотерапия" , "Артдизайн" , "Spa-маникюр" , "Отбеливание" , "Укрепление натуральных ногтей" , "Уход за руками" , "Массаж рук" , "Лимфодренаж" , "Cо ляр ий" , "Криодеструкция" , "Микродермообразия" , "Криотерапия" } ;
Random rd = new Random ( ) ;
Random rand = new Random ( ) ;
string GetRandomTelNo ( )
{
StringBuilder telNo = new StringBuilder ( 11 ) ;
int number ;
telNo = telNo . Append ( '8' ) ;
for ( int i = 0 ; i < 10 ; i + + )
{
2023-05-05 19:46:47 +04:00
number = rand . Next ( 1 , 10 ) ;
2023-03-30 02:29:40 +04:00
telNo = telNo . Append ( number . ToString ( ) ) ;
}
return telNo . ToString ( ) ;
}
DateTime RandomDate ( )
{
DateTime start = new DateTime ( 1970 , 1 , 1 ) ;
int range = ( DateTime . Today - start ) . Days ;
2023-05-05 19:46:47 +04:00
return start . AddDays ( rd . Next ( range ) ) . AddHours ( rd . Next ( 0 , 24 ) ) . AddMinutes ( rd . Next ( 0 , 60 ) ) ;
2023-03-30 02:29:40 +04:00
}
private void ButtonAdd_Click ( object sender , EventArgs e )
{
if ( SList ? . Count = = 0 )
foreach ( string service in services )
{
2023-05-05 19:46:47 +04:00
var model = new ServiceBindingModel
{
Id = 0 ,
Name = service ,
Price = rd . Next ( 1 , 10001 )
} ;
_SLogic . Create ( model ) ;
2023-03-30 02:29:40 +04:00
}
if ( PList ? . Count = = 0 )
foreach ( string pos in positions )
{
2023-05-05 19:46:47 +04:00
var model = new PositionBindingModel
{
Id = 0 ,
Name = pos
} ;
_PLogic . Create ( model ) ;
}
2023-03-30 02:29:40 +04:00
switch ( comboBoxQuery . SelectedItem )
{
case "Добавить" :
switch ( comboBoxWhat . SelectedItem )
{
case "Сотрудники" :
Stopwatch stopwatch = new Stopwatch ( ) ;
stopwatch . Start ( ) ;
for ( int i = 0 ; i < Convert . ToInt32 ( textBoxCount . Text ) ; i + + )
{
var model = new EmployeeBindingModel
{
Id = 0 ,
Name = names [ rd . Next ( 0 , names . Length - 1 ) ] ,
Surname = surnames [ rd . Next ( 0 , surnames . Length - 1 ) ] ,
Patronymic = patronymics [ rd . Next ( 0 , patronymics . Length - 1 ) ] ,
Phone = GetRandomTelNo ( ) ,
PositionId = rd . Next ( 1 , positions . Length )
} ;
_ELogic . Create ( model ) ;
}
stopwatch . Stop ( ) ;
TimeSpan ts = stopwatch . Elapsed ;
string elapsedTime = String . Format ( "{0:00}:{1:00}:{2:00}.{3:00}" ,
ts . Hours , ts . Minutes , ts . Seconds ,
ts . Milliseconds / 10 ) ;
label . Text = ( "Время: " + elapsedTime ) ;
break ;
case "Клиенты" :
Stopwatch stopwatch2 = new Stopwatch ( ) ;
stopwatch2 . Start ( ) ;
for ( int i = 0 ; i < Convert . ToInt32 ( textBoxCount . Text ) ; i + + )
{
var model = new ClientBindingModel
{
Id = 0 ,
Name = names [ rd . Next ( 0 , names . Length - 1 ) ] ,
Surname = surnames [ rd . Next ( 0 , surnames . Length - 1 ) ] ,
Patronymic = patronymics [ rd . Next ( 0 , patronymics . Length - 1 ) ] ,
Phone = GetRandomTelNo ( )
} ;
_CLogic . Create ( model ) ;
}
stopwatch2 . Stop ( ) ;
TimeSpan ts1 = stopwatch2 . Elapsed ;
string elapsedTime1 = String . Format ( "{0:00}:{1:00}:{2:00}.{3:00}" ,
ts1 . Hours , ts1 . Minutes , ts1 . Seconds ,
ts1 . Milliseconds / 10 ) ;
label . Text = ( "Время: " + elapsedTime1 ) ;
break ;
case "Заказы" :
EList = _ELogic . ReadList ( null ) ;
CList = _CLogic . ReadList ( null ) ;
OList = _OLogic . ReadList ( null ) ;
Stopwatch stopwatch1 = new Stopwatch ( ) ;
stopwatch1 . Start ( ) ;
for ( int i = 0 ; i < Convert . ToInt32 ( textBoxCount . Text ) ; i + + )
{
int random = rd . Next ( 1 , 29 ) ;
var elem = _SLogic . ReadElement ( new ServiceSearchModel ( ) { Id = random } ) as IServiceModel ;
var model = new OrderBindingModel
{
Id = 0 ,
Date = DateOnly . FromDateTime ( RandomDate ( ) ) ,
2023-05-05 19:46:47 +04:00
Sum = rd . Next ( 1 , 10001 ) ,
2023-03-30 02:29:40 +04:00
ClientId = CList ? . ElementAt ( rd . Next ( 1 , CList . Count ) ) . Id ? ? 1 ,
EmployeeId = EList ? . ElementAt ( rd . Next ( 1 , EList . Count ) ) . Id ? ? 1 ,
2023-05-05 19:46:47 +04:00
OrderServices = new ( ) { { random ,
2023-03-30 02:29:40 +04:00
( TimeOnly . FromDateTime ( RandomDate ( ) ) ,
elem , EList ? . ElementAt ( rd . Next ( 1 , EList . Count ) ) . Id ? ? 1 ) } }
} ;
_OLogic . CreateOrder ( model ) ;
}
stopwatch1 . Stop ( ) ;
TimeSpan ts2 = stopwatch1 . Elapsed ;
string elapsedTime2 = String . Format ( "{0:00}:{1:00}:{2:00}.{3:00}" ,
ts2 . Hours , ts2 . Minutes , ts2 . Seconds ,
ts2 . Milliseconds / 10 ) ;
label . Text = ( "Время: " + elapsedTime2 ) ;
break ;
}
break ;
case "Выбрать" :
switch ( comboBoxWhat . SelectedItem )
{
case "Сотрудники" :
Stopwatch stopwatch = new Stopwatch ( ) ;
stopwatch . Start ( ) ;
var list = _ELogic . ReadList ( null ) ;
stopwatch . Stop ( ) ;
TimeSpan ts = stopwatch . Elapsed ;
string elapsedTime = String . Format ( "{0:00}:{1:00}:{2:00}.{3:00}" ,
ts . Hours , ts . Minutes , ts . Seconds ,
ts . Milliseconds / 10 ) ;
label . Text = ( "Время: " + elapsedTime ) ;
break ;
case "Клиенты" :
Stopwatch stopwatch1 = new Stopwatch ( ) ;
stopwatch1 . Start ( ) ;
var list1 = _CLogic . ReadList ( null ) ;
stopwatch1 . Stop ( ) ;
TimeSpan ts1 = stopwatch1 . Elapsed ;
string elapsedTime1 = String . Format ( "{0:00}:{1:00}:{2:00}.{3:00}" ,
ts1 . Hours , ts1 . Minutes , ts1 . Seconds ,
ts1 . Milliseconds / 10 ) ;
label . Text = ( "Время: " + elapsedTime1 ) ;
break ;
case "Заказы" :
Stopwatch stopwatch2 = new Stopwatch ( ) ;
stopwatch2 . Start ( ) ;
var list2 = _OLogic . ReadList ( null ) ;
stopwatch2 . Stop ( ) ;
TimeSpan ts2 = stopwatch2 . Elapsed ;
string elapsedTime2 = String . Format ( "{0:00}:{1:00}:{2:00}.{3:00}" ,
ts2 . Hours , ts2 . Minutes , ts2 . Seconds ,
ts2 . Milliseconds / 10 ) ;
label . Text = ( "Время: " + elapsedTime2 ) ;
break ;
2023-05-05 19:46:47 +04:00
case "Сложный запрос" :
Stopwatch stopwatch3 = new Stopwatch ( ) ;
stopwatch3 . Start ( ) ;
using ( NewdbContext db = new NewdbContext ( ) )
{
var users = ( from o in db . Orders
join c in db . Clients on o . ClientId equals c . Id
join em in db . Employees on o . EmployeeId equals em . Id
join p in db . Positions on em . PositionId equals p . Id
where p . Name = = "Продавец"
orderby o . Date descending , o . Sum descending
select new
{
Id = o . Id ,
Client = c . Name + ' ' + c . Surname + ' ' + c . Patronymic ,
Seller = em . Name + ' ' + em . Surname + ' ' + em . Patronymic ,
Position = p . Name ,
Date = o . Date ,
Sum = o . Sum
} ) . ToList ( ) ;
}
stopwatch3 . Stop ( ) ;
TimeSpan ts3 = stopwatch3 . Elapsed ;
string elapsedTime3 = String . Format ( "{0:00}:{1:00}:{2:00}.{3:00}" ,
ts3 . Hours , ts3 . Minutes , ts3 . Seconds ,
ts3 . Milliseconds / 10 ) ;
label . Text = ( "Время: " + elapsedTime3 ) ;
break ;
2023-03-30 02:29:40 +04:00
}
break ;
}
}
}
}