Добавил генерацию случайных данных

This commit is contained in:
Никита Потапов 2024-05-17 01:11:47 +04:00
parent 2ec111faae
commit e16b154578
8 changed files with 282 additions and 34 deletions

View File

@ -26,6 +26,27 @@ namespace MedicalBusinessLogic.BusinessLogics
protected abstract V GetViewModel(M model); protected abstract V GetViewModel(M model);
public bool DeleteAll(out double elapsedMilliseconds)
{
elapsedMilliseconds = 0;
try
{
_storage.DeleteAll(out elapsedMilliseconds);
_logger.LogInformation($"Delete ALL operation success");
return true;
}
catch (Exception ex)
{
_logger.LogWarning($"Delete ALL operation failed: {ex.Message}");
return false;
}
}
public bool DeleteAll()
{
return DeleteAll(out _);
}
public bool Create(M model) public bool Create(M model)
{ {
return Create(model, out _); return Create(model, out _);
@ -51,7 +72,7 @@ namespace MedicalBusinessLogic.BusinessLogics
return Update(model, out _); return Update(model, out _);
} }
public virtual List<V> ReadList(out long elapsedMilliseconds, S? searchModel = null) public virtual List<V> ReadList(out double elapsedMilliseconds, S? searchModel = null)
{ {
var elements = _storage.GetAll(out elapsedMilliseconds); var elements = _storage.GetAll(out elapsedMilliseconds);
@ -64,7 +85,7 @@ namespace MedicalBusinessLogic.BusinessLogics
return elements.Select(x => GetViewModel(x)).ToList(); return elements.Select(x => GetViewModel(x)).ToList();
} }
public virtual V? ReadElement(int id, out long elapsedMilliseconds) public virtual V? ReadElement(int id, out double elapsedMilliseconds)
{ {
var element = _storage.Get(id, out elapsedMilliseconds); var element = _storage.Get(id, out elapsedMilliseconds);
if (element == null) if (element == null)
@ -76,7 +97,7 @@ namespace MedicalBusinessLogic.BusinessLogics
return GetViewModel(element); return GetViewModel(element);
} }
public virtual bool Create(M model, out long elapsedMilliseconds) public virtual bool Create(M model, out double elapsedMilliseconds)
{ {
elapsedMilliseconds = 0; elapsedMilliseconds = 0;
try try
@ -93,7 +114,7 @@ namespace MedicalBusinessLogic.BusinessLogics
} }
} }
public virtual bool Update(M model, out long elapsedMilliseconds) public virtual bool Update(M model, out double elapsedMilliseconds)
{ {
elapsedMilliseconds = 0; elapsedMilliseconds = 0;
try try
@ -110,7 +131,7 @@ namespace MedicalBusinessLogic.BusinessLogics
} }
} }
public virtual bool Delete(int id, out long elapsedMilliseconds) public virtual bool Delete(int id, out double elapsedMilliseconds)
{ {
elapsedMilliseconds = 0; elapsedMilliseconds = 0;
try try

View File

@ -10,14 +10,16 @@ namespace MedicalDatabaseContracts
where S : AbstractSearchModel where S : AbstractSearchModel
{ {
List<V> ReadList(S? searchModel = null); List<V> ReadList(S? searchModel = null);
List<V> ReadList(out long elapsedMilliseconds, S? searchModel = null); List<V> ReadList(out double elapsedMilliseconds, S? searchModel = null);
V? ReadElement(int id); V? ReadElement(int id);
V? ReadElement(int id, out long elapsedMilliseconds); V? ReadElement(int id, out double elapsedMilliseconds);
bool Create(M model); bool Create(M model);
bool Create(M model, out long elapsedMilliseconds); bool Create(M model, out double elapsedMilliseconds);
bool Update(M model); bool Update(M model);
bool Update(M model, out long elapsedMilliseconds); bool Update(M model, out double elapsedMilliseconds);
bool Delete(int id); bool Delete(int id);
bool Delete(int id, out long elapsedMilliseconds); bool Delete(int id, out double elapsedMilliseconds);
bool DeleteAll();
bool DeleteAll(out double elapsedMilliseconds);
} }
} }

View File

@ -4,15 +4,17 @@ namespace MedicalDatabaseContracts
{ {
public interface IStorage<T> where T : AbstractModel public interface IStorage<T> where T : AbstractModel
{ {
T? Get(int id, out long elapsedMilliseconds); T? Get(int id, out double elapsedMilliseconds);
T? Get(int id); T? Get(int id);
List<T> GetAll(out long elapsedMilliseconds); List<T> GetAll(out double elapsedMilliseconds);
List<T> GetAll(); List<T> GetAll();
void Insert(T item, out long elapsedMilliseconds); void Insert(T item, out double elapsedMilliseconds);
void Insert(T item); void Insert(T item);
void Update(T item, out long elapsedMilliseconds); void Update(T item, out double elapsedMilliseconds);
void Update(T item); void Update(T item);
void Delete(int id, out long elapsedMilliseconds); void Delete(int id, out double elapsedMilliseconds);
void Delete(int id); void Delete(int id);
void DeleteAll(out double elapsedMilliseconds);
void DeleteAll();
} }
} }

View File

@ -3,6 +3,7 @@ using MedicalDatabaseContracts.Models;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using Npgsql; using Npgsql;
using System.Diagnostics; using System.Diagnostics;
using System.Text;
namespace MedicalPostgresqlDatabase namespace MedicalPostgresqlDatabase
{ {
@ -13,6 +14,9 @@ namespace MedicalPostgresqlDatabase
protected readonly string PRIMARY_KEY_COLUMN_NAME; protected readonly string PRIMARY_KEY_COLUMN_NAME;
protected readonly string PRIMARY_KEY_SEQUENCE_NAME; protected readonly string PRIMARY_KEY_SEQUENCE_NAME;
protected readonly string TIME_LOG_FILENAME_SUFFIX;
protected readonly string TIME_LOG_FOLDERNAME;
protected AbstractPostgresqlStorage( protected AbstractPostgresqlStorage(
ILogger<IStorage<T>> logger, ILogger<IStorage<T>> logger,
string tableName, string tableName,
@ -23,17 +27,52 @@ namespace MedicalPostgresqlDatabase
TABLE_NAME = tableName; TABLE_NAME = tableName;
PRIMARY_KEY_COLUMN_NAME = primaryKeyColumnName; PRIMARY_KEY_COLUMN_NAME = primaryKeyColumnName;
PRIMARY_KEY_SEQUENCE_NAME = primary_key_sequence_name; PRIMARY_KEY_SEQUENCE_NAME = primary_key_sequence_name;
TIME_LOG_FILENAME_SUFFIX = "sqltimelog.csv";
TIME_LOG_FOLDERNAME = "timelogs";
} }
protected abstract T CreateEntityFromReader(NpgsqlDataReader reader); protected abstract T CreateEntityFromReader(NpgsqlDataReader reader);
protected abstract Dictionary<string, object> GetEntityAttributesDictionary(T item); protected abstract Dictionary<string, object> GetEntityAttributesDictionary(T item);
public void DeleteAll(out double elapsedMilliseconds)
{
using var connection = GetConnection();
connection.Open();
using var cmd = new NpgsqlCommand($"DELETE FROM {TABLE_NAME}", connection);
_logger.LogDebug(cmd.CommandText);
Stopwatch stopwatch = new();
stopwatch.Start();
cmd.ExecuteNonQuery();
stopwatch.Stop();
elapsedMilliseconds = stopwatch.Elapsed.TotalMilliseconds;
WriteTimeToFile(stopwatch, "DELETEALL");
}
public void DeleteAll()
{
DeleteAll(out _);
}
protected void WriteTimeToFile(Stopwatch stopwatch, string filenamePrefix)
{
if (!Directory.Exists(TIME_LOG_FOLDERNAME))
{
Directory.CreateDirectory(TIME_LOG_FOLDERNAME);
}
string filename = GetType().Name + "_" + filenamePrefix + "_" + TIME_LOG_FILENAME_SUFFIX;
string path = Path.Combine(TIME_LOG_FOLDERNAME, filename);
using (StreamWriter sw = new StreamWriter(path, true))
{
sw.WriteLine(stopwatch.Elapsed.TotalMilliseconds);
}
}
public virtual void Delete(int id) public virtual void Delete(int id)
{ {
Delete(id, out _); Delete(id, out _);
} }
public virtual void Delete(int id, out long elapsedMilliseconds) public virtual void Delete(int id, out double elapsedMilliseconds)
{ {
using var connection = GetConnection(); using var connection = GetConnection();
connection.Open(); connection.Open();
@ -44,13 +83,14 @@ namespace MedicalPostgresqlDatabase
stopwatch.Start(); stopwatch.Start();
cmd.ExecuteNonQuery(); cmd.ExecuteNonQuery();
stopwatch.Stop(); stopwatch.Stop();
elapsedMilliseconds = stopwatch.ElapsedMilliseconds; elapsedMilliseconds = stopwatch.Elapsed.TotalMilliseconds;
WriteTimeToFile(stopwatch, "DELETE");
} }
public virtual T? Get(int id) public virtual T? Get(int id)
{ {
return Get(id, out _); return Get(id, out _);
} }
public virtual T? Get(int id, out long elapsedMilliseconds) public virtual T? Get(int id, out double elapsedMilliseconds)
{ {
using var connection = GetConnection(); using var connection = GetConnection();
connection.Open(); connection.Open();
@ -61,7 +101,8 @@ namespace MedicalPostgresqlDatabase
stopwatch.Start(); stopwatch.Start();
using var reader = cmd.ExecuteReader(); using var reader = cmd.ExecuteReader();
stopwatch.Stop(); stopwatch.Stop();
elapsedMilliseconds = stopwatch.ElapsedMilliseconds; elapsedMilliseconds = stopwatch.Elapsed.TotalMilliseconds;
WriteTimeToFile(stopwatch, "GET");
if (reader.Read()) if (reader.Read())
{ {
return CreateEntityFromReader(reader); return CreateEntityFromReader(reader);
@ -72,7 +113,7 @@ namespace MedicalPostgresqlDatabase
{ {
return GetAll(out _); return GetAll(out _);
} }
public virtual List<T> GetAll(out long elapsedMilliseconds) public virtual List<T> GetAll(out double elapsedMilliseconds)
{ {
var items = new List<T>(); var items = new List<T>();
using var connection = GetConnection(); using var connection = GetConnection();
@ -83,7 +124,8 @@ namespace MedicalPostgresqlDatabase
stopwatch.Start(); stopwatch.Start();
using var reader = cmd.ExecuteReader(); using var reader = cmd.ExecuteReader();
stopwatch.Stop(); stopwatch.Stop();
elapsedMilliseconds = stopwatch.ElapsedMilliseconds; elapsedMilliseconds = stopwatch.Elapsed.TotalMilliseconds;
WriteTimeToFile(stopwatch, "GETALL");
while (reader.Read()) while (reader.Read())
{ {
items.Add(CreateEntityFromReader(reader)); items.Add(CreateEntityFromReader(reader));
@ -94,7 +136,7 @@ namespace MedicalPostgresqlDatabase
{ {
Insert(item, out _); Insert(item, out _);
} }
public virtual void Insert(T item, out long elapsedMilliseconds) public virtual void Insert(T item, out double elapsedMilliseconds)
{ {
using var connection = GetConnection(); using var connection = GetConnection();
connection.Open(); connection.Open();
@ -133,13 +175,14 @@ namespace MedicalPostgresqlDatabase
stopwatch.Start(); stopwatch.Start();
cmd.ExecuteNonQuery(); cmd.ExecuteNonQuery();
stopwatch.Stop(); stopwatch.Stop();
elapsedMilliseconds = stopwatch.ElapsedMilliseconds; elapsedMilliseconds = stopwatch.Elapsed.TotalMilliseconds;
WriteTimeToFile(stopwatch, "INSERT");
} }
public virtual void Update(T item) public virtual void Update(T item)
{ {
Update(item, out _); Update(item, out _);
} }
public virtual void Update(T item, out long elapsedMilliseconds) public virtual void Update(T item, out double elapsedMilliseconds)
{ {
using var connection = GetConnection(); using var connection = GetConnection();
connection.Open(); connection.Open();
@ -176,7 +219,8 @@ namespace MedicalPostgresqlDatabase
stopwatch.Start(); stopwatch.Start();
cmd.ExecuteNonQuery(); cmd.ExecuteNonQuery();
stopwatch.Stop(); stopwatch.Stop();
elapsedMilliseconds = stopwatch.ElapsedMilliseconds; elapsedMilliseconds = stopwatch.Elapsed.TotalMilliseconds;
WriteTimeToFile(stopwatch, "UPDATE");
} }
protected NpgsqlConnection GetConnection() protected NpgsqlConnection GetConnection()

View File

@ -93,7 +93,7 @@ namespace MedicalView
SetStatusStripText("Загрузка списка..."); SetStatusStripText("Загрузка списка...");
try try
{ {
long elapsed; double elapsed;
var items = _logic.ReadList(out elapsed); var items = _logic.ReadList(out elapsed);
dataGridView.DataSource = items; dataGridView.DataSource = items;

View File

@ -36,6 +36,7 @@
пациентыToolStripMenuItem1 = new ToolStripMenuItem(); пациентыToolStripMenuItem1 = new ToolStripMenuItem();
dataGridView = new DataGridView(); dataGridView = new DataGridView();
panel = new Panel(); panel = new Panel();
buttonGenerateRandomData = new Button();
buttonEdit = new Button(); buttonEdit = new Button();
buttonDelete = new Button(); buttonDelete = new Button();
buttonAdd = new Button(); buttonAdd = new Button();
@ -43,6 +44,7 @@
comboBoxDoctor = new ComboBox(); comboBoxDoctor = new ComboBox();
statusStrip = new StatusStrip(); statusStrip = new StatusStrip();
toolStripStatusLabel = new ToolStripStatusLabel(); toolStripStatusLabel = new ToolStripStatusLabel();
buttonDeleteAllData = new Button();
menuStrip.SuspendLayout(); menuStrip.SuspendLayout();
((System.ComponentModel.ISupportInitialize)dataGridView).BeginInit(); ((System.ComponentModel.ISupportInitialize)dataGridView).BeginInit();
panel.SuspendLayout(); panel.SuspendLayout();
@ -56,7 +58,7 @@
menuStrip.Location = new Point(0, 0); menuStrip.Location = new Point(0, 0);
menuStrip.Name = "menuStrip"; menuStrip.Name = "menuStrip";
menuStrip.Padding = new Padding(7, 3, 0, 3); menuStrip.Padding = new Padding(7, 3, 0, 3);
menuStrip.Size = new Size(863, 30); menuStrip.Size = new Size(1012, 30);
menuStrip.TabIndex = 0; menuStrip.TabIndex = 0;
menuStrip.Text = "menuStrip1"; menuStrip.Text = "menuStrip1";
// //
@ -109,11 +111,13 @@
dataGridView.RowHeadersWidth = 51; dataGridView.RowHeadersWidth = 51;
dataGridView.RowTemplate.Height = 25; dataGridView.RowTemplate.Height = 25;
dataGridView.SelectionMode = DataGridViewSelectionMode.FullRowSelect; dataGridView.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
dataGridView.Size = new Size(863, 331); dataGridView.Size = new Size(1012, 331);
dataGridView.TabIndex = 1; dataGridView.TabIndex = 1;
// //
// panel // panel
// //
panel.Controls.Add(buttonDeleteAllData);
panel.Controls.Add(buttonGenerateRandomData);
panel.Controls.Add(buttonEdit); panel.Controls.Add(buttonEdit);
panel.Controls.Add(buttonDelete); panel.Controls.Add(buttonDelete);
panel.Controls.Add(buttonAdd); panel.Controls.Add(buttonAdd);
@ -123,9 +127,19 @@
panel.Location = new Point(0, 30); panel.Location = new Point(0, 30);
panel.Margin = new Padding(3, 4, 3, 4); panel.Margin = new Padding(3, 4, 3, 4);
panel.Name = "panel"; panel.Name = "panel";
panel.Size = new Size(863, 39); panel.Size = new Size(1012, 39);
panel.TabIndex = 2; panel.TabIndex = 2;
// //
// buttonGenerateRandomData
//
buttonGenerateRandomData.Location = new Point(716, 5);
buttonGenerateRandomData.Name = "buttonGenerateRandomData";
buttonGenerateRandomData.Size = new Size(135, 29);
buttonGenerateRandomData.TabIndex = 5;
buttonGenerateRandomData.Text = "Сгенерировать";
buttonGenerateRandomData.UseVisualStyleBackColor = true;
buttonGenerateRandomData.Click += buttonGenerateRandomData_Click;
//
// buttonEdit // buttonEdit
// //
buttonEdit.Anchor = AnchorStyles.Left; buttonEdit.Anchor = AnchorStyles.Left;
@ -188,7 +202,7 @@
statusStrip.Items.AddRange(new ToolStripItem[] { toolStripStatusLabel }); statusStrip.Items.AddRange(new ToolStripItem[] { toolStripStatusLabel });
statusStrip.Location = new Point(0, 379); statusStrip.Location = new Point(0, 379);
statusStrip.Name = "statusStrip"; statusStrip.Name = "statusStrip";
statusStrip.Size = new Size(863, 22); statusStrip.Size = new Size(1012, 22);
statusStrip.TabIndex = 3; statusStrip.TabIndex = 3;
statusStrip.Text = "statusStrip1"; statusStrip.Text = "statusStrip1";
// //
@ -197,11 +211,21 @@
toolStripStatusLabel.Name = "toolStripStatusLabel"; toolStripStatusLabel.Name = "toolStripStatusLabel";
toolStripStatusLabel.Size = new Size(0, 16); toolStripStatusLabel.Size = new Size(0, 16);
// //
// buttonDeleteAllData
//
buttonDeleteAllData.Location = new Point(857, 5);
buttonDeleteAllData.Name = "buttonDeleteAllData";
buttonDeleteAllData.Size = new Size(143, 29);
buttonDeleteAllData.TabIndex = 6;
buttonDeleteAllData.Text = "Очистить базу";
buttonDeleteAllData.UseVisualStyleBackColor = true;
buttonDeleteAllData.Click += buttonDeleteAllData_Click;
//
// FormMain // FormMain
// //
AutoScaleDimensions = new SizeF(8F, 20F); AutoScaleDimensions = new SizeF(8F, 20F);
AutoScaleMode = AutoScaleMode.Font; AutoScaleMode = AutoScaleMode.Font;
ClientSize = new Size(863, 401); ClientSize = new Size(1012, 401);
Controls.Add(statusStrip); Controls.Add(statusStrip);
Controls.Add(panel); Controls.Add(panel);
Controls.Add(dataGridView); Controls.Add(dataGridView);
@ -239,5 +263,7 @@
private Button buttonEdit; private Button buttonEdit;
private StatusStrip statusStrip; private StatusStrip statusStrip;
private ToolStripStatusLabel toolStripStatusLabel; private ToolStripStatusLabel toolStripStatusLabel;
private Button buttonGenerateRandomData;
private Button buttonDeleteAllData;
} }
} }

View File

@ -69,7 +69,7 @@ namespace MedicalView.Visits
SetStatusStripText("Загрузка списка..."); SetStatusStripText("Загрузка списка...");
try try
{ {
long elapsed; double elapsed;
var items = _visitLogic.ReadList(out elapsed); var items = _visitLogic.ReadList(out elapsed);
dataGridView.DataSource = items; dataGridView.DataSource = items;
@ -150,5 +150,31 @@ namespace MedicalView.Visits
} }
} }
} }
private void buttonGenerateRandomData_Click(object sender, EventArgs e)
{
if (MessageBox.Show("Сшенерировать случайные данные?", "Вопрос", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
{
var service = Program.ServiceProvider?.GetService(typeof(FormVisit));
if (service is FormVisit form)
{
form.GenerateRandomDatabaseData();
LoadData();
}
}
}
private void buttonDeleteAllData_Click(object sender, EventArgs e)
{
if (MessageBox.Show("Удалить ВСЕ данные?", "Вопрос", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
{
var service = Program.ServiceProvider?.GetService(typeof(FormVisit));
if (service is FormVisit form)
{
form.DeleteAllDatabaseData();
LoadData();
}
}
}
} }
} }

View File

@ -14,12 +14,14 @@ namespace MedicalView.Visits
private readonly ILogic<Diagnose, DiagnoseViewModel, DiagnoseSearchModel> _diagnoseLogic; private readonly ILogic<Diagnose, DiagnoseViewModel, DiagnoseSearchModel> _diagnoseLogic;
private readonly ILogic<Doctor, DoctorViewModel, DoctorSearchModel> _doctorLogic; private readonly ILogic<Doctor, DoctorViewModel, DoctorSearchModel> _doctorLogic;
private readonly ILogic<Patient, PatientViewModel, PatientSearchModel> _patientLogic; private readonly ILogic<Patient, PatientViewModel, PatientSearchModel> _patientLogic;
private readonly ILogic<Specialization, SpecializationViewModel, SpecializationSearchModel> _specLogic;
public FormVisit( public FormVisit(
ILogger<FormVisit> logger, ILogger<FormVisit> logger,
ILogic<Visit, VisitViewModel, VisitSearchModel> visitLogic, ILogic<Visit, VisitViewModel, VisitSearchModel> visitLogic,
ILogic<Diagnose, DiagnoseViewModel, DiagnoseSearchModel> diagnoseLogic, ILogic<Diagnose, DiagnoseViewModel, DiagnoseSearchModel> diagnoseLogic,
ILogic<Doctor, DoctorViewModel, DoctorSearchModel> doctorLogic, ILogic<Doctor, DoctorViewModel, DoctorSearchModel> doctorLogic,
ILogic<Patient, PatientViewModel, PatientSearchModel> patientLogic) ILogic<Patient, PatientViewModel, PatientSearchModel> patientLogic,
ILogic<Specialization, SpecializationViewModel, SpecializationSearchModel> specLogic)
{ {
InitializeComponent(); InitializeComponent();
_logger = logger; _logger = logger;
@ -27,6 +29,7 @@ namespace MedicalView.Visits
_diagnoseLogic = diagnoseLogic; _diagnoseLogic = diagnoseLogic;
_doctorLogic = doctorLogic; _doctorLogic = doctorLogic;
_patientLogic = patientLogic; _patientLogic = patientLogic;
_specLogic = specLogic;
} }
private void ApplyToolStripMenuItem_Click(object sender, EventArgs e) private void ApplyToolStripMenuItem_Click(object sender, EventArgs e)
@ -100,7 +103,7 @@ namespace MedicalView.Visits
{ {
textBoxComment.Text = view.Comment; textBoxComment.Text = view.Comment;
datePicker.Value = view.Date.ToDateTime(view.Time); datePicker.Value = view.Date.ToDateTime(view.Time);
timePicker.Value = view.Date.ToDateTime(view.Time); timePicker.Value = view.Date.ToDateTime(view.Time);
if (view.DiagnoseId != null) if (view.DiagnoseId != null)
{ {
comboBoxDiagnose.SelectedIndex = diagnoses.FindIndex(x => x.Id == view.DiagnoseId); comboBoxDiagnose.SelectedIndex = diagnoses.FindIndex(x => x.Id == view.DiagnoseId);
@ -116,5 +119,129 @@ namespace MedicalView.Visits
} }
} }
} }
public void DeleteAllDatabaseData()
{
try
{
_logger.LogInformation("Удаление всех данных БД");
_visitLogic.DeleteAll();
_diagnoseLogic.DeleteAll();
_doctorLogic.DeleteAll();
_specLogic.DeleteAll();
_patientLogic.DeleteAll();
MessageBox.Show("Все данные успешно удалены", "Успех", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch (Exception ex)
{
_logger.LogError(ex, "Ошибка получения модели приема");
MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
public void GenerateRandomDatabaseData()
{
int specsCount = 100;
int diagnosesCount = 100;
int doctorsCount = 100;
int patientsCount = 100;
int visitsCount = 100;
double avgInsertSpecsTimer = 0;
double avgInsertDiagnosesTimer = 0;
double avgInsertDoctorsTimer = 0;
double avgInsertPatientsTimer = 0;
double avgInsertVisitsTimer = 0;
double temp = 0;
Random rnd = new();
for (int i = 0; i < specsCount; i++)
{
_specLogic.Create(new Specialization
{
Name = i.ToString(),
IsPediatric = Convert.ToBoolean(rnd.Next(2)),
IsTherapeutic = Convert.ToBoolean(rnd.Next(2))
}, out temp);
avgInsertSpecsTimer += temp;
}
avgInsertSpecsTimer /= specsCount;
var specs = _specLogic.ReadList();
for (int i = 0; i < diagnosesCount; i++)
{
_diagnoseLogic.Create(new Diagnose
{
Name = i.ToString()
}, out temp);
avgInsertDiagnosesTimer += temp;
}
avgInsertDiagnosesTimer /= diagnosesCount;
var diagnoses = _diagnoseLogic.ReadList();
for (int i = 0; i < doctorsCount; i++)
{
_doctorLogic.Create(new Doctor {
Name = i.ToString(),
Surname = i.ToString(),
Patronymic = i.ToString(),
PhoneNumber = i.ToString(),
SpecializationId = specs[rnd.Next(specs.Count)].Id
}, out temp);
avgInsertDoctorsTimer += temp;
}
avgInsertDoctorsTimer /= doctorsCount;
var doctors = _doctorLogic.ReadList();
for (int i = 0; i < patientsCount; i++)
{
_patientLogic.Create(new Patient {
Name = i.ToString(),
Surname = i.ToString(),
Patronymic = i.ToString(),
PhoneNumber = i.ToString(),
Birthday = new DateTime(2021, 12, 21),
Gender = rnd.Next(2) == 0 ? "М" : "Ж",
Height = rnd.Next(100, 250),
Weight = rnd.Next(50, 100)
}, out temp);
avgInsertPatientsTimer += temp;
}
avgInsertPatientsTimer /= patientsCount;
var patients = _patientLogic.ReadList();
for (int i = 0; i < visitsCount; i++)
{
_visitLogic.Create(new Visit {
Date = new DateOnly(2021, 12, 12),
Time = new TimeOnly(12, 34),
PatientId = patients[rnd.Next(patients.Count)].Id,
DoctorId = doctors[rnd.Next(doctors.Count)].Id,
DiagnoseId = diagnoses[rnd.Next(diagnoses.Count)].Id,
Comment = "iusnefiuesnfes yf ey fiuewfwe fhweiufiuefiuweh fwehf uewyiufwe fuewoiuf oweyiuf weuif ioewfuyewuif yweufoiwefuywef"
}, out temp);
avgInsertVisitsTimer += temp;
}
avgInsertVisitsTimer /= visitsCount;
MessageBox.Show(
"Данные успешно сгенерированы!\n\n" +
"Среднее время вставки:\n" +
$"Специализации: {specsCount} шт : {avgInsertSpecsTimer} мск\n" +
$"Диагнозы: {diagnosesCount} шт : {avgInsertDiagnosesTimer} мск\n" +
$"Врачи: {doctorsCount} шт : {avgInsertDoctorsTimer} мск\n" +
$"Пациенты: {patientsCount} шт : {avgInsertPatientsTimer} мск\n" +
$"Приемы: {visitsCount} шт : {avgInsertVisitsTimer} мск\n",
"Успех",
MessageBoxButtons.OK,
MessageBoxIcon.Information);
}
} }
} }