function onAction()
 {
     $gc_code = modApiFunc('Request', 'getValueByKey', 'gc_code');
     if (Validator::isNotEmpty($gc_code) && modApiFunc('GiftCertificateApi', 'isCodeValid', $gc_code) && modApiFunc('GiftCertificateApi', 'doesCodeExist', $gc_code)) {
         loadClass('GiftCertificateUpdater');
         //
         $cr = new GiftCertificateUpdater($gc_code);
         //         ,
         if ($cr->isError()) {
             modApiFunc('Session', 'set', 'gc_update_action_result', 'failed');
             modApiFunc('Session', 'set', 'gc_update_action_errors', $cr->errors);
             modApiFunc('Session', 'set', 'SessionPost', $_POST);
             return;
         }
         //                                    ,                .             ,
         //         $map                 $_POST          .
         //                              ,                     .
         $cr->initByMap($_POST);
         //                     .
         $cr->save();
         if ($cr->isError()) {
             modApiFunc('Session', 'set', 'gc_update_action_result', 'failed');
             modApiFunc('Session', 'set', 'gc_update_action_errors', $cr->errors);
             modApiFunc('Session', 'set', 'SessionPost', $_POST);
         } else {
             modApiFunc('Session', 'set', 'gc_update_action_result', 'updated');
             if ($cr->sendtype === GC_SENDTYPE_EMAIL && $cr->status === GC_STATUS_ACTIVE) {
                 modApiFunc('EventsManager', 'throwEvent', 'GiftCertificateCreated', $cr);
             }
         }
     }
 }
 function updateGCstatus($order_id, $status)
 {
     loadClass('GiftCertificateUpdater');
     $order = modApiFunc("Checkout", "getOrderInfo", $order_id, modApiFunc("Localization", "whichCurrencyToDisplayOrderIn", $order_id));
     $gcs = $this->getGiftCertificatesForOrderId($order_id);
     if (is_array($gcs) && !empty($gcs)) {
         foreach ($gcs as $i => $_gc) {
             $gc_updated = new GiftCertificateUpdater($_gc['gc_code']);
             $gc_updated->status = $status;
             if (!empty($gc_updated->errors)) {
                 #GiftCertificateLogger::failed($gc_updated, $order_id);
             } else {
                 $gc_updated->save();
                 if ($gc_updated->purchased_order_id !== null) {
                     // GC was purchased by customer
                     modApiFunc('EventsManager', 'throwEvent', 'GiftCertificatePurchased', $gc_updated);
                 } else {
                     // GC was created by Admin
                     modApiFunc('EventsManager', 'throwEvent', 'GiftCertificateCreated', $gc_updated);
                 }
             }
         }
     }
 }