load->model('frontend/user_model', 'objUserModel');
$this->load->helper('lockfile');
$this->load->model('services_model');
$this->load->helper('language');
$this->lang->load('messages', 'message');
}
public function recharge_card()
{
$trackingFile = '/srv/www/sbg/log/recharge_card.log';
error_log ('--START CARD CHARGE--'."\n", 3, $trackingFile);
error_log ('TIME: '.date('Y-m-d H:i:s')."\n", 3, $trackingFile);
$userID = $this->uri->segment(4);
$input = $this->input->post();
$cardSerial = $input['card_serial'];
$pinCard = $input['pin_card'];
$isLocked = 0;
error_log ('$cardSerial: '.$cardSerial."\n", 3, $trackingFile);
error_log ('$cardSerial: '.$pinCard."\n", 3, $trackingFile);
error_log ('$userID: '.$userID."\n", 3, $trackingFile);
$user = $this->objUserModel->get_user_by_id($userID);
$lockFilePreFix = $user['cellphone'];
$lockFilePath = $this->config->item('topup_lock_path');
$maxReach = $this->config->item('topup_lock_max_reach');
$timeToUnlock = $this->config->item('topup_unlock_minute');
error_log ('Phone num: '.$user['cellphone']."\n", 3, $trackingFile);
error_log ('Locked: '.($isLocked ? 'LOCKED':'UNLOCKED')."\n", 3, $trackingFile);
$isLocked = createLockFile($lockFilePreFix, $maxReach, $timeToUnlock, $lockFilePath, TRUE);
$chargCard = _SBG_CARD_PAY_SUCCESS;
$result = array();
$result['maxReach'] = $maxReach;
$result['timeToUnlock'] = $timeToUnlock;
$result['isLocked'] = $isLocked;
$result['tmp'] = $maxReach;
//$lockedMsg = 'Quý vị đã nhập sai thông tin thẻ cào '. $maxReach .' lần liên tiếp.
Xin chờ '. $timeToUnlock .' phút sau để thao tác lại!';
$aryPatterns = array('/:maxReach:/', '/:timeToUnlock:/');
$lockedMsg = preg_replace($aryPatterns, array($maxReach, $timeToUnlock), lang('_SBG_CHARGING_FROM_CARD_LOCKED_MSG'));
//$chargErrMsg = 'Mã thẻ hoặc Serial không đúng hoặc đã được sử dụng. Quý vị vui lòng kiểm tra lại!';
$chargErrMsg = lang('_SBG_CHARGING_FROM_CARD_FAIL_MSG');
$errMsg = '';
$cardValue = 0;
$updatedTime = date('Y-m-d H:i:s');
$status = -1;
if ($isLocked == 0) {
$aryParams = array(
'EWalletID' => $this->config->item('EWalletID'),
'CardSerial' => $cardSerial,
'PinCard' => $pinCard,
);
$aryResult = array();
$chargCard = $this->services_model->cardPaidProcess($aryParams, $aryResult);
$status = $chargCard;
error_log ('CALL TOPUP SERVICE: '.($status ? 'SUCCESS':'NOT SUCCESS')."\n", 3, $trackingFile);
error_log ('CALL TOPUP SERVICE DATA: '.var_export($aryResult, TRUE)."\n", 3, $trackingFile);
$paidType = 2;
$amount = $aryResult['TransactionAmount'];
$cardValue = $amount;
$paidTime = date('Y-m-d H:i:s');
$user['acc_balanced'] = $user['acc_balanced'] + $amount;
$user['updated_time'] = $updatedTime;
if ($amount > 0){
$updateData = array('acc_balanced' => $user['acc_balanced'], 'updated_time' => $user['updated_time'] );
$updated = $this->objUserModel->updateUser($userID, $updateData);
error_log ('UPDATE ACCOUNT SUCCESS: '.($updated ? 'SUCCESS':'NOT SUCCESS')."\n", 3, $trackingFile);
}
$result['success'] = $chargCard;
if ($chargCard == _SBG_CARD_PAY_SUCCESS){
//$result['username'] = $user['cellphone'];
$result['acc_balanced'] = $user['acc_balanced'];
//$result['amount'] = $amount;
$aryPatterns = array('/:amount:/', '/:username:/', '/:acc_balanced:/');
$result['message'] = preg_replace($aryPatterns, array($amount, $user['cellphone'], $user['acc_balanced']), lang('_SBG_CHARGING_FROM_CARD_SUCCESS_MSG'));
$paidResult = $this->objUserModel->insertPaidlog($user['cellphone'], $user['cellphone'], $paidType, $amount, $paidTime);
error_log ('INSERT PAID LOG: '.var_export($paidResult, TRUE)."\n", 3, $trackingFile);
releaseLockFile($lockFilePreFix, $lockFilePath);
}
else {
$isLocked = createLockFile($lockFilePreFix, $maxReach, $timeToUnlock, $lockFilePath, FALSE);
$errMsg = $isLocked == 1 ? $chargErrMsg .'
'.$lockedMsg : $chargErrMsg;
}
}else if ($isLocked == 1) {
$errMsg = $lockedMsg;
$result['success'] = _SBG_CARD_PAY_FAIL;
$status = 0;
}
$cardLogResult = $this->objUserModel->insertCardlog($user['cellphone'],$userID, $status, $pinCard, $cardSerial, $cardValue, $updatedTime);
error_log ('INSERT CARD LOG: '.var_export($cardLogResult, TRUE)."\n", 3, $trackingFile);
$result['us_id'] = $userID;
$result['UPDATED_DATA'] = $user;
$result['errMsg'] = $errMsg;
echo json_encode($result);
error_log ('RETURN JSON: '.json_encode($result)."\n", 3, $trackingFile);
error_log ('--FINISH CARD CHARGE--'."\n", 3, $trackingFile);
}
}