Banking_System_Client  1.0.0
Qt-based banking app for user/admin account management, transactions, secure server communication via PostgreSQL/Supabase.
ValidationStrategy.h
Go to the documentation of this file.
1 
7 #ifndef VALIDATIONSTRATEGY_H
8 #define VALIDATIONSTRATEGY_H
9 
10 #include <QRegularExpressionValidator>
11 #include <QString>
12 
19 {
20 public:
26  virtual bool isValid(const QString& input) const = 0;
27 
32  virtual QString errorMessage() const = 0;
33 };
34 
41 {
42 public:
48  bool isValid(const QString& input) const override
49  {
50  const QRegularExpression namePattern(R"((^[A-Za-z]*$))");
51  return namePattern.match(input).hasMatch();
52  }
53 
58  QString errorMessage() const override
59  {
60  return "Invalid name format";
61  }
62 };
63 
70 {
71 public:
77  bool isValid(const QString& input) const override
78  {
79  const QRegularExpression emailPattern(R"((^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$))");
80  return emailPattern.match(input).hasMatch();
81  }
82 
87  QString errorMessage() const override
88  {
89  return "Invalid email format";
90  }
91 };
92 
99 {
100 public:
106  bool isValid(const QString& input) const override
107  {
108  const QRegularExpression passwordPattern(R"((?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,})");
109  return passwordPattern.match(input).hasMatch();
110  }
111 
116  QString errorMessage() const override
117  {
118  return "Password must contain at least 8 characters, 1 digit, 1 lowercase, and 1 uppercase";
119  }
120 };
121 
128 {
129 public:
135  bool isValid(const QString& input) const override
136  {
137  const QRegularExpression balancePattern(R"((^[0-9]*$))");
138  return balancePattern.match(input).hasMatch();
139  }
140 
145  QString errorMessage() const override
146  {
147  return "Invalid balance format";
148  }
149 };
150 
157 {
158 public:
164  bool isValid(const QString& input) const override
165  {
166  const QRegularExpression accountNumberPattern(R"((^[0-9]{6}$))");
167  return accountNumberPattern.match(input).hasMatch();
168  }
169 
174  QString errorMessage() const override
175  {
176  return "Account number must contain 10 digits";
177  }
178 };
179 
180 #endif // VALIDATIONSTRATEGY_H
Concrete validation strategy for account numbers.
Definition: ValidationStrategy.h:157
QString errorMessage() const override
Retrieves the error message for an invalid account number.
Definition: ValidationStrategy.h:174
bool isValid(const QString &input) const override
Validates the input string as an account number.
Definition: ValidationStrategy.h:164
Concrete validation strategy for balances.
Definition: ValidationStrategy.h:128
bool isValid(const QString &input) const override
Validates the input string as a balance.
Definition: ValidationStrategy.h:135
QString errorMessage() const override
Retrieves the error message for an invalid balance.
Definition: ValidationStrategy.h:145
Concrete validation strategy for emails.
Definition: ValidationStrategy.h:70
QString errorMessage() const override
Retrieves the error message for an invalid email.
Definition: ValidationStrategy.h:87
bool isValid(const QString &input) const override
Validates the input string as an email.
Definition: ValidationStrategy.h:77
Interface for validation strategies.
Definition: ValidationStrategy.h:19
virtual QString errorMessage() const =0
Retrieves the error message for invalid input.
virtual bool isValid(const QString &input) const =0
Validates the input string.
Concrete validation strategy for names.
Definition: ValidationStrategy.h:41
QString errorMessage() const override
Retrieves the error message for an invalid name.
Definition: ValidationStrategy.h:58
bool isValid(const QString &input) const override
Validates the input string as a name.
Definition: ValidationStrategy.h:48
Concrete validation strategy for passwords.
Definition: ValidationStrategy.h:99
QString errorMessage() const override
Retrieves the error message for an invalid password.
Definition: ValidationStrategy.h:116
bool isValid(const QString &input) const override
Validates the input string as a password.
Definition: ValidationStrategy.h:106