diff --git a/Hotel/HotelBusinessLogic/BusinessLogics/OrganiserLogic.cs b/Hotel/HotelBusinessLogic/BusinessLogics/OrganiserLogic.cs index 049b838..9866c33 100644 --- a/Hotel/HotelBusinessLogic/BusinessLogics/OrganiserLogic.cs +++ b/Hotel/HotelBusinessLogic/BusinessLogics/OrganiserLogic.cs @@ -4,6 +4,7 @@ using HotelContracts.SearchModels; using HotelContracts.StoragesContracts; using HotelContracts.ViewModels; using Microsoft.Extensions.Logging; +using System.Text.RegularExpressions; namespace HotelBusinessLogic.BusinessLogics { @@ -135,6 +136,11 @@ namespace HotelBusinessLogic.BusinessLogics throw new ArgumentNullException("Нет номера телефона организатора", nameof(model.OrganiserNumber)); } + if (model.OrganiserEmail.Length > _loginMaxLength || !Regex.IsMatch(model.OrganiserEmail, @"([a-zA-Z0-9]+@[a-zA-Z0-9]+\.[a-zA-Z0-9]+)")) + { + throw new Exception($"В качестве логина должна быть указана почта и иметь длинну не более {_loginMaxLength} символов"); + } + if (string.IsNullOrEmpty(model.OrganiserEmail)) { throw new ArgumentNullException("Нет почты организатора", nameof(model.OrganiserEmail)); @@ -145,21 +151,17 @@ namespace HotelBusinessLogic.BusinessLogics throw new ArgumentNullException("Нет пароля организатора", nameof(model.OrganiserPassword)); } - if (model.OrganiserPassword.Length < _passwordMinLength) + if (model.OrganiserPassword.Length > _passwordMaxLength || model.OrganiserPassword.Length < _passwordMinLength + || !Regex.IsMatch(model.OrganiserPassword, @"^((\w+\d+\W+)|(\w+\W+\d+)|(\d+\w+\W+)|(\d+\W+\w+)|(\W+\w+\d+)|(\W+\d+\w+))[\w\d\W]*$")) { - throw new ArgumentNullException("Пароль слишком короткий", nameof(model.OrganiserPassword)); - } - - if (model.OrganiserPassword.Length > _passwordMaxLength) - { - throw new ArgumentNullException("Пароль слишком длинный", nameof(model.OrganiserPassword)); + throw new Exception($"Пароль длиной от {_passwordMinLength} до {_passwordMaxLength} должен состоять из цифр, букв и небуквенных символов"); } _logger.LogInformation("Organiser. OrganiserFIO: {OrganiserFIO}. OrganiserLogin: {OrganiserLogin}. Id: {Id}", model.OrganiserFIO, model.OrganiserLogin, model.Id); var element = _organiserStorage.GetElement(new OrganiserSearchModel { - OrganiserLogin = model.OrganiserLogin + OrganiserEmail = model.OrganiserEmail }); if (element != null && element.Id != model.Id)