diff --git a/Trenser.VehicleServiceSystem/Trenser.VehicleServiceSystem/services/UserManagementService.cpp b/Trenser.VehicleServiceSystem/Trenser.VehicleServiceSystem/services/UserManagementService.cpp index 3a2ce96..613a3d2 100644 --- a/Trenser.VehicleServiceSystem/Trenser.VehicleServiceSystem/services/UserManagementService.cpp +++ b/Trenser.VehicleServiceSystem/Trenser.VehicleServiceSystem/services/UserManagementService.cpp @@ -19,7 +19,7 @@ Date:19-May-2026 #include "User.h" #include "UserManagementService.h" #include "Vector.h" - +#include "Validator.h" /* Function: ensureAdminExists @@ -74,16 +74,18 @@ void UserManagementService::createUser(const std::string& username, const std::s PaymentManagementService paymentManagementService; ServiceManagementService serviceManagementService; auto& usersMap = m_dataStore.getUsers(); - int index = usersMap.findIf( - [&](const std::string&, User* user) - { - return user->getUserName() == username; - } - ); - if (index != -1) + if (util::isUsernameDuplicate(username, usersMap)) { throw std::runtime_error("Username already exists"); } + if (util::isEmailDuplicate(email, usersMap)) + { + throw std::runtime_error("Email already exists"); + } + if (util::isPhoneDuplicate(phone, usersMap)) + { + throw std::runtime_error("Phone already exists"); + } User* newUser = Factory::getObject(username, password, name, phone, email, type); usersMap.insert(newUser->getId(), newUser); paymentManagementService.attach(newUser); diff --git a/Trenser.VehicleServiceSystem/Trenser.VehicleServiceSystem/utilities/Validator.cpp b/Trenser.VehicleServiceSystem/Trenser.VehicleServiceSystem/utilities/Validator.cpp index b2ed37d..cdba432 100644 --- a/Trenser.VehicleServiceSystem/Trenser.VehicleServiceSystem/utilities/Validator.cpp +++ b/Trenser.VehicleServiceSystem/Trenser.VehicleServiceSystem/utilities/Validator.cpp @@ -106,4 +106,37 @@ bool util::isPasswordValid(const std::string& password) } return hasUpper && hasLower && hasDigit && hasSpecial; -} \ No newline at end of file +} + +bool util::isUsernameDuplicate(const std::string& username, const util::Map& usersMap) +{ + int index = usersMap.findIf( + [&](const std::string&, User* user) + { + return (user->getUserName() == username && user->getState() == util::State::ACTIVE); + } + ); + return index != -1; +} + +bool util::isPhoneDuplicate(const std::string& phone, const util::Map& usersMap) +{ + int index = usersMap.findIf( + [&](const std::string&, User* user) + { + return (user->getPhone() == phone && user->getState() == util::State::ACTIVE); + } + ); + return index != -1; +} + +bool util::isEmailDuplicate(const std::string& email, const util::Map& usersMap) +{ + int index = usersMap.findIf( + [&](const std::string&, User* user) + { + return (user->getEmail() == email && user->getState() == util::State::ACTIVE); + } + ); + return index != -1; +} diff --git a/Trenser.VehicleServiceSystem/Trenser.VehicleServiceSystem/utilities/Validator.h b/Trenser.VehicleServiceSystem/Trenser.VehicleServiceSystem/utilities/Validator.h index 8602e4e..aa7b526 100644 --- a/Trenser.VehicleServiceSystem/Trenser.VehicleServiceSystem/utilities/Validator.h +++ b/Trenser.VehicleServiceSystem/Trenser.VehicleServiceSystem/utilities/Validator.h @@ -9,10 +9,15 @@ #include #include #include +#include "Map.h" +#include "User.h" namespace util { bool isPhoneNumberValid(const std::string&); bool isEmailValid(const std::string&); bool isPasswordValid(const std::string&); + bool isUsernameDuplicate(const std::string&, const util::Map&); + bool isPhoneDuplicate(const std::string&, const util::Map&); + bool isEmailDuplicate(const std::string&, const util::Map&); } \ No newline at end of file diff --git a/Trenser.VehicleServiceSystem/Trenser.VehicleServiceSystem/views/UserInterface.cpp b/Trenser.VehicleServiceSystem/Trenser.VehicleServiceSystem/views/UserInterface.cpp index 5de852d..9b693cb 100644 --- a/Trenser.VehicleServiceSystem/Trenser.VehicleServiceSystem/views/UserInterface.cpp +++ b/Trenser.VehicleServiceSystem/Trenser.VehicleServiceSystem/views/UserInterface.cpp @@ -136,6 +136,7 @@ void UserInterface::registerCustomer() { std::string username, name, email, phone, password; util::clear(); + std::cout << "Register Customer\n"; std::cout << "Enter username: "; util::read(username); std::cout << "Enter name: "; @@ -165,6 +166,6 @@ void UserInterface::registerCustomer() return; } m_controller.createCustomer(username, name, password, email, phone); - std::cout << "Registration is successful"; + std::cout << "Registration is successfull"; util::pressEnter(); }