diff --git a/config/api_acl.yaml b/config/api_acl.yaml index b677f99d..c3834bf9 100644 --- a/config/api_acl.yaml +++ b/config/api_acl.yaml @@ -18,6 +18,8 @@ access_keys: label: Cancel - id: warranty.delete label: Delete + - id: warranty.set.privacypolicy + label: Set Privacy Policy - id: batterybrand label: Battery Brand Access acls: diff --git a/config/routes/api.yaml b/config/routes/api.yaml index f55b0d83..1cf3b829 100644 --- a/config/routes/api.yaml +++ b/config/routes/api.yaml @@ -149,3 +149,8 @@ api_partner_review: path: /api/partners/{pid}/review controller: App\Controller\APIController:reviewPartner methods: [POST] + +api_warranty_privacy_policy: + path: /api/warranty/{wid}/privacy_policy + controller: App\Controller\APIController::setPrivacyPolicy + methods: [POST] diff --git a/src/Controller/APIController.php b/src/Controller/APIController.php index fcd49749..0ec6eee2 100644 --- a/src/Controller/APIController.php +++ b/src/Controller/APIController.php @@ -81,7 +81,8 @@ class APIController extends Controller else if ($req->getMethod() == 'POST') { $check = $req->request->get($param); - if (empty($check)) + //if (empty($check)) + if (!isset($check)) $missing[] = $param; } else @@ -2182,4 +2183,53 @@ class APIController extends Controller return $res->getReturnResponse(); } + + public function setPrivacyPolicy($wid, Request $req, EntityManagerInterface $em) + { + $required_params = [ + 'privacy_policy_id', + ]; + + $res = $this->checkParamsAndKey($req, $em, $required_params); + if ($res->isError()) + return $res->getReturnResponse(); + + $policy_id = $req->request->get('privacy_policy_id'); + + // check if warranty exists + $warranty = $em->getRepository(Warranty::class)->find($wid); + if ($warranty == null) + { + $res->setError(true) + ->setErrorMessage('No warranty found.'); + return $res->getReturnResponse(); + } + + if ($policy_id == 0) + { + $warranty->setPrivacyPolicy(null); + } + else + { + // find the privacy policy + $privacy_policy = $em->getRepository(PrivacyPolicy::class)->find($policy_id); + if ($privacy_policy == null) + { + $res->setError(true) + ->setErrorMessage('No privacy policy found.'); + return $res->getReturnResponse(); + } + + $warranty->setPrivacyPolicy($privacy_policy); + } + + // save to db + $em->persist($warranty); + $em->flush(); + + $data = []; + $res->setData($data); + + return $res->getReturnResponse(); + } } diff --git a/src/Entity/PrivacyPolicy.php b/src/Entity/PrivacyPolicy.php index b59ee551..4015d193 100644 --- a/src/Entity/PrivacyPolicy.php +++ b/src/Entity/PrivacyPolicy.php @@ -48,6 +48,11 @@ class PrivacyPolicy */ protected $cust_promo; + /** + * @ORM\OneToMany(targetEntity="Warranty", mappedBy="privacy_policy") + */ + protected $warranties; + public function getID() { return $this->id; diff --git a/src/Entity/Warranty.php b/src/Entity/Warranty.php index 1cfa242c..49e3b0a4 100644 --- a/src/Entity/Warranty.php +++ b/src/Entity/Warranty.php @@ -127,6 +127,13 @@ class Warranty */ protected $flag_activated; + // privacy policy + /** + * @ORM\ManyToOne(targetEntity="PrivacyPolicy", inversedBy="warranties") + * @ORM\JoinColumn(name="warranty_privacy_policy", referencedColumnName="id", nullable=true) + */ + protected $privacy_policy; + public function __construct() { $this->date_create = new DateTime(); @@ -366,4 +373,23 @@ class Warranty { return $this->flag_activated; } + + public function hasPrivacyPolicy() + { + if ($this->privacy_policy == null) + return false; + + return true; + } + + public function setPrivacyPolicy($privacy_policy) + { + $this->privacy_policy = $privacy_policy; + return $this; + } + + public function getPrivacyPolicy() + { + return $this->privacy_policy; + } }