function addTempMembers($dbc = "") { //global $dbConn2; global $tempMemberRange; /* End of range to fill with NEW MEMBER records. * 0 means "do no fill" */ global $tempMemberRangeMax; /* Placeholder custdata.LastName that will be: * - ignored when it occurrs in the range of synced records * - assigned to new placeholder records if filling is being done. */ global $tempMemberLastName; /* custdata.memType for placeholder records. * Must be real. */ global $tempMemberMemberType; /* memContact.pref for placeholder records. * Must be real. */ global $tempMemberContactPref; $retval = null; $errors = ''; if ($dbc == "") { $errors = "addTempMembers() no database connection supplied."; return $errors; } /* Much of what follows is lifted from $MEM/NewMemberTool.php */ $name = $tempMemberLastName; /* Validate in memtypes.memtype */ $mtype = $tempMemberMemberType; $memtypes = new MemtypeModel($dbc); $memtypes->memtype($mtype); $mtypes = $memtypes->find(); if (count($mtypes) == 0) { $errors = "Member type {$mtype} is not known."; return $errors; } /* Validate in memContactPrefs.pref_id */ $pref = $tempMemberContactPref; $memprefs = new MemContactPrefsModel($dbc); $memprefs->pref_id($pref); $mprefs = $memprefs->find(); if (count($mprefs) == 0) { $errors = "Contact preference {$pref} is not known."; return $errors; } $mt = $dbc->tableDefinition('memtype'); $dQuery = "SELECT custdataType,discount,staff,ssi from memtype " . "WHERE memtype=?"; $defaultsQ = $dbc->prepare_statement($dQuery); if ($dbc->tableExists('memdefaults') && (!isset($mt['custdataType']) || !isset($mt['discount']) || !isset($mt['staff']) || !isset($mt['ssi']))) { $dQuery = "SELECT cd_type as custdataType,discount,staff,SSI as ssi " . "FROM memdefaults WHERE memtype=?"; $defaultsQ = $dbc->prepare_statement($dQuery); } $defaultsR = $dbc->exec_statement($defaultsQ, array($mtype)); $defaults = $dbc->fetch_row($defaultsR); $start = $tempMemberRange + 1; $end = $tempMemberRangeMax; $custdata = new CustdataModel($dbc); /* Pre-populate most custdata fields. */ $custdata->personNum(1); $custdata->LastName($name); $custdata->FirstName(''); $custdata->CashBack(999.99); $custdata->Balance(0); $custdata->memCoupons(0); $custdata->Discount($defaults['discount']); $custdata->Type($defaults['custdataType']); $custdata->staff($defaults['staff']); $custdata->SSI($defaults['ssi']); $custdata->memType($mtype); $meminfo = new MeminfoModel($dbc); /* Pre-populate most meminfo fields. */ $meminfo->last_name(''); $meminfo->first_name(''); $meminfo->othlast_name(''); $meminfo->othfirst_name(''); $meminfo->street(''); $meminfo->city(''); $meminfo->state(''); $meminfo->zip(''); $meminfo->phone(''); $meminfo->email_1(''); $meminfo->email_2(''); $chkP = $dbc->prepare_statement('SELECT CardNo FROM custdata WHERE CardNo=?'); $mdP = $dbc->prepare_statement("INSERT INTO memDates VALUES (?,NULL,NULL)"); $mcP = $dbc->prepare_statement("INSERT INTO memContact (card_no,pref) VALUES (?,?)"); $membersAdded = 0; for ($i = $start; $i <= $end; $i++) { // skip if record already exists $chkR = $dbc->exec_statement($chkP, array($i)); if ($dbc->num_rows($chkR) > 0) { continue; } $custdata->CardNo($i); $custdata->blueLine($i . ' ' . $name); $custdata->save(); $meminfo->card_no($i); $meminfo->save(); /* memDates */ $dbc->exec_statement($mdP, array($i)); /* memContact */ $dbc->exec_statement($mcP, array($i, $pref)); $membersAdded++; } $retval = $errors ? $errors : $membersAdded; return $retval; // addTempMembers() }
function results_content() { global $FANNIE_OP_DB, $FANNIE_SERVER_DBMS; $dbc = FannieDB::get($FANNIE_OP_DB); $mtype = FormLib::get_form_value('memtype', 0); $num = FormLib::get_form_value('num', 0); $name = FormLib::get_form_value('name', 'NEW MEMBER'); $manual_start = FormLib::get_form_value('start', false); if (!is_numeric($manual_start)) { $manual_start = false; } $mt = $dbc->tableDefinition('memtype'); $defaultsQ = $dbc->prepare_statement("SELECT custdataType,discount,staff,ssi from memtype WHERE memtype=?"); if ($dbc->tableExists('memdefaults') && (!isset($mt['custdataType']) || !isset($mt['discount']) || !isset($mt['staff']) || !isset($mt['ssi']))) { $defaultsQ = $dbc->prepare_statement("SELECT cd_type as custdataType,discount,staff,SSI as ssi\n FROM memdefaults WHERE memtype=?"); } $defaultsR = $dbc->exec_statement($defaultsQ, array($mtype)); $defaults = $dbc->fetch_row($defaultsR); /** 1Jul2015 Use FannieREST API calls to create new members Not tested yet. $json = array( 'customerTypeID' => $mtype, 'memberStatus' => $mt['custdataType'], 'addressFirstLine' => '', 'addressSecondLine' => '', 'city' => '', 'state' => '', 'zip' => '', 'contactAllowed' => 1, 'contactMethod' => 'mail', 'customers' => array( array( 'firstName' => '', 'lastName' => $name, 'phone' => '', 'altPhone' => '', 'email' => 1, 'discount' => $mt['discount'], 'staff' => $mt['staff'], 'lowIncomeBenefits' => $mt['ssi'], ), ), ); $start = PHP_INT_MAX; $end = 0; for ($i=0; $i<$num; $i++) { if ($manual_start) { $resp = \COREPOS\Fannie\API\member\MemberREST::post($manual_start+$i, $json); } else { $resp = \COREPOS\Fannie\API\member\MemberREST::post(0, $json); } if (isset($resp['account']) && $resp['account']['cardNo'] > $end) { $end = $resp['account']['cardNo']; } if (isset($resp['account']) && $resp['account']['cardNo'] < $start) { $start = $resp['account']['cardNo']; } } */ /* going to create memberships part of the insert arrays can be prepopulated */ $meminfo = array('last_name' => "''", 'first_name' => "''", 'othlast_name' => "''", 'othfirst_name' => "''", 'street' => "''", 'city' => "''", 'state' => "''", 'zip' => "''", 'phone' => "''", 'email_1' => "''", 'email_2' => "''", 'ads_OK' => 1); /* everything's set but the actual member #s */ $numQ = $dbc->prepare_statement("SELECT MAX(CardNo) FROM custdata"); if ($FANNIE_SERVER_DBMS == 'MSSQL') { $numQ = $dbc->prepare_statement("SELECT MAX(CAST(CardNo AS int)) FROM custdata"); } $numR = $dbc->exec_statement($numQ); $start = 1; if ($dbc->num_rows($numR) > 0) { $numW = $dbc->fetch_row($numR); if (!empty($numW[0])) { $start = $numW[0] + 1; } } if ($manual_start) { $start = (int) $manual_start; } $end = $start + $num - 1; $ret = "<b>Starting number</b>: {$start}<br />"; $ret .= "<b>Ending number</b>: {$end}<br />"; $model = new CustdataModel($dbc); $model->personNum(1); $model->LastName($name); $model->FirstName(''); $model->CashBack(999.99); $model->Balance(0); $model->memCoupons(0); $model->Discount($defaults['discount']); $model->Type($defaults['custdataType']); $model->staff($defaults['staff']); $model->SSI($defaults['ssi']); $model->memType($mtype); $meminfo = new MeminfoModel($dbc); $chkP = $dbc->prepare_statement('SELECT CardNo FROM custdata WHERE CardNo=?'); $mdP = $dbc->prepare_statement("INSERT INTO memDates VALUES (?,NULL,NULL)"); $mcP = $dbc->prepare_statement("INSERT INTO memContact (card_no,pref) VALUES (?,1)"); for ($i = $start; $i <= $end; $i++) { // skip if record already exists $chkR = $dbc->exec_statement($chkP, array($i)); if ($dbc->num_rows($chkR) > 0) { continue; } $model->CardNo($i); $model->blueLine($i . ' ' . $name); $model->save(); $meminfo->card_no($i); $meminfo->save(); $dbc->exec_statement($mdP, array($i)); $dbc->exec_statement($mcP, array($i)); } return $ret; }