CORE-POS/IS4C

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

Summary

Maintainability
A
2 hrs
Test Coverage
<?php
/*******************************************************************************

    Copyright 2014 Whole Foods Co-op

    This file is part of IT CORE.

    IT CORE 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.

    IT CORE 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(dirname(__FILE__).'/../../../config.php');
if (!class_exists('FannieAPI')) {
    include(__DIR__ . '/../../../classlib2.0/FannieAPI.php');
}

class PIApply extends FannieRESTfulPage 
{
    public function preprocess()
    {
        $this->__routes[] = 'get<id><email>';
        $this->__routes[] = 'get<json>';

        return parent::preprocess();
    }

    public function setJson($j)
    {
        $this->json = $j;
    }

    /**
      Update a member account based on a JSON encoded array
    */
    public function get_json_handler()
    {
        $json = json_decode(base64_decode($this->json), true);
        if (!is_array($json)) {
            echo 'Invalid data!';
            return false;
        } 
        $rest = array(
            'cardNo' => $json['card_no'],
            'addressFirstLine' => strtoupper($json['addr1']), 
            'addressSecondLine' => strtoupper($json['addr2']), 
            'city' => strtoupper($json['city']), 
            'state' => strtoupper($json['state']), 
            'zip' => $json['zip'], 
            'customers' => array(
                array(
                    'accountHolder' => 1,
                    'firstName' => strtoupper($json['fn']),
                    'lastName' => strtoupper($json['ln']),
                    'phone' => $json['ph'],
                    'email' => $json['email'],
                ),
            ),
        );
        foreach ($json['houseHold'] as $hh) {
            $rest['customers'][] = array(
                'accountHolder' => 0,
                'firstName' => strtoupper($hh[0]),
                'lastName' => strtoupper($hh[1]),
            );
        }
        \COREPOS\Fannie\API\member\MemberREST::post($json['card_no'], $rest);

        if (isset($json['fran']) && $json['fran']) {
            $delP = $this->connection->prepare("DELETE FROM EquityPaymentPlanAccounts where cardNo=?");
            $this->connection->execute($delP, array($json['card_no']));
            $planP = $this->connection->prepare("INSERT INTO EquityPaymentPlanAccounts (cardNo, equityPaymentPlanID) VALUES (?, 4)");
            $this->connection->execute($planP, array($json['card_no']));
        }

        $callbacks = FannieConfig::config('MEMBER_CALLBACKS');
        foreach ($callbacks as $cb) {
            $obj = new $cb();
            $obj->run($json['card_no']);
        }

        $custdata = new CustdataModel(FannieDB::get(FannieConfig::config('OP_DB')));
        $custdata->CardNo($json['card_no']);
        foreach ($custdata->find() as $c) {
            $c->pushToLanes();
        }
        header('Location: PIMemberPage.php?id=' . $json['card_no']);

        return false;
    }

    public function get_id_email_handler()
    {
        global $FANNIE_OP_DB;
        $mem = new MeminfoModel(FannieDB::get($FANNIE_OP_DB));
        $mem->card_no($this->id);
        $mem->email_1($this->email);
        $mem->save();

        header('Location: PIMemberPage.php?id=' . $this->id);

        return false;
    }

}

FannieDispatch::conditionalExec();