Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 68
0.00% covered (danger)
0.00%
0 / 7
CRAP
0.00% covered (danger)
0.00%
0 / 1
FakeDataGenerator
0.00% covered (danger)
0.00%
0 / 68
0.00% covered (danger)
0.00%
0 / 7
272
0.00% covered (danger)
0.00%
0 / 1
 __construct
0.00% covered (danger)
0.00%
0 / 5
0.00% covered (danger)
0.00%
0 / 1
6
 generateFakeDataByDateRange
0.00% covered (danger)
0.00%
0 / 24
0.00% covered (danger)
0.00%
0 / 1
56
 getAllCustomerPhoneNumbersInArray
0.00% covered (danger)
0.00%
0 / 3
0.00% covered (danger)
0.00%
0 / 1
2
 getEmployeeArray
0.00% covered (danger)
0.00%
0 / 2
0.00% covered (danger)
0.00%
0 / 1
2
 generateRandomSaleData
0.00% covered (danger)
0.00%
0 / 12
0.00% covered (danger)
0.00%
0 / 1
6
 generateRandomReturnData
0.00% covered (danger)
0.00%
0 / 12
0.00% covered (danger)
0.00%
0 / 1
6
 generateRandomBuyData
0.00% covered (danger)
0.00%
0 / 10
0.00% covered (danger)
0.00%
0 / 1
2
1<?php
2
3namespace BuyerKiosk\FiveStars\Controllers;
4
5use Faker\Factory;
6
7class FakeDataGenerator extends BaseController {
8
9    private $faker;
10    private $phoneArray;
11    private $employeeArray;
12    private $storeController;
13
14    function __construct($app, \Store $store)
15    {
16
17        if($store->getDev() == 0) {
18            exit;
19        }
20        $this->faker = Factory::create();
21        $this->storeController = new StoreController($app, $store);
22        parent::__construct($app, $store);
23    }
24        /* Sample Sale
25        {
26        "data": [
27        {
28        "id": 1307,
29        "transID": "B185272",
30        "date": "2022-03-03",
31        "employee": "Vanessa Torquato",
32        "phoneNum": "8178892426",
33        "salesAmount": "0.00",
34        "buyAmount": "0",
35        "taxAmount": "0.0"
36        }*/
37
38    public function generateFakeDataByDateRange($startDate, $endDate) {
39        $startDate = new \DateTime($startDate);
40        $endDate = new \DateTime($endDate);
41        $this->phoneArray = $this->getAllCustomerPhoneNumbersInArray();
42        $this->employeeArray = $this->getEmployeeArray();
43        $currentDate = $startDate;
44        $counter = 0;
45        do {
46            $postArray = [];
47            //Create X Random Sales Transactions
48            $numSales = $this->faker->numberBetween(20,50);
49            for($i = 0; $i < $numSales; $i++) {
50                $postArray[] = $this->generateRandomSaleData($currentDate->format("Y-m-d"), $i);
51            }
52            //Create X Random Return Transactions
53            $numSales = $this->faker->numberBetween(1,8);
54            for($i = 0; $i < $numSales; $i++) {
55                $postArray[] = $this->generateRandomReturnData($currentDate->format("Y-m-d"), $i);
56            }
57            //Create X Random Buy Transactions
58            $numBuys = $this->faker->numberBetween(10,50);
59            for($i = 0; $i < $numBuys; $i++) {
60                $postArray[] = $this->generateRandomBuyData($currentDate->format("Y-m-d"));
61            }
62            //Create X Random Redemptions
63            $numRedemptions = $this->faker->numberBetween(1,15);
64            for($i = 0; $i < $numRedemptions; $i++) {
65
66            }
67            //Create X Random Returns
68            $numReturns = $this->faker->numberBetween(20,50);
69            for($i = 0; $i < $numReturns; $i++) {
70
71            }
72            //Create X Random Refunds
73
74
75            echo $this->storeController->receiveSalesData(json_encode($postArray), $currentDate->format("Y-m-d"));
76            //echo json_encode($postArray);
77            $currentDate->modify('+1 day');
78            $counter++;
79        } while(($currentDate <= $endDate) && $counter < 365);
80    }
81
82    public function getAllCustomerPhoneNumbersInArray() {
83        $stmt = $this->storeDB->prepare("SELECT phone FROM customers GROUP BY phone");
84        $stmt->execute();
85        return $stmt->fetchAll(\PDO::FETCH_ASSOC);
86    }
87    public function getEmployeeArray() {
88        $stmt = $this->storeDB->query("SELECT employeeFirstName, employeeLastName FROM employees WHERE active = 1");
89        return $stmt->fetchAll(\PDO::FETCH_ASSOC);
90    }
91    private function generateRandomSaleData($date, $counter) {
92        $tempArray = [];
93        $tempArray['transID'] = "S".$this->faker->randomNumber(6,true);
94        $tempArray['date'] = $date;
95        $randomKey = $this->faker->randomKey($this->employeeArray);
96        $tempArray['employee'] = $this->employeeArray[$randomKey]['employeeFirstName']." ".$this->employeeArray[$randomKey]['employeeLastName'];
97        //Add points to my phone number every day for testing purposes
98        $tempArray['phoneNum'] = $this->phoneArray[$this->faker->randomKey($this->phoneArray)]['phone'];
99        if($counter == 0) {
100            $tempArray['phoneNum'] = "2144919067";
101        }
102        $tempArray['salesAmount'] = number_format($this->faker->randomFloat(2, 3,175),2,".",'');
103        $tempArray['buyAmount'] = 0.00;
104        $tempArray['taxAmount'] = number_format($tempArray['salesAmount'] * 0.0875, 2, ".", "");
105        return $tempArray;
106    }
107    private function generateRandomReturnData($date, $counter) {
108        $tempArray = [];
109        $tempArray['transID'] = "S".$this->faker->randomNumber(6,true);
110        $tempArray['date'] = $date;
111        $randomKey = $this->faker->randomKey($this->employeeArray);
112        $tempArray['employee'] = $this->employeeArray[$randomKey]['employeeFirstName']." ".$this->employeeArray[$randomKey]['employeeLastName'];
113        //Add points to my phone number every day for testing purposes
114        $tempArray['phoneNum'] = $this->phoneArray[$this->faker->randomKey($this->phoneArray)]['phone'];
115        if($counter == 0) {
116            $tempArray['phoneNum'] = "2144919067";
117        }
118        $tempArray['salesAmount'] = number_format($this->faker->randomFloat(2, -90,-5),2,".",'');
119        $tempArray['buyAmount'] = 0.00;
120        $tempArray['taxAmount'] = number_format($tempArray['salesAmount'] * 0.0875, 2, ".", "");
121        return $tempArray;
122    }
123    private function generateRandomBuyData($date) {
124        $tempArray = [];
125        $tempArray['transID'] = "B".$this->faker->randomNumber(6,true);
126        $tempArray['date'] = $date;
127        $randomKey = $this->faker->randomKey($this->employeeArray);
128        $tempArray['employee'] = $this->employeeArray[$randomKey]['employeeFirstName']." ".$this->employeeArray[$randomKey]['employeeLastName'];
129        $tempArray['phoneNum'] = $this->phoneArray[$this->faker->randomKey($this->phoneArray)]['phone'];
130        $tempArray['salesAmount'] = 0.00;
131        $tempArray['buyAmount'] = number_format($this->faker->randomFloat(2, 3,95),2,".",'');
132        $tempArray['taxAmount'] = 0.00;
133        return $tempArray;
134    }
135
136}