em = $em; } public function validateClientData(ClientData$client_data) { // client type is required if (empty($client_data->getClientType())) { $error = 'Client type is required.'; return $error; } // client type values should either be C or I if (($client_data->getClientType() !== ClientType::CORPORATE) && ($client_data->getClientType() !== ClientType::INDIVIDUAL)) { $error = 'Invalid client type values. Values should only be C for corporate type or I for individual.'; return $error; } // first name is required if (empty($client_data->getFirstName())) { $error = 'First name is required.'; return $error; } // surname is required if (empty($client_data->getSurname())) { $error = 'Surname is required.'; return $error; } // corporate name is required if (empty($client_data->getCorporateName())) { $error = 'Corporate name is required.'; return $error; } // number address is required if (empty($client_data->getAddressNumber())) { $error = 'House number address is required.'; return $error; } // barangay address is required if (empty($client_data->getAddressBarangay())) { $error = 'Barangay address is required.'; return $error; } // city address is required if (empty($client_data->getAddressCity())) { $error = 'City address is required.'; return $error; } // province address is required if (empty($client_data->getAddressProvince())) { $error = 'Province address is required.'; return $error; } // zipcode is required if (empty($client_data->getZipcode())) { $error = 'Zipcode is required.'; return $error; } // mobile number is required if (empty($client_data->getMobileNumber())) { $error = 'Mobile number is required.'; return $error; } // email address is required if (empty($client_data->getEmailAddress())) { $error = 'Email address is required.'; return $error; } // make is required if (empty($client_data->getMake())) { $error = 'Vehicle make is required.'; return $error; } // model is required if (empty($client_data->getMake())) { $error = 'Vehicle make is required.'; return $error; } // series is required if (empty($client_data->getSeries())) { $error = 'Vehicle series is required.'; return $error; } // color is required if (empty($client_data->getColor())) { $error = 'Vehicle color is required.'; return $error; } // plate number is required if (empty($client_data->getPlateNumber())) { $error = 'Plate number is required.'; return $error; } // plate number is correct format $is_valid_plate = $this->checkPlateNumber($client_data->getPlateNumber()); if (!($is_valid_plate)) { $error = 'Invalid plate number.'; return $error; } // MV file number is required if (empty($client_data->getMvFileNumber())) { $error = 'MV file number is required.'; return $error; } // motor number is required if (empty($client_data->getMotorNumber())) { $error = 'Motor number is required.'; return $error; } // serial or chassis number is required if (empty($client_data->getSerialChassis())) { $error = 'Serial or chassis number is required.'; return $error; } // vehicle year model is required if (empty($client_data->getYearModel())) { $error = 'Vehicle year model is required.'; return $error; } // motor vehicle type id is required if ($client_data->getMvTypeID() == 0) { $error = 'Motor vehicle type must be set.'; return $error; } // check if it's a valid MV type $mv_type_id = $client_data->getMvTypeID(); $mv_type = $this->em->getRepository(MotorVehicleType::class)->findBy(['mv_type_id' => $mv_type_id]); if ($mv_type == null) { $error = 'Invalid motor vehicle type.'; return $error; } // body type is required if (empty($client_data->getBodyType())) { $error = 'Vehicle body type is required.'; return $error; } // line is required if (empty($client_data->getLine())) { $error = 'Line type is required.'; return $error; } // check line if valid if (($client_data->getLine() !== LineType::PRIVATE_CAR) && ($client_data->getLine() !== LineType::PRIVATE_MOTORCYCLE) && ($client_data->getLine() !== LineType::COMMERCIAL_VEHICLE) && ($client_data->getLine() !== LineType::PUBLIC_MOTORCYCLE)) { $error = 'Invalid line type.'; return $error; } // check line type and flag_public combination // if line type is MCOC/private motorcycle, flag_public should be false // if line type is LCOC/public motorcycle, flag_public should be true if ($client_data->getLine() == LineType::PRIVATE_MOTORCYCLE) { if ($client_data->isPublic()) { $error = 'Line type is invalid for public vehicles.'; return $error; } } if ($client_data->getLine() == LineType::PUBLIC_MOTORCYCLE) { if (!($client_data->isPublic())) { $error = 'Line type is invalid for private vehicles.'; return $error; } } return null; } protected function checkPlateNumber($plate) { // check if alphanumeric, max length is 11, no spaces, uppercase $res = preg_match("/^[A-Z0-9]{1,11}+$/", $plate); if ($res) return true; return false; } }