diff --git a/src/Command/TestInsuranceConnectorCommand.php b/src/Command/TestInsuranceConnectorCommand.php index 6cdb8f8c..8c1ecaa8 100644 --- a/src/Command/TestInsuranceConnectorCommand.php +++ b/src/Command/TestInsuranceConnectorCommand.php @@ -65,7 +65,7 @@ class TestInsuranceConnectorCommand extends Command ->setMvFileNumber('123456789012345') ->setMotorNumber('E31TE-0075268') ->setSerialChassis('PA0SEF210K0075701') - ->setYearModel('2020') + ->setYearModel(2020) ->setMvTypeID(1) ->setBodyType('SEDAN') ->setLine(LineType::PRIVATE_CAR) diff --git a/src/Controller/Insurance/InsuranceAPIController.php b/src/Controller/Insurance/InsuranceAPIController.php index 5807f1d6..c1f2e0bc 100644 --- a/src/Controller/Insurance/InsuranceAPIController.php +++ b/src/Controller/Insurance/InsuranceAPIController.php @@ -34,10 +34,32 @@ class InsuranceAPIController extends Controller implements LoggedController public function createCTPLApplication(Request $req, EntityManagerInterface $em, InsuranceDataValidator $ins_validator, InsuranceConnector $insurance) { - // TODO: are we letting the app fill in all the fields needed for the CTPL application? // check parameters $required_params = [ - '', + 'client_type', + 'first_name', + 'last_name', + 'corporate_name', + 'address_number', + 'address_barangay', + 'address_city', + 'address_province', + 'zipcode', + 'mobile_number', + 'email_address', + 'make', + 'model', + 'series', + 'color', + 'plate_number', + 'mv_file_number', + 'motor_number', + 'serial_chassis', + 'year_model', + 'mv_type_id', + 'body_type', + 'is_public', + 'line', ]; // check required parameters and api key @@ -48,17 +70,18 @@ class InsuranceAPIController extends Controller implements LoggedController // create client data $client_data = new ClientData(); - // TODO: set values for client data + $this->setClientData($req, $client_data); // check if client data values are valid - $error_mesage = $ins_validator->validateClientData($client_data); + $error_message = $ins_validator->validateClientData($client_data); if ($error_message != null) { + error_log('client data values are not valid ' . $error_message); // return error message $res->setError(true) ->setErrorMessage($error_message); - return $res; + return $res->getReturnResponse(); } $result = $insurance->processApplication($client_data); @@ -71,7 +94,7 @@ class InsuranceAPIController extends Controller implements LoggedController $res->setError(true) ->setErrorMessage($message); - return $res; + return $res->getReturnResponse(); } // return data portion of result received from insurance api @@ -82,6 +105,42 @@ class InsuranceAPIController extends Controller implements LoggedController return $res->getReturnResponse(); } + protected function setClientData(Request $req, ClientData $client_data) + { + // set client info part + $client_data->setClientType($req->request->get('client_type', '')) + ->setFirstName($req->request->get('first_name', '')) + ->setMiddleName($req->request->get('middle_name', '')) + ->setSurname($req->request->get('last_name', '')) + ->setCorporateName($req->request->get('corporate_name', '')); + + // set the client contact info part + $client_data->setAddressNumber($req->request->get('address_number', '')) + ->setAddressStreet($req->request->get('address_street', '')) + ->setAddressBuilding($req->request->get('address_building', '')) + ->setAddressBarangay($req->request->get('address_barangay', '')) + ->setAddressCity($req->request->get('address_city', '')) + ->setAddressProvince($req->request->get('address_province', '')) + ->setZipcode($req->request->get('zipcode', 0)) + ->setMobileNumber($req->request->get('mobile_number', '')) + ->setEmailAddress($req->request->get('email_address', '')); + + // set the car info part + $client_data->setMake($req->request->get('make', '')) + ->setModel($req->request->get('model', '')) + ->setSeries($req->request->get('series', '')) + ->setColor($req->request->get('color', '')) + ->setPlateNumber($req->request->get('plate_number', '')) + ->setMvFileNumber($req->request->get('mv_file_number', '')) + ->setMotorNumber($req->request->get('motor_number', '')) + ->setSerialChassis($req->request->get('serial_chassis', '')) + ->setYearModel($req->request->get('year_model', 0)) + ->setMvTypeID($req->request->get('mv_type_id', 0)) + ->setBodyType($req->request->get('body_type', '')) + ->setLine($req->request->get('line', '')) + ->setPublic($req->request->get('is_public', false)); + } + protected function checkMissingParameters(Request $req, $params = []) { $missing = []; diff --git a/src/Service/InsuranceDataValidator.php b/src/Service/InsuranceDataValidator.php index 33a01ddd..74b4ea32 100644 --- a/src/Service/InsuranceDataValidator.php +++ b/src/Service/InsuranceDataValidator.php @@ -57,6 +57,8 @@ class InsuranceDataValidator return $error; } + // TODO: should we check for the format of corporate name if client type is Individual? + // number address is required if (empty($client_data->getAddressNumber())) { @@ -173,7 +175,7 @@ class InsuranceDataValidator } // vehicle year model is required - if (empty($client_data->getYearModel())) + if ($client_data->getYearModel() == 0) { $error = 'Vehicle year model is required.'; return $error; @@ -222,6 +224,7 @@ class InsuranceDataValidator // 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 + // TODO: should we check other combinations? Like PCOC/private car and flag_public is true? if ($client_data->getLine() == LineType::PRIVATE_MOTORCYCLE) { if ($client_data->isPublic())