Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 64
0.00% covered (danger)
0.00%
0 / 6
CRAP
0.00% covered (danger)
0.00%
0 / 1
SalesController
0.00% covered (danger)
0.00%
0 / 64
0.00% covered (danger)
0.00%
0 / 6
306
0.00% covered (danger)
0.00%
0 / 1
 __construct
0.00% covered (danger)
0.00%
0 / 2
0.00% covered (danger)
0.00%
0 / 1
2
 setStore
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 getSalesByStore
0.00% covered (danger)
0.00%
0 / 12
0.00% covered (danger)
0.00%
0 / 1
12
 getSalesByDateRange
0.00% covered (danger)
0.00%
0 / 14
0.00% covered (danger)
0.00%
0 / 1
12
 getSalesByIndexedField
0.00% covered (danger)
0.00%
0 / 14
0.00% covered (danger)
0.00%
0 / 1
12
 createSalesFromJson
0.00% covered (danger)
0.00%
0 / 21
0.00% covered (danger)
0.00%
0 / 1
42
1<?php
2
3namespace BuyerKiosk\Sales\Controllers;
4
5
6use BuyerKiosk\Sales\SalesItem;
7class SalesController extends \BuyerKiosk\Core\Controllers\BaseController {
8    private $db;
9    private $store;
10
11    public function __construct($app) {
12        parent::__construct($app);
13        $this->db = dbConnectByName('kiosk_sales');
14    }
15
16    public function setStore($typeNum) {
17        $this->store = new \Store($typeNum);
18    }
19
20    public function getSalesByStore($request, $response, $args) {
21        $storeID = $args['storeID'];
22        $this->setStore($storeID);
23
24        $salesItem = new SalesItem($this->store);
25        $result = $salesItem->readByStore($this->store->getTypeNum());
26        $num = $result->rowCount();
27
28        if($num > 0) {
29            $sales_arr = array();
30            $sales_arr['data'] = array();
31
32            while($row = $result->fetch(\PDO::FETCH_ASSOC)) {
33                array_push($sales_arr['data'], $row);
34            }
35
36            return $response->withJson($sales_arr);
37        } else {
38            return $response->withJson(array('message' => 'No Sales Found'), 404);
39        }
40    }
41
42    public function getSalesByDateRange($request, $response, $args) {
43        $startDate = $args['startDate'];
44        $endDate = $args['endDate'];
45        $storeID = $args['storeID'];
46        $this->setStore($storeID);
47
48        $salesItem = new SalesItem($this->store);
49        $result = $salesItem->readByDateRange($startDate, $endDate);
50        $num = $result->rowCount();
51
52        if($num > 0) {
53            $sales_arr = array();
54            $sales_arr['data'] = array();
55
56            while($row = $result->fetch(\PDO::FETCH_ASSOC)) {
57                array_push($sales_arr['data'], $row);
58            }
59
60            return $response->withJson($sales_arr);
61        } else {
62            return $response->withJson(array('message' => 'No Sales Found'), 404);
63        }
64    }
65
66    public function getSalesByIndexedField($request, $response, $args) {
67        $field = $args['field'];
68        $value = $args['value'];
69        $storeID = $args['storeID'];
70        $this->setStore($storeID);
71
72        $salesItem = new SalesItem($this->store);
73        $result = $salesItem->readByIndexedField($field, $value);
74        $num = $result->rowCount();
75
76        if($num > 0) {
77            $sales_arr = array();
78            $sales_arr['data'] = array();
79
80            while($row = $result->fetch(\PDO::FETCH_ASSOC)) {
81                array_push($sales_arr['data'], $row);
82            }
83
84            return $response->withJson($sales_arr);
85        } else {
86            return $response->withJson(array('message' => 'No Sales Found'), 404);
87        }
88    }
89
90    public function createSalesFromJson($salesItems, $salesDate)
91    {
92        $salesItem = new SalesItem($this->store);
93        $successCount = 0;
94        $failCount = 0;
95
96        // Check if salesItems is null or not an array
97        if (!is_array($salesItems) && !is_object($salesItems)) {
98            return array(
99                'message' => 'Invalid sales data provided (not an array or object)',
100                'success' => 0,
101                'failed' => 0,
102                'error' => 'salesItems parameter is null or invalid'
103            );
104        }
105
106        // Convert to array if it's an object
107        if (is_object($salesItems)) {
108            $salesItems = (array) $salesItems;
109        }
110
111        foreach ($salesItems as $itemData) {
112            if ($salesItem->createFromData((object) $itemData, $salesDate)) {
113                $successCount++;
114            } else {
115                $failCount++;
116            }
117        }
118
119        return array(
120            'message' => 'Sales items processing completed',
121            'success' => $successCount,
122            'failed' => $failCount
123        );
124    }
125}
126?>