SUBD_PIbd-21_Balberova_D.N./BeautySaloon/BeautySaloonView/FormTest.cs

245 lines
18 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using BeautySaloonContracts.BindingModels;
using BeautySaloonContracts.BusinessLogicsContracts;
using BeautySaloonContracts.SearchModels;
using BeautySaloonContracts.ViewModels;
using BeautySaloonDatabaseImplement;
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;
public FormTest(IServiceLogic serviceLogic, IPositionLogic positionLogic,
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[] { "Владимирович(на)", "Олегович(на)", "Александрович(на)", "Алексеевич(на)", "Генадьевич(на)", "Максимович(на)", "Павлович(на)", "Акимович(на)", "Лукьянович(на)", "Матвеевич(на)", "Адреевич(на)", "Федотович(на)", "Аркадий(на)", "Мстиславович(на)", "Федотович(на)", "Даниилович(на)", "Никитьевич(на)", "Евдокимович(на)", "Валерьевич(на)", "Дамирович(на)", "Клавдьевич(на)", "Мирович(на)", "Миронович(на)", "Платонович(на)", "Игоревич(на)", "Антонович(на)", "Валерьевич(на)", "Модестович(на)", "Тимофеевич(на)", "Владленович(на)", "Дмитриевич(на)", "Бенедиктович(на)", "Рустамович(на)", "Ростиславович(на)", "Николаевич(на)", "Данателович(на)", "Ибрагимович(на)", "Анатольевич(на)" };
string[] positions = new string[] { "Администратор", "Продавец", "Парикмахер", "Мастер ногтевого сервиса", "Мастер по наращиванию ресниц", "Мастер депиляции", "Массажист", "Визажист", "Косметолог", "Мастер перманентного макияжа" };
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++)
{
number = rand.Next(1, 10);
telNo = telNo.Append(number.ToString());
}
return telNo.ToString();
}
DateTime RandomDate()
{
DateTime start = new DateTime(1970, 1, 1);
int range = (DateTime.Today - start).Days;
return start.AddDays(rd.Next(range)).AddHours(rd.Next(0, 24)).AddMinutes(rd.Next(0, 60));
}
private void ButtonAdd_Click(object sender, EventArgs e)
{
if (SList?.Count == 0)
foreach (string service in services)
{
var model = new ServiceBindingModel
{
Id = 0,
Name = service,
Price = rd.Next(1, 10001)
};
_SLogic.Create(model);
}
if (PList?.Count == 0)
foreach (string pos in positions)
{
var model = new PositionBindingModel
{
Id = 0,
Name = pos
};
_PLogic.Create(model);
}
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()),
Sum = rd.Next(1, 10001),
ClientId = CList?.ElementAt(rd.Next(1, CList.Count)).Id ?? 1,
EmployeeId = EList?.ElementAt(rd.Next(1, EList.Count)).Id ?? 1,
OrderServices = new() { { random,
(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;
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;
}
break;
}
}
}
}