CORE-POS/IS4C

View on GitHub
fannie/batches/CAP/CoopDealsSignsPage.php

Summary

Maintainability
D
2 days
Test Coverage
F
2%
<?php
/*******************************************************************************

    Copyright 2009,2013 Whole Foods Co-op

    This file is part of CORE-POS.

    CORE-POS is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2 of the License, or
    (at your option) any later version.

    CORE-POS is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    in the file license.txt along with IT CORE; if not, write to the Free Software
    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA

*********************************************************************************/

include(__DIR__ . '/../../config.php');
if (!class_exists('FannieAPI')) {
    include_once(__DIR__ . '/../../classlib2.0/FannieAPI.php');
}

class CoopDealsSignsPage extends FannieRESTfulPage
{
    protected $title = "Fannie - Coop Deals Signs Page";
    protected $header = "Print Coop Deals Signs";

    public $description = '[] .';
    public $themed = true;

    protected $auth_classes = array('batches');
    protected $must_authenticate = true;


    public function preprocess()
    {
        $this->__routes[] = 'get<dealSet><cycle>';

        return parent::preprocess();
    }

    public function get_dealSet_cycle_view()
    {
        include(__DIR__.'/../../config.php');
        $cycle = FormLib::get('cycle');
        $month = FormLib::get('dealSet');
        $year = FormLib::get('year');
        $storeID = FormLib::get('store');
        $dir = __DIR__;

        $dbc = $this->connection;
        $dbc->selectDB($this->config->get('OP_DB'));

        $Qcycle = ($cycle == 'A') ?
            "AND (batchName like '%Deals A%' OR batchName like '%Deals TPR%') " :
            "AND batchName like '%Deals B%' ";
        $Qdealset = "AND batchName like '%$month%' ";

        $args = array($year);
        $query = '
            SELECT
                batchID,
                batchName,
                owner,
                batchType,
                startDate,
                endDate
            FROM is4c_op.batches
            WHERE batchType = 1
                '.$Qcycle.'
                AND SUBSTR(DATE_ADD(startDate, INTERVAL 7 DAY), 1, 4) = ?
                '.$Qdealset.'
        ';
        $prep = $dbc->prepare($query);
        $res = $dbc->execute($prep,$args);
        $url = "http://key" . $this->config->get('URL') . "/admin/labels/SignFromSearch.php?store=$storeID&";
        $batchLists = array(
            '16TPR' => array(
                'MERCH' => $url,
                'PRODUCE' => $url,
                'DELI' => $url,
                'WELLNESS' => $url,
            ),
            '16CD' => array(
                'MERCH' => $url,
                'PRODUCE' => $url,
                'DELI' => $url,
                'WELLNESS' => $url,
            ),
            '12TPR' => array(
                'MERCH' => $url,
                'LAMINATES' => $url,
                'BULK' => $url,
                'FROZEN' => $url,
                'GROCERY' => $url,
                'PRODUCE' => $url,
                'DELI' => $url,
                'WELLNESS' => $url,
            ),
            '12CD' => array(
                'MERCH' => $url,
                'LAMINATES' => $url,
                'BULK' => $url,
                'FROZEN' => $url,
                'GROCERY' => $url,
                'PRODUCE' => $url,
                'DELI' => $url,
                'WELLNESS' => $url,
            ),
        );
        while ($row = $dbc->fetchRow($res)) {
            $batchName = $row['batchName'];
            $owner = $row['owner'];
            $id = $row['batchID'];
            if (in_array($owner, array('WELLNESS','PRODUCE'))) {
                if (strpos($batchName,'TPR')) {
                    if ($owner == 'PRODUCE') {
                        $batchLists['16TPR']['PRODUCE'] .= 'batch[]='.$id.'&';
                    } elseif ($owner == 'WELLNESS') {
                        $batchLists['16TPR']['WELLNESS'] .= 'batch[]='.$id.'&';
                    }
                } else {
                    if ($owner == 'PRODUCE') {
                        $batchLists['16CD']['PRODUCE'] .= 'batch[]='.$id.'&';
                    } elseif ($owner == 'WELLNESS') {
                        $batchLists['16CD']['WELLNESS'] .= 'batch[]='.$id.'&';
                    }
                }
            } else {
                if ($owner == 'PRODUCE') {
                    if (strpos($batchName,'TPR')) {
                        $batchLists['12TPR']['PRODUCE'] .= 'batch[]='.$id.'&';
                    } else {
                        $batchLists['12CD']['PRODUCE'] .= 'batch[]='.$id.'&';
                    }
                } elseif ($owner == 'DELI') {
                    if (strpos($batchName,'TPR')) {
                        $batchLists['12TPR']['DELI'] .= 'batch[]='.$id.'&';
                    } else {
                        $batchLists['12CD']['DELI'] .= 'batch[]='.$id.'&';
                    }
                } elseif ($owner == 'REFRIGERATED' || $owner == 'MEAT' || $owner == 'BULK') {
                    if (strpos($batchName,'TPR')) {
                        $batchLists['12TPR']['LAMINATES'] .= 'batch[]='.$id.'&';
                    } else {
                        $batchLists['12CD']['LAMINATES'] .= 'batch[]='.$id.'&';
                    }
                } elseif ($owner == 'GROCERY' || $owner == 'BREAD') {
                    if (strpos($batchName,'TPR')) {
                        $batchLists['12TPR']['GROCERY'] .= 'batch[]='.$id.'&';
                    } else {
                        $batchLists['12CD']['GROCERY'] .= 'batch[]='.$id.'&';
                    }
                } else {
                    if (strpos($batchName,'TPR')) {
                        $batchLists['12TPR']['MERCH'] .= 'batch[]='.$id.'&';
                    } else {
                        $batchLists['12CD']['MERCH'] .= 'batch[]='.$id.'&';
                    }
                }
            }
        }
        $disabled = ($cycle == 'B') ? 'collapse' : '';

        return <<<HTML
{$this->get_view()}
<form method="get" class="form-inline">
    </br>
    <h4>Print Signs for <strong>$month $cycle $year</strong> </h4>
    <div class="form-group">
        <a class="btn btn-success" onclick="
            window.open('{$batchLists["12CD"]["MERCH"]}');
            window.open('{$batchLists["12CD"]["DELI"]}');
            window.open('{$batchLists["12CD"]["LAMINATES"]}');
            window.open('{$batchLists["12CD"]["GROCERY"]}');
            return false;
            "
            id="a1" target="_blank">12UP <b>{$cycle}</b></a>
    </div>
    <div class="form-group">
        <a class="btn btn-success" onclick="
            window.open('{$batchLists["16CD"]["WELLNESS"]}&signmod=COREPOS\\\Fannie\\\API\\\item\\\signage\\\Signage16UpP');
            window.open('{$batchLists["16CD"]["PRODUCE"]}&signmod=COREPOS\\\Fannie\\\API\\\item\\\signage\\\Signage16UpP');
            return false;
            "
            id="a2" target="_blank">16UP <b>{$cycle}</b></a>
    </div>
    <div class="form-group">
        <a class="btn btn-warning $disabled" onclick="
            window.open('{$batchLists["12TPR"]["MERCH"]}');
            window.open('{$batchLists["12TPR"]["DELI"]}');
            window.open('{$batchLists["12TPR"]["LAMINATES"]}');
            window.open('{$batchLists["12TPR"]["GROCERY"]}');
            return false;
            "
            id="a3" target="_blank">12UP <b>TPR</b></a>
    </div>
    <div class="form-group">
        <a class="btn btn-warning $disabled" onclick="
            window.open('{$batchLists["16TPR"]["WELLNESS"]}&signmod=COREPOS\\\Fannie\\\API\\\item\\\signage\\\Signage16UpP');
            window.open('{$batchLists["16TPR"]["PRODUCE"]}&signmod=COREPOS\\\Fannie\\\API\\\item\\\signage\\\Signage16UpP');
            return false;
            "
            id="a4" target="_blank">16UP <b>TPR</b></a>
    </div>
</form>
<br/>
HTML;
    }

    public function get_view()
    {

        $dbc = $this->connection;
        $dbc->selectDB($this->config->get('OP_DB'));
        $formYear = FormLib::get('year', false);
        $formCycle = FormLib::get('cycle', false);
        $formStore = FormLib::get('storeID', false);

        $set = FormLib::get('dealSet');
        $optsR = $dbc->query('
            SELECT dealSet
            FROM CoopDealsItems
            GROUP BY dealSet
            ORDER BY MAX(coopDealsItemID) DESC');
        $deal_opts = '';
        while ($optsW = $dbc->fetchRow($optsR)) {
            if ($set === '') {
                $set = $optsW['dealSet'];
            }
            $deal_opts .= sprintf('<option %s>%s</option>',
                ($set == $optsW['dealSet'] ? 'selected' : ''),
                $optsW['dealSet']
            );
        }

        $cycles = array('A','B');
        $cycle_opts = '';
        $sel = '';
        foreach ($cycles as $cycle) {
            $sel = ($cycle == $formCycle) ? " selected " : "";
            $cycle_opts .= "<option value='$cycle' $sel>$cycle</option>";
        }

        $y = new DateTime();
        $curYear = $y->format('Y');
        $years = array();
        $yearsHTML = '';
        $years[] = $curYear;
        $curMonth = $y->format('m');
        if ($curMonth == 12)
            $years[] = $curYear + 1;
        if ($curMonth == 1)
            $years[] = $curYear - 1;
        foreach ($years as $year) {
            $sel = ($formYear == $year) ? ' selected ' : '';
            $yearsHTML .= "<option value=\"$year\" $sel>$year</option>";
        }

        $storePicker = FormLib::storePicker();
        $store_opts = $storePicker['html'];

        $form = sprintf('
            <form method="get" action="CoopDealsSignsPage.php">
                <div class="form-group"><div class="input-group">
                    <div class="input-group-addon">&nbsp;Year: </div>
                    <select name="year" class="form-control">%s</select>
                </div></div>
                <div class="form-group"><div class="input-group">
                    <div class="input-group-addon">Month</div>
                    <select name="dealSet" class="form-control">%s</select>
                </div></div>
                <div class="form-group"><div class="input-group">
                    <div class="input-group-addon">Cycle: </div>
                    <select name="cycle" class="form-control">
                        %s
                    </select>
                </div></div>
                <div class="form-group">
                    %s
                </div>
                <div class="form-group"><div class="input-group">
                    <button type="submit" class="btn btn-default">Load</button>
                </div></div>
            </form>
        ', $yearsHTML, $deal_opts, $cycle_opts, $store_opts);
        return <<<HTML
<div class="row">
    <div class="col-lg-4">$form</div>
    <div class="col-lg-4"></div>
    <div class="col-lg-4"></div>
</div>
HTML;
    }

    public function javascript_content()
    {
        return <<<HTML
$('#a1').click(function(){
    $(this).addClass('disabled');
});
$('#a2').click(function(){
    $(this).addClass('disabled');
});
$('#a3').click(function(){
    $(this).addClass('disabled');
});
$('#a4').click(function(){
    $(this).addClass('disabled');
});
HTML;
    }

    public function css_content()
    {
        return <<<HTML
.btn-success, .btn-warning {
    width: 150px;
}
.input-group-addon {
    width: 50x;
}
HTML;
    }

    public function helpContent()
    {
        return <<<HTML
<label>Find and separate Co+op Deals sales signage by</label>:
<ul>
    <li>Department (Grocery Super Dept. is kept separate)</li>
    <li>Signs that need to be laminated.</li>
    <li>Signs that do not require lamination.</li>
</ul>
HTML;
    }

}
FannieDispatch::conditionalExec();