validateRequest($req); if (!$validity['is_valid']) { return new ApiResponse(false, $validity['error']); } // if no customer found $cust = $this->session->getCustomer(); if ($cust == null) { return new ApiResponse(true, '', [ 'first_name' => '', 'last_name' => '', 'email' => '', 'priv_third_party' => (bool) false, 'priv_promo' => (bool) false, ]); } // send back customer details return new ApiResponse(true, '', [ 'first_name' => $cust->getFirstName(), 'last_name' => $cust->getLastName(), 'email' => $cust->getEmail(), 'priv_third_party' => (bool) $cust->getPrivacyThirdParty(), 'priv_promo' => (bool) $cust->getPrivacyPromo(), ]); } public function updateInfo(Request $req, PayMongoConnector $pm) { // validate params $validity = $this->validateRequest($req); if (!$validity['is_valid']) { return new ApiResponse(false, $validity['error']); } $cust = $this->updateCustomerInfo($req); $policy_mobile_id = $_ENV['POLICY_MOBILE']; $mobile_policy = $this->em->getRepository(PrivacyPolicy::class)->find($policy_mobile_id); // set policy id if ($mobile_policy != null) { $cust->setPrivacyPolicyMobile($mobile_policy); } $this->em->flush(); // initialize paymongo connector $this->initializeSubscriptionPayMongoConnector($pm); // update customer paymongo record if exists $pm->updateCustomerIfExists($cust); // response return new ApiResponse(); } public function getStatus(Request $req) { // validate params $validity = $this->validateRequest($req); if (!$validity['is_valid']) { return new ApiResponse(false, $validity['error']); } // set data $data = []; if ($this->session->isConfirmed()) { $data['status'] = 'confirmed'; } else { $data['status'] = 'unconfirmed'; } return new ApiResponse(true, '', $data); } public function getCustomerHash(Request $req, HashGenerator $hash) { // validate params $validity = $this->validateRequest($req); if (!$validity['is_valid']) { return new ApiResponse(false, $validity['error']); } // get customer $cust = $this->session->getCustomer(); if ($cust == null) { return new ApiResponse(false, 'No customer information found.'); } // hash customer id $hashed_id = $hash->getHash($cust->getID()); // response return new ApiResponse(true, '', [ 'cust_hash' => $hashed_id, ]); } protected function updateCustomerInfo(Request $req) { // create new customer if it's not there $cust = $this->session->getCustomer(); if ($cust == null) { $cust = new Customer(); // set customer source $cust->setCreateSource(CustomerSource::MOBILE); $this->em->persist($cust); $this->session->setCustomer($cust); } if (!is_null($req->request->get('first_name'))) { $cust->setFirstName($req->request->get('first_name')); } if (!is_null($req->request->get('last_name'))) { $cust->setLastName($req->request->get('last_name')); } if (!is_null($req->request->get('email'))) { $cust->setEmail($req->request->get('email')); } if (!is_null($this->session->isConfirmed())) { $cust->setConfirmed($this->session->isConfirmed()); } // if customer user isn't set, set it now if ($cust->getCustomerUser() == null) { $cust->setCustomerUser($this->session->getCustomerUser()); } // update mobile phone of customer $cust->setPhoneMobile($this->session->getPhoneNumber()); return $cust; } }