public override IEnumerable <ValidationResult> Validate(ValidationContext validationContext) { if (!IbanChecker.CheckIban(Iban)) { yield return(new ValidationResult($"IBAN {Iban} ist nich gültig", new string[] { nameof(Iban) })); } }
/// <summary> /// Prüfung, ob für den zu buchenden Zeitraum des Raums bereits eine andere Buchung vorliegt. /// </summary> /// <param name="entity"></param> private async Task ValidateEntityAsync(object entity) { if (entity is Booking booking) { var bookingsForRoom = await _dbContext.Bookings.Include(b => b.Customer).Where(b => b.RoomId == booking.RoomId).ToArrayAsync(); var bookingFrom = DateTime.Parse(booking.From); var bookingTo = DateTime.Parse(booking.To); foreach (var bookingForRoom in bookingsForRoom) { var bookingForRoomFrom = DateTime.Parse(bookingForRoom.From); var bookingForRoomTo = DateTime.Parse(bookingForRoom.To); if (bookingFrom >= bookingForRoomFrom && bookingFrom <= bookingForRoomTo) { throw new ValidationException($"Es gibt schon eine Buchung von {bookingForRoom.Customer.LastName} von {bookingForRoom.From} bis {bookingForRoom.To} ", null, new List <string> { "From" }); } if (bookingTo >= bookingForRoomFrom && bookingTo <= bookingForRoomTo) { throw new ValidationException($"Es gibt schon eine Buchung von {bookingForRoom.Customer.LastName} von {bookingForRoom.From} bis {bookingForRoom.To} ", null, new List <string> { "To" }); } } } if (entity is Customer customer) // WPF-Anwendung { if (!IbanChecker.CheckIban(customer.Iban)) { throw new ValidationException( "Iban is not valid", null, value: null ); } if (string.IsNullOrWhiteSpace(customer.LastName)) { throw new ValidationException( "Lastname is requiered", null, null); } if (customer.LastName.Length < 2) { throw new ValidationException( "Minimum length of Lastname is 2", null, null); } } }
/// <summary> /// Prüfung, ob für den zu buchenden Zeitraum des Raums bereits eine andere Buchung vorliegt. /// </summary> /// <param name="entity"></param> private async Task ValidateEntityAsync(object entity) { if (entity is Booking booking) { var bookingsForRoom = await _dbContext.Bookings.Include(b => b.Customer).Where(b => b.RoomId == booking.RoomId).ToArrayAsync(); var bookingFrom = DateTime.Parse(booking.From); var bookingTo = DateTime.Parse(booking.To); foreach (var bookingForRoom in bookingsForRoom) { var bookingForRoomFrom = DateTime.Parse(bookingForRoom.From); var bookingForRoomTo = DateTime.Parse(bookingForRoom.To); if (bookingFrom >= bookingForRoomFrom && bookingFrom <= bookingForRoomTo) { throw new ValidationException($"Es gibt schon eine Buchung von {bookingForRoom.Customer.LastName} von {bookingForRoom.From} bis {bookingForRoom.To} ", null, new List <string> { "From" }); } if (bookingTo >= bookingForRoomFrom && bookingTo <= bookingForRoomTo) { throw new ValidationException($"Es gibt schon eine Buchung von {bookingForRoom.Customer.LastName} von {bookingForRoom.From} bis {bookingForRoom.To} ", null, new List <string> { "To" }); } } } if (entity is Customer customer) // WPF-Anwendung { var dbCustomer = await _dbContext.Customers.Where(c => c.Id != customer.Id && c.FirstName.Equals(customer.FirstName) && customer.LastName.Equals(customer.LastName)) .ToArrayAsync(); if (string.IsNullOrWhiteSpace(customer.LastName)) { throw new ValidationException("Es ist ein Nachname erforderlich!"); } if (customer.LastName.Length < 2) { throw new ValidationException("Der Nachname muss mindestens zwei Zeichen lang sein!"); } if (dbCustomer != null) { throw new ValidationException($"{customer.LastName} {customer.FirstName} existiert bereits!"); } if (!IbanChecker.CheckIban(customer.Iban)) { throw new ValidationException("Kein gültiger IBAN!"); } } }
/// <summary> /// Prüfung, ob für den zu buchenden Zeitraum des Raums bereits eine andere Buchung vorliegt. /// </summary> /// <param name="entity"></param> private async Task ValidateEntityAsync(object entity) { if (entity is Booking booking) { var bookingsForRoom = await _dbContext.Bookings.Include(b => b.Customer).Where(b => b.RoomId == booking.RoomId).ToArrayAsync(); var bookingFrom = DateTime.Parse(booking.From); var bookingTo = DateTime.Parse(booking.To); foreach (var bookingForRoom in bookingsForRoom) { var bookingForRoomFrom = DateTime.Parse(bookingForRoom.From); var bookingForRoomTo = DateTime.Parse(bookingForRoom.To); if (bookingFrom >= bookingForRoomFrom && bookingFrom <= bookingForRoomTo) { throw new ValidationException($"Es gibt schon eine Buchung von {bookingForRoom.Customer.LastName} von {bookingForRoom.From} bis {bookingForRoom.To} ", null, new List <string> { "From" }); } if (bookingTo >= bookingForRoomFrom && bookingTo <= bookingForRoomTo) { throw new ValidationException($"Es gibt schon eine Buchung von {bookingForRoom.Customer.LastName} von {bookingForRoom.From} bis {bookingForRoom.To} ", null, new List <string> { "To" }); } } } if (entity is Customer customer) // WPF-Anwendung { var customers = await _dbContext.Customers .Where(c => c.FirstName.Equals(customer.FirstName) && c.LastName.Equals(customer.LastName) && c.Id != customer.Id) .ToArrayAsync(); if (customers != null) { throw new ValidationException($"Es gibt bereits einen Kunden mit dem Namen {customer.LastName} {customer.FirstName}"); } if (!IbanChecker.CheckIban(customer.Iban)) { throw new ValidationException("Der Iban ist kein gültiger Iban"); } } }
/// <summary> /// Prüfung, ob für den zu buchenden Zeitraum des Raums bereits eine andere Buchung vorliegt. /// </summary> /// <param name="entity"></param> private async Task ValidateEntityAsync(object entity) { Validator.ValidateObject(entity, new ValidationContext(entity), true); ValidationResult result = null; if (entity is Booking booking) { var bookingsForRoom = await _dbContext.Bookings.Include(b => b.Customer).Where(b => b.RoomId == booking.RoomId).ToArrayAsync(); var bookingFrom = DateTime.Parse(booking.From); var bookingTo = DateTime.Parse(booking.To); foreach (var bookingForRoom in bookingsForRoom) { var bookingForRoomFrom = DateTime.Parse(bookingForRoom.From); var bookingForRoomTo = DateTime.Parse(bookingForRoom.To); if (bookingFrom >= bookingForRoomFrom && bookingFrom <= bookingForRoomTo) { throw new ValidationException($"Es gibt schon eine Buchung von {bookingForRoom.Customer.LastName} von {bookingForRoom.From} bis {bookingForRoom.To} ", null, new List <string> { "From" }); } if (bookingTo >= bookingForRoomFrom && bookingTo <= bookingForRoomTo) { throw new ValidationException($"Es gibt schon eine Buchung von {bookingForRoom.Customer.LastName} von {bookingForRoom.From} bis {bookingForRoom.To} ", null, new List <string> { "To" }); } } } if (entity is Customer customer) // WPF-Anwendung { if (!IbanChecker.CheckIban(customer.Iban)) { throw new ValidationException($"Der IBAN {customer.Iban} von {customer.LastName} {customer.FirstName} ", null, new List <string> { "IBAN" }); } result = _duplicateNameValidation.GetValidationResult(customer, new ValidationContext(customer)); if (result != null && result != ValidationResult.Success) { throw new ValidationException(result, _duplicateNameValidation, entity); } } }
/// <summary> /// Prüfung, ob für den zu buchenden Zeitraum des Raums bereits eine andere Buchung vorliegt. /// </summary> /// <param name="entity"></param> private async Task ValidateEntityAsync(object entity) { if (entity is Booking booking) { var bookingsForRoom = await _dbContext.Bookings.Include(b => b.Customer).Where(b => b.RoomId == booking.RoomId).ToArrayAsync(); var bookingFrom = DateTime.Parse(booking.From); var bookingTo = DateTime.Parse(booking.To); foreach (var bookingForRoom in bookingsForRoom) { var bookingForRoomFrom = DateTime.Parse(bookingForRoom.From); var bookingForRoomTo = DateTime.Parse(bookingForRoom.To); if (bookingFrom >= bookingForRoomFrom && bookingFrom <= bookingForRoomTo) { throw new ValidationException($"Es gibt schon eine Buchung von {bookingForRoom.Customer.LastName} von {bookingForRoom.From} bis {bookingForRoom.To} ", null, new List <string> { "From" }); } if (bookingTo >= bookingForRoomFrom && bookingTo <= bookingForRoomTo) { throw new ValidationException($"Es gibt schon eine Buchung von {bookingForRoom.Customer.LastName} von {bookingForRoom.From} bis {bookingForRoom.To} ", null, new List <string> { "To" }); } } } if (entity is Customer customer) // WPF-Anwendung { var dbcustomer = await _dbContext.Customers.FirstOrDefaultAsync(c => c.FirstName == customer.FirstName && c.LastName == customer.LastName && c.Id != customer.Id); if (customer != null) { throw new ValidationException( $"Name {customer.LastName} {customer.FirstName} existiert bereits", null, null); } if (!IbanChecker.CheckIban(customer.Iban)) { throw new ValidationException("Iban must be valid"); } } }