/** * for a given request, will toggle fees on/off depeneding on the request status * will take care not to duplicate fees that are already applied * * @param \PhalconRest\Models\Request $request */ private function toggleFees(\PhalconRest\Models\Requests $request) { // are we on or off? if ($request->submit_status == self::CONFIRMED) { $fees = $this->getFees($request); foreach ($fees as $fee) { $charge = new \PhalconRest\Models\Charges(); $charge->registration_id = $request->registration_id; $charge->request_id = $request->id; $charge->name = $fee['name']; $charge->amount = $fee['amount']; $attendee = $request->Registrations->Attendees; $charge->account_id = $attendee->account_id; if (!$charge->create()) { throw new ValidationException("Internal error saving a request", array('code' => '45623457456987986', 'dev' => 'Error while processing RequestEntity->toggleFee(). Could not create Charge record.'), $charge->getMessages()); } } } else { // remove fees foreach (\PhalconRest\Models\Charges::find("request_id={$request->id}") as $charge) { if (!$charge->delete()) { throw new ValidationException("Internal error clearing out charges", array('code' => '234546678345', 'dev' => 'Error while attempting to delete a charge for a request that is no longer CONFIRMED.'), $charge->getMessages()); } } } }