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);
             }
         }
     }
 }