Реализация логики сотрудника

This commit is contained in:
Мк Игорь 2023-04-05 14:28:28 +04:00
parent 134d136cd2
commit 1662294c85
5 changed files with 113 additions and 24 deletions

View File

@ -79,12 +79,70 @@ namespace CarServiceBusinessLogic.BusinessLogics
{ {
if (model == null) if (model == null)
{ {
throw new ArgumentNullException(nameof(model)); throw new ArgumentException(nameof(model));
} }
if (!withParams) if (!withParams)
{ {
return; return;
} }
//Введён ли логин?
if (string.IsNullOrEmpty(model.Login))
{
_logger.LogWarning("Login is empty");
throw new ArgumentException("Не введён логин");
}
//Логин не должен быть больше 30 символов
if (model.Login.Length > 30)
{
_logger.LogWarning("Login {Login} length > 30", model.Login);
throw new ArgumentException("Длина логина не должна превышать 30 символов");
}
//Проверяем логин на уникальность
var existingWorker = _workerStorage.GetElement(new()
{
Login = model.Login
});
if (existingWorker != null)
{
_logger.LogWarning("Worker with login {Login} already exists", model.Login);
throw new ArgumentException("Сотрудник с таким логином уже существует");
}
//Введён ли пароль?
if (string.IsNullOrEmpty(model.Password))
{
_logger.LogWarning("Password is empty");
throw new ArgumentException("Не введён пароль");
}
//Пароль не должен быть менее 7 и более 30 символов
if (model.Password.Length < 7 || model.Password.Length > 30)
{
_logger.LogWarning("Password {Password} length > 30 or < 7", model.Password);
throw new ArgumentException("Длина пароля должна быть в промежутке между 7 и 30 символами");
}
//Введено ли имя?
if (string.IsNullOrEmpty(model.Name))
{
_logger.LogWarning("Name is empty");
throw new ArgumentException("Не введёно имя");
}
//Имя должно быть не более 30 символов
if (model.Name.Length > 30)
{
_logger.LogWarning("Name {Name} length > 30", model.Name);
throw new ArgumentException("Длина имени не должна превышать 30 символов");
}
//Введена ли фамилия?
if (string.IsNullOrEmpty(model.Surname))
{
_logger.LogWarning("Surname is empty");
throw new ArgumentException("Не введёна фамилия");
}
//Фамилия должна быть не более 30 символов
if (model.Surname.Length > 30)
{
_logger.LogWarning("Surname {Surname} length > 30", model.Surname);
throw new ArgumentException("Длина фамилии не должна превышать 30 символов");
}
_logger.LogInformation("Worker. Id: {Id}", model.Id); _logger.LogInformation("Worker. Id: {Id}", model.Id);
} }
} }

View File

@ -3,5 +3,13 @@
public class WorkerSearchModel public class WorkerSearchModel
{ {
public int? Id { get; set; } public int? Id { get; set; }
/// <summary>
/// Поиск клиента по логину для проверки логина на уникальность и для входа
/// </summary>
public string? Login { get; set; }
/// <summary>
/// Поиск клиента по паролю для входа
/// </summary>
public string? Password { get; set; }
} }
} }

View File

@ -21,11 +21,22 @@ namespace CarServiceDatabase.Implements
public WorkerViewModel? GetElement(WorkerSearchModel model) public WorkerViewModel? GetElement(WorkerSearchModel model)
{ {
using var context = new CarServiceDbContext(); using var context = new CarServiceDbContext();
if (model.Id.HasValue)//Сначала ищем по Id
{
return context.Workers.FirstOrDefault(x => x.Id == model.Id)?.GetViewModel; return context.Workers.FirstOrDefault(x => x.Id == model.Id)?.GetViewModel;
} }
else if (!string.IsNullOrEmpty(model.Login) && string.IsNullOrEmpty(model.Password))//Затем по логину (для проверки уникальности)
{
return context.Workers.FirstOrDefault(x => x.Login == model.Login)?.GetViewModel;
}
else if (!string.IsNullOrEmpty(model.Login) && !string.IsNullOrEmpty(model.Password))//Затем по логину и паролю (для входа)
{
return context.Workers.FirstOrDefault(x => x.Login == model.Login && x.Password == model.Password)?.GetViewModel;
}
return null;
}
public WorkerViewModel? Insert(WorkerBindingModel model) public WorkerViewModel? Insert(WorkerBindingModel model)
{ {
//TODO проверка на униКАЛьность
using var context = new CarServiceDbContext(); using var context = new CarServiceDbContext();
var newWorker = Worker.Create(model); var newWorker = Worker.Create(model);
if (newWorker != null) if (newWorker != null)
@ -38,11 +49,27 @@ namespace CarServiceDatabase.Implements
} }
public WorkerViewModel? Update(WorkerBindingModel model) public WorkerViewModel? Update(WorkerBindingModel model)
{ {
throw new NotImplementedException(); using var context = new CarServiceDbContext();
var worker = context.Workers.FirstOrDefault(x => x.Id == model.Id);
if (worker == null)
{
return null;
}
worker.Update(model);
context.SaveChanges();
return worker.GetViewModel;
} }
public WorkerViewModel? Delete(WorkerBindingModel model) public WorkerViewModel? Delete(WorkerBindingModel model)
{ {
throw new NotImplementedException(); using var context = new CarServiceDbContext();
var worker = context.Workers.FirstOrDefault(x => x.Id == model.Id);
if (worker == null)
{
return null;
}
context.Workers.Remove(worker);
context.SaveChanges();
return worker.GetViewModel;
} }
} }
} }

View File

@ -42,17 +42,6 @@ namespace CarServiceDatabase.Models
Surname = model.Surname Surname = model.Surname
}; };
} }
public static Worker Create(WorkerViewModel model)
{
return new()
{
Id = model.Id,
Login = model.Login,
Password = model.Password,
Name = model.Name,
Surname = model.Surname
};
}
public void Update(WorkerBindingModel? model) public void Update(WorkerBindingModel? model)
{ {
if (model == null) if (model == null)

View File

@ -14,6 +14,8 @@ namespace CarServiceView
InitializeComponent(); InitializeComponent();
} }
private void buttonRegister_Click(object sender, EventArgs e) private void buttonRegister_Click(object sender, EventArgs e)
{
try
{ {
_workerLogic.Create(new() _workerLogic.Create(new()
{ {
@ -23,5 +25,10 @@ namespace CarServiceView
Surname = textBoxSurname.Text Surname = textBoxSurname.Text
}); });
} }
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
} }
} }