Пример #1
0
 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) }));
     }
 }
Пример #2
0
        /// <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);
                }
            }
        }
Пример #3
0
        /// <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!");
                }
            }
        }
Пример #4
0
        /// <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");
                }
            }
        }
Пример #5
0
        /// <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);
                }
            }
        }
Пример #6
0
        /// <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");
                }
            }
        }