Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
15.91% covered (danger)
15.91%
7 / 44
0.00% covered (danger)
0.00%
0 / 1
CRAP
0.00% covered (danger)
0.00%
0 / 1
ComebackCashPageController
15.91% covered (danger)
15.91%
7 / 44
0.00% covered (danger)
0.00%
0 / 1
13.51
0.00% covered (danger)
0.00%
0 / 1
 main
15.91% covered (danger)
15.91%
7 / 44
0.00% covered (danger)
0.00%
0 / 1
13.51
1<?php
2/**
3 * ComebackCashPageController
4 *
5 * Handles rendering of the Comeback Cash page within the workspace.
6 * This controller provides the main entry point for the Comeback Cash management interface.
7 */
8
9namespace BuyerKiosk\ComebackCash\Controllers;
10
11use BuyerKiosk\Core\Controllers\BaseController;
12use BuyerKiosk\StoreController;
13
14class ComebackCashPageController extends BaseController
15{
16    /**
17     * Render the main Comeback Cash page
18     *
19     * GET /:typeNum/comeback-cash/
20     *
21     * Uses the combined workspace template with activePage='comeback-cash'
22     * to enable SPA-style navigation within the workspace.
23     *
24     * @param string $typeNum Store type number
25     */
26    public function main($typeNum)
27    {
28        $app = $this->_app;
29
30        // Check user has store access
31        if (!$app->user->checkStoreGroup($typeNum)) {
32            $app->notAuthorized();
33            return;
34        }
35
36        // Check user has comeback-cash permission
37        if (!$app->user->checkAccess('uri_comeback_cash')) {
38            $app->notAuthorized();
39            return;
40        }
41
42        // Get store
43        $storeController = new StoreController($typeNum);
44        $store = $storeController->getStore();
45
46        if (!$store) {
47            $app->notFound();
48            return;
49        }
50
51        // Get store directory for CSS/asset paths (e.g., "PlatosCloset", "OnceUpon")
52        $storeDir = \getStoreDirectory($store);
53
54        // Get database connection
55        $db = \dbConnectByName($store->getDbName());
56
57        // Get queue data (needed for the combined workspace template)
58        $BuyQueue = new \BuyQueue();
59        $BuyQueue->createStore($typeNum);
60        $queueItemArray = $BuyQueue->getAllCurrentQueueItems($db);
61
62        // Get completed buys data (needed for SPA navigation)
63        $completedBuysArray = \getCompletedBuysArray($store);
64
65        // Get breadcrumb data
66        $minutesPerContainer = $store->getMinutesPerContainer();
67
68        // Use combined workspace template with comeback-cash active
69        $app->render('workspace/workspace.html', [
70            'page' => [
71                'title' => 'Comeback Cash',
72                'typeNum' => $typeNum,
73                'storeType' => $storeDir,
74                'timeZone' => $store->getTimezone()
75            ],
76            'store' => $store,
77            'typeNum' => $typeNum,
78            'token' => $app->csrf_token,
79            'activePage' => 'comeback-cash',  // This makes comeback-cash view active
80            'user' => $app->user,
81            'ably_key' => $_ENV['ABLY_KEY'] ?? '',
82            'breadcrumb' => [
83                'storeType' => $store->getStoreType(),
84                'storeCity' => $store->getCity(),
85                'waitTime' => $minutesPerContainer
86            ],
87            'queue' => $queueItemArray,
88            'completedBuys' => $completedBuysArray,
89            'workbookEnabled' => true,
90            'comebackCashEnabled' => true,
91            'activeTab' => 'comeback-cash',
92            'enableQueueSignIn' => $store->getEnableQueueSignIn()
93        ]);
94    }
95}