-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathOffersController.php
More file actions
96 lines (85 loc) · 3 KB
/
Copy pathOffersController.php
File metadata and controls
96 lines (85 loc) · 3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
<?php
/**
* Created by PhpStorm.
* @author Valentin Ruskevych <leaderpvp@gmail.com>
*/
namespace Controllers;
use Core\AbstractController;
use Core\Http\Response;
use Models\Offers;
class OffersController extends AbstractController
{
/**
* @desc action method which should return Response.
* Pagination not implemented on backend, nor frontend as we are working with very limited amount now.
* @todo : add pagination...
*/
public function showAction() : Response {
$model = new Offers();
$getParams = $this->getRequest()->getGetParameters();
$packages = [];
// scenario 1) get by package and country ids.
if (isset($getParams['package']) && isset($getParams['country'])) {
$packages = $model->getOffersByPackageAndCountry($getParams['package'], $getParams['country']);
}
// scenario 2) get offer by id.
if (isset($getParams['id'])) {
$packages = $model->getOfferById($getParams['id']);
}
// scenario 3) get all offers (actually "some" 50 offers) as if we take all offers, will crash any browser.
if (!isset($getParams['package']) && !isset($getParams['country']) && !isset($getParams['id'])){
$packages = $model->getRecentOffers();
}
return $this->makeResponse()->setJsonResponseType()->setSuccess()->setContent($packages);
}
/**
* @desc Mapping offer to countries to packages !
*
* @return Response
*/
public function mapOffersAction() : Response {
$model = new Offers();
return $this->makeResponse()->setJsonResponseType()->setSuccess()->setContent($model->mapOffers());
}
/**
* @desc Serving POST method.
*
* @return Response
*/
public function createAction() : Response {
$data = $this->getRequest()->getPostParameters();
$model = new Offers();
$response = $this->makeResponse()->setJsonResponseType()->setContent([]);
if (!$model->create($data)) {
return $response->setFailure();
}
return $response->setSuccess();
}
/**
* @desc Serving DELETE method
*
* @return Response
*/
public function removeAction() : Response {
$id = $this->getRequest()->getGetParameters()['id'] ?? null;
$response = $this->makeResponse()->setJsonResponseType();
$model = new Offers();
if (!$model->remove($id)) {
return $response->setContent('Could not remove supplied offer')->setFailure();
}
return $response->setSuccess()->setContent([]);
}
/**
* @desc REST POST method
* @return Response
*/
public function updateAction() : Response {
$data = $this->getRequest()->getPostParameters();
$model = new Offers();
$response = $this->makeResponse()->setJsonResponseType()->setContent([]);
if (!$model->update($data)) {
return $response->setFailure();
}
return $response->setSuccess();
}
}