Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 66
0.00% covered (danger)
0.00%
0 / 4
CRAP
0.00% covered (danger)
0.00%
0 / 1
EstimatedWaitTime
0.00% covered (danger)
0.00%
0 / 66
0.00% covered (danger)
0.00%
0 / 4
210
0.00% covered (danger)
0.00%
0 / 1
 __construct
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 getEstimatedWaitTime
0.00% covered (danger)
0.00%
0 / 39
0.00% covered (danger)
0.00%
0 / 1
56
 convertToHoursMins
0.00% covered (danger)
0.00%
0 / 10
0.00% covered (danger)
0.00%
0 / 1
20
 createFromExistingParameters
0.00% covered (danger)
0.00%
0 / 16
0.00% covered (danger)
0.00%
0 / 1
6
1<?php
2
3namespace BuyerKiosk\Core;
4
5class EstimatedWaitTime extends Store {
6
7    public $waitMinutes = 0;
8    public $waitArray = array();
9
10    public function __construct() {
11        parent::__construct();
12    }
13
14    public function getEstimatedWaitTime(Store $store) {
15        $buyersArray = getBuyersArray($store);
16        $dbName = $store->getDbName();
17        $db = dbConnectByName($dbName);
18        $totalContainers = 0;
19        $minutesPerContainer = $store->getMinutesPerContainer();
20        $minuteCount = 0;
21        $interval = $store->getEstimateInterval();
22        $numBuyers = getNumBuyers($store);
23
24        $q = $db->query("SELECT numContainers,remainingContainers,processedContainers,buyerID,sortCompleted FROM buyQueue WHERE isProcessed = 0 AND (remote = 0 OR hasDroppedOff = 1)");
25        if($q) {
26            while($buy = $q->fetch(\PDO::FETCH_ASSOC)) {
27                if($buy['sortCompleted'] == '0000-00-00 00:00:00') {
28                    $tempContainers = (int)$buy['numContainers'] - (int)$buy['processedContainers'];
29                } else {
30                    $tempContainers = (int)$buy['remainingContainers'] - (int)$buy['processedContainers'];
31                }
32
33                $totalContainers += $tempContainers;
34            }
35            if($numBuyers > 0) {
36                $minuteCount = ($totalContainers*$minutesPerContainer)/$numBuyers;
37                $minuteCount = 5*(ceil($minuteCount/5));
38            } else {
39                $minuteCount = ($totalContainers*$minutesPerContainer);
40                $minuteCount = 5*(ceil($minuteCount/5));
41            }
42            $lowerBound = $minuteCount - $interval;
43            if($lowerBound <= 0) {
44                $lowerBound = $minuteCount;
45            }
46
47            if((int)$minuteCount > 0) {
48                $this->waitMinutes = $minuteCount;
49                $this->waitArray['waitMinutes'] = $minuteCount;
50                $this->waitArray['waitTime'] = $minuteCount;
51                $this->waitArray['upperBound'] = $minuteCount + $interval;
52                $this->waitArray['lowerBound'] = $lowerBound;
53                $this->waitArray['numBuyers'] = $numBuyers;
54                $this->waitArray['upperBoundPretty'] = $this->convertToHoursMins($minuteCount + $interval);
55                $this->waitArray['lowerBoundPretty'] = $this->convertToHoursMins($lowerBound);
56                $this->waitArray['waitTimePretty'] = $this->convertToHoursMins($minuteCount);
57            } else {
58                $this->waitMinutes = $minuteCount;
59                $this->waitArray['waitMinutes'] = $minuteCount;
60                $this->waitArray['waitTime'] = $minuteCount;
61                $this->waitArray['lowerBound'] = $minuteCount;
62                $this->waitArray['upperBound'] = $minuteCount;
63                $this->waitArray['waitTimePretty'] = "No Wait";
64            }
65        }
66    }
67    function convertToHoursMins($time, $format = '%2dhr %2dmin') {
68        if ($time < 1) {
69            return;
70        }
71        $hours = floor($time / 60);
72        $minutes = ($time % 60);
73        if($hours > 0) {
74            return sprintf($format, $hours, $minutes);
75        } else if($minutes > 0) {
76            $format = "%2dmin";
77            return sprintf($format,  $minutes);
78        } else {
79            return sprintf("No Wait");
80        }
81    }
82    function createFromExistingParameters($upperBound, $lowerBound, $waitMinutes) {
83        if($waitMinutes > 0) {
84            $this->waitMinutes = $waitMinutes;
85            $this->waitArray['waitMinutes'] = $waitMinutes;
86            $this->waitArray['waitTime'] = $waitMinutes;
87            $this->waitArray['upperBound'] = $upperBound;
88            $this->waitArray['lowerBound'] = $lowerBound;
89            $this->waitArray['numBuyers'] = null;
90            $this->waitArray['upperBoundPretty'] = $this->convertToHoursMins($upperBound);
91            $this->waitArray['lowerBoundPretty'] = $this->convertToHoursMins($lowerBound);
92            $this->waitArray['waitTimePretty'] = $this->convertToHoursMins($waitMinutes);
93        } else {
94            $this->waitMinutes = $waitMinutes;
95            $this->waitArray['waitMinutes'] = $waitMinutes;
96            $this->waitArray['waitTime'] = $waitMinutes;
97            $this->waitArray['upperBoundPretty'] = $this->convertToHoursMins($upperBound);
98            $this->waitArray['lowerBoundPretty'] = $this->convertToHoursMins($lowerBound);
99            $this->waitArray['waitTimePretty'] = $this->convertToHoursMins($waitMinutes);
100        }
101    }
102
103}