CORE-POS/IS4C

View on GitHub
fannie/modules/plugins2.0/PIKiller/AccessSignupPage.php

Summary

Maintainability
B
6 hrs
Test Coverage
<?php

include(dirname(__FILE__).'/../../../config.php');
if (!class_exists('FannieAPI')) {
    include(__DIR__ . '/../../../classlib2.0/FannieAPI.php');
}
if (!class_exists('AccessDiscountsModel')) {
    include(__DIR__ . '/models/AccessDiscountsModel.php');
}

class AccessSignupPage extends FannieRESTfulPage
{
    protected $header = 'Access Signup';
    protected $title = 'Access Signup';
    public $disoverable = false;
    protected $must_authenticate = true;
    protected $auth_classes = array('editmembers', 'editmembers_csc');

    public function preprocess()
    {
        $this->addRoute('get<complete>');
        return parent::preprocess();
    }

    protected function get_id_handler()
    {
        $prep = $this->connection->prepare("SELECT memType, FirstName, LastName
            FROM custdata
            WHERE CardNo=? AND personNum=1");
        $row = $this->connection->getRow($prep, array($this->id));
        if (!is_array($row)) {
            echo json_encode(array(
                'error' => 1,
                'msg' => '<div class="alert alert-danger">Account not found</div>',
            ));
            return false;
        }
        if ($row['memType'] == 3 || $row['memType'] == 9) {
            echo json_encode(array(
                'error' => 1,
                'msg' => '<div class="alert alert-danger">Staff account not eligible</div>',
            ));
            return false;
        } elseif ($row['memType'] == 2) {
            echo json_encode(array(
                'error' => 1,
                'msg' => '<div class="alert alert-danger">Business account not eligible</div>',
            ));
            return false;
        } elseif ($row['memType'] == 4) {
            echo json_encode(array(
                'error' => 1,
                'msg' => '<div class="alert alert-danger">Nabs account not eligible</div>',
            ));
            return false;
        } elseif ($row['memType'] == 0) {
            echo json_encode(array(
                'error' => 1,
                'msg' => '<div class="alert alert-danger">Non-owner account not eligible</div>',
            ));
            return false;
        }

        echo json_encode(array(
            'error' => 0,
            'msg' => '<div class="alert alert-success">' . $row['FirstName'] . ' ' . $row['LastName'] . '</div>',
        ));
        return false;
    }

    protected function post_id_handler()
    {
        $numflag = FormLib::get('program');
        $tNo = DTrans::getTransNo($this->connection);
        DTrans::addItem($this->connection, $tNo, array(
            'card_no' => $this->id,
            'numflag' => $numflag,
            'upc' => 'ACCESS',
            'description' => 'ACCESS SIGNUP',
            'quantity' => 1,
            'ItemQtty' => 1,
            'mixMatch' => substr($this->current_user, 0, 13),
        ));

        $account = \COREPOS\Fannie\API\member\MemberREST::get($this->id);
        $account['customerTypeID'] = 5;
        for ($i=0; $i<count($account['customers']); $i++) {
            $account['customers'][$i]['discount'] = 10;
        }
        $resp = \COREPOS\Fannie\API\member\MemberREST::post($this->id, $account);

        $callbacks = FannieConfig::config('MEMBER_CALLBACKS');
        foreach ($callbacks as $cb) {
            $obj = new $cb();
            $obj->run($this->id);
        }

        $model = new AccessDiscountsModel($this->connection);
        $model->cardNo($this->id);
        $model->lastRenewal(date('Y-m-d H:i:s'));
        $model->expires(date('Y-m-d', mktime(0,0,0,date('n')+2,date('j'),date('Y')+1)));
        $model->userID(FannieAuth::getUID($this->current_user));
        $model->programID($numflag);
        $model->contactMethod(FormLib::get('contact'));
        $model->renewerName(FormLib::get('name'));
        $model->notes(FormLib::get('notes'));
        $model->save();

        return 'AccessSignupPage.php?complete=' . $this->id;
    }

    protected function get_complete_view()
    {
        return '<div class="alert alert-success">Owner #' . $this->complete . ' signed up for Access Discount</div>'
            . $this->get_view();
    }

    protected function get_view()
    {

        return <<<HTML
<form method="post" action="AccessSignupPage.php">
<div class="form-group">
    <label>Owner #</label>
    <input type="text" name="id" id="id" class="form-control" required 
        onchange="lookupMember(this.value);" />
</div>
<div id="msgs"></div>
<div class="form-group">
    <label>Program</label>
    <select name="program" class="form-control" required>
        <option value="">Select one</option>
        <option value="1">Emergency Assistance Program</option>
        <option value="2">Energy Assistance Program</option>
        <option value="3">Medicaid</option>
        <option value="4">Section 8</option>
        <option value="5">School Meal Program</option>
        <option value="6">SNAP</option>
        <option value="7">SSDI or RSDI</option>
        <option value="8">WIC</option>
    </select>
</div>
<div class="form-group">
    <label>Contact Preference</label>
    <select name="contact" class="form-control" required>
        <option value="call">Phone Call</option>
        <option value="text">Text</option>
        <option value="email">Email</option>
    </select>
</div>
<div class="form-group">
    <label>Your Name</label>
    <input type="text" name="name" class="form-control" required />
</div>
<div class="form-group">
    <textarea rows="4" class="form-control" name="notes"></textarea>
</div>
<div class="form-group collapse" id="submitBtn">
    <button type="submit" class="btn btn-default">Sign Up</button>
</div>
<script>
function lookupMember(id) {
    $.ajax({
        method: 'get',
        data: 'id=' + id,
        dataType: 'json'
    }).done(function (resp) {
        $('#msgs').html(resp.msg);
        if (resp.error) {
            $('#submitBtn').hide();
        } else {
            $('#submitBtn').show();
        }
    }).fail(function () {
        $('#msgs').html('<div class="alert alert-danger">Cannot lookup account</div>');
    });
}
</script>
HTML;
    }
}

FannieDispatch::conditionalExec();