1,'Archived' => 2]; public function beforeRender() { parent::beforeRender(); $this->layout = 'visitor'; if($this->Session->check("mobile_app_layout")){ $this->layout = 'mobile'; $this->Session->delete("mobile_app_layout"); } } function index() { } public function termscondition(){ } public function privacypolicy(){ } public function faq(){ } public function news(){ } public function downloadAndroidApp(){ $this->render('download_android_app'); } public function feedback() { if ($this->request->is('Post') && $this->request->data["Comment"]) { $error = ""; //validate email and comment $email = trim($this->request->data['Comment']["feedbackemail"]); if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { $error = "EMAIL_ERR"; $this->set('email_error', "Email is invalid"); } $comment = trim($this->request->data['Comment']["comment"]); if (empty($comment)) { $error = "COMMENT_ERR"; $this->set("comment_error", __("LBL_WRITE_IN_COMMENT_BOX")); } if (isset($_COOKIE['ecc']) && $_COOKIE['ecc'] !== $this->request->data['captcha']){ $message = '
";
print_r($result); */
/* $result = $this->FamilyExpense->find('all', array(
'conditions' => array('expense_date_new' => null),
'limit' => 500
));
foreach($result as $key=>$value){
$id = $value["FamilyExpense"]["id"];
$oldDate = $value["FamilyExpense"]["expense_date"];
$data = array();
$data["id"] = $id;
$newDateStr = date("d-M-Y",$oldDate);
$newDateStrArray = explode("-",$newDateStr);
$newDateStrArray[1] = ucfirst($newDateStrArray[1]);
$newDateStr = implode("-",$newDateStrArray);
$data["expense_date_new"] = "'".$newDateStr."'";
//$data["expense_date"] = 0;
$this->FamilyExpense->updateAll(
array('expense_date_new'=> $data["expense_date_new"]),
array('id' => $data["id"]));
}
echo "";
print_r($result); */
/* $result = $this->Meal->find('all', array(
'conditions' => array('date_new' => null),
'limit' => 500
));
foreach($result as $key=>$value){
$id = $value["Meal"]["id"];
$oldDate = $value["Meal"]["date"];
$data = array();
$data["id"] = $id;
$newDateStr = date("d-M-Y",$oldDate);
$newDateStrArray = explode("-",$newDateStr);
$newDateStrArray[1] = ucfirst($newDateStrArray[1]);
$newDateStr = implode("-",$newDateStrArray);
$data["date_new"] = "'".$newDateStr."'";
//$data["date"] = 0;
$this->Meal->updateAll(
array('date_new'=> $data["date_new"]),
array('id' => $data["id"]));
}
echo "";
print_r($result); */
// $unique_url = $this->Expense->createExpense($data,false);
exit;
}
public function myExpenses($unique_url=null)
{
$this->Session->write('system.message', '');
$session_user_id = $this->Session->read('userData.id');
$session_user_id = isset($session_user_id) ? $session_user_id : '';
$userExpenses = [];
// If the user is logged in, get the expense group from the database; otherwise, get it from the cookie.
$this->Session->write('system.is_now_login', false);
if($this->Session->check('userData.id')){
$conditions = array('UserGroup.user_id' => $session_user_id, 'UserGroup.status' => $this->group_status['Active']);
$fields = array('UserGroup.unique_url','UserGroup.participant_id','Expense.title','Expense.create_date');
$userExpenses = $this->UserGroup->groupListWithExpense($fields, $conditions);
$archive_conditions = array('UserGroup.user_id' => $session_user_id, 'UserGroup.status' => $this->group_status['Archived']);
$archive_fields = array('UserGroup.unique_url','UserGroup.participant_id','Expense.title','Expense.create_date');
$archivedExpenses = $this->UserGroup->groupListWithExpense($archive_fields, $archive_conditions);
}else{
$userExpenses = $this->Cookie->read('Expenses');
$archivedExpenses=[];
}
$this->set('user_id', $session_user_id);
$this->set('my_expenses', $userExpenses);
$this->set('archived_expenses', $archivedExpenses);
}
public function removeGroup($unique_url)
{
$this->Session->write('system.message', '');
$session_user_id = $this->Session->read('userData.id');
$session_user_id = isset($session_user_id) ? $session_user_id : '';
if(!empty($unique_url)){
// delete a group from myExpense
if($this->Session->check('userData.id')) {
$userGrpdata['skip_process_validation'] = 1;
$userGrpdata['user_id'] = $session_user_id;
$userGrpdata['unique_url'] = $unique_url;
$this->callAPI(HTTP_SITE_URL . "/users/groupdelete.json", 'POST', json_encode($userGrpdata));
}
if (empty($session_user_id)) {
$expenses = $this->Cookie->read('Expenses');
foreach ($expenses as $key => $expense) {
if ($expense['unique_url'] == $unique_url) {
unset($expenses[$key]);
break;
}
}
$expenses = array_values($expenses);
$this->Cookie->write('Expenses', $expenses, false, '24000 hours');
}
}
return $this->redirect('myExpenses');
}
public function archiveGroup($unique_url)
{
$this->Session->write('system.message', '');
$session_user_id = $this->Session->read('userData.id');
$session_user_id = isset($session_user_id) ? $session_user_id : '';
if(!empty($unique_url)){
// delete a group from myExpense
if($this->Session->check('userData.id')) {
$userGrpdata['skip_process_validation'] = 1;
$userGrpdata['user_id'] = $session_user_id;
$userGrpdata['unique_url'] = $unique_url;
$userGrpdata['status'] = $this->group_status['Archived'];
$this->callAPI(HTTP_SITE_URL . "/users/groupRestore.json", 'POST', json_encode($userGrpdata));
}
}
return $this->redirect('myExpenses');
}
public function restoreGroup($unique_url)
{
$this->Session->write('system.message', '');
$session_user_id = $this->Session->read('userData.id');
$session_user_id = isset($session_user_id) ? $session_user_id : '';
if(!empty($unique_url)){
// restore a group from archived Expense
if($this->Session->check('userData.id')) {
$userGrpdata['skip_process_validation'] = 1;
$userGrpdata['user_id'] = $session_user_id;
$userGrpdata['unique_url'] = $unique_url;
$userGrpdata['status'] = $this->group_status['Active'];
$this->callAPI(HTTP_SITE_URL . "/users/groupRestore.json", 'POST', json_encode($userGrpdata));
}
}
return $this->redirect('myExpenses');
}
public function myExpenses_old($key=null, $refresh=null)
{
$session_user_id = ($this->Session->read('userData.id')) ? $this->Session->read('userData.id') : '' ;
//if ($session_user_id == '') {
//$this->redirect('/users/login');
//} else {
if(!empty($key) || (isset($key) && $key !== '')){
// delete a group from myExpense
$my_expenses = $this->Cookie->read('Expenses');
$userGrpdata['skip_process_validation'] = 1;
$userGrpdata['user_id'] = $session_user_id;
$userGrpdata['unique_url'] = $my_expenses[$key]['unique_url'];
$this->callAPI(HTTP_SITE_URL . "/users/groupdelete.json", 'POST', json_encode($userGrpdata));
unset($my_expenses[$key]);
$my_expenses = $this->Cookie->write('Expenses', $my_expenses, false, '24000 hours');
}
if($refresh == 1){
$this->Cookie->write('Expenses', null, false, '24000 hours');
}
if($this->Cookie->read('Expenses') === null) {
// system.is_now_login is used to check if user just loged in now. I think we might not need this.
// If there are groups in cookie show it; otherwise load from database; Reset the cookie during logout
$this->Session->write('system.is_now_login', false);
if($this->Session->check('userData.id')){
$user_id = $this->Session->read('userData.id');
$conditions = array('UserGroup.user_id' => $user_id);
$fields = array('UserGroup.unique_url','UserGroup.participant_id','Expense.title','Expense.create_date');
$userExpenses = $this->UserGroup->listWithExpense($fields, $conditions);
if(!empty($userExpenses)){
$this->Cookie->write('Expenses', $userExpenses, false, '24000 hour');
}
}
}
else {
$this->Session->write('system.message', '');
}
$my_expenses = $this->Cookie->read('Expenses');
$this->set('user_id', $session_user_id);
$this->set('my_expenses', $my_expenses);
//}
}
public function products()
{
$products = array();
$requestData = $this->deviceData();
$apiResponse = $this->callGETAPI(HTTP_SITE_URL . "/products/list.json?".http_build_query($requestData));
$apiResponseArr = json_decode($apiResponse, true);
if (isset($apiResponseArr['response']['status']) && ($apiResponseArr['response']['status'] == '+000')) {
$allproducts = $apiResponseArr['response']['products'];
if(!empty($allproducts)){
foreach ($allproducts as $k => $product){
if(empty($products[$product['expense_type']])){
$products[$product['expense_type']] = $product;
}
$productPriceArray[$product['expense_type']][] = $product;
}
}
} else {
$this->Session->write('system.message', 'No Product Found');
}
$this->set(compact('products','productPriceArray'));
}
public function getProduct()
{
$this->autoRender = false;
$product = array();
if($this->request->is('ajax')) {
$this->loadModel('Product');
$conditions = array(
'expense_type' => $this->request->data['expense_type'],
'payment_cycle' => $this->request->data['payment_cycle']
);
$product = $this->Product->list($conditions);
}
echo json_encode($product[0]);
}
function preparingProductBuyInput($requestData)
{
/*
"product_id":"2",
"product_sku":"FE6M",
"user_id":"34",
"payment_type_id":"1",
"platform_id":"2",
"amount":"20",
"access_token":"0c1d9f14e828929a9fd7c0ca46bf4a6a8d0e6bc3ce78ed61d41cd8665521fd81",
"device_id":"234234-34234-234234-234234-324234",
"random_number":"4537",
*/
$item_name = explode('-',$requestData['item_name']);
$data['product_id'] = ltrim($item_name[1],'d');
$data['product_sku'] = ltrim($item_name[2],'s');
$data['user_id'] = ltrim($item_name[3],'u');
$data['expense_type'] = ltrim($item_name[0],'t');
$data['amount'] = $requestData['amt'];
$data['platform_id'] = 3; //1 = android, 2 = iphone 3 = web.
$data['payment_type_id'] = 3; //1= Wallet, 2 = Credit Card, 3=Paypal
$data["device_id"] = session_id();
$data["random_number"] = rand(1000, 9999);
$data["access_token"] = $this->getUserToken($data["device_id"], $data["random_number"]);
return $data;
}
public function paypalipn()
{
// echo 'this is paypal ipn page';
// pr($this->request->query);
// die;
$this->loadModel('UserSubscription');
$this->loadModel('User');
$raw_post_data = file_get_contents('php://input');
$raw_post_array = explode('&', $raw_post_data);
$myPost = array();
foreach ($raw_post_array as $keyval) {
$keyval = explode ('=', $keyval);
if (count($keyval) == 2)
$myPost[$keyval[0]] = urldecode($keyval[1]);
}
// Read the post from PayPal system and add 'cmd'
$req = 'cmd=_notify-validate';
if(function_exists('get_magic_quotes_gpc')) {
$get_magic_quotes_exists = true;
}
foreach ($myPost as $key => $value) {
if($get_magic_quotes_exists == true && get_magic_quotes_gpc() == 1) {
$value = urlencode(stripslashes($value));
} else {
$value = urlencode($value);
}
$req .= "&$key=$value";
}
/*
* Post IPN data back to PayPal to validate the IPN data is genuine
* Without this step anyone can fake IPN data
*/
$paypalURL = PAYPAL_URL;
$ch = curl_init($paypalURL);
if ($ch == FALSE) {
return FALSE;
}
curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $req);
curl_setopt($ch, CURLOPT_SSLVERSION, 6);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($ch, CURLOPT_FORBID_REUSE, 1);
// Set TCP timeout to 30 seconds
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 0);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Connection: Close', 'User-Agent: company-name'));
$res = curl_exec($ch);
/*
* Inspect IPN validation result and act accordingly
* Split response headers and payload, a better way for strcmp
*/
$tokens = explode("\r\n\r\n", trim($res));
$res = trim(end($tokens));
if (strcmp($res, "VERIFIED") == 0 || strcasecmp($res, "VERIFIED") == 0) {
// Retrieve transaction data from PayPal
$inputData = array();
$paypalInfo = $_POST;
$inputData['subscr_id'] = $subscr_id = $paypalInfo['subscr_id'];
$inputData['payer_email'] = $payer_email = $paypalInfo['payer_email'];
$inputData['item_name'] = $item_name = $paypalInfo['item_name'];
$inputData['item_number'] = $item_number = $paypalInfo['item_number'];
$inputData['txn_id'] = $txn_id = !empty($paypalInfo['txn_id'])?$paypalInfo['txn_id']:'';
$inputData['payment_gross'] = $payment_gross = !empty($paypalInfo['mc_gross'])?$paypalInfo['mc_gross']:0;
$inputData['currency_code'] = $currency_code = $paypalInfo['mc_currency'];
$inputData['validity'] = $subscr_period = !empty($paypalInfo['period3'])?$paypalInfo['period3']:floor($payment_gross/$itemPrice);
$inputData['payment_status'] = $payment_status = !empty($paypalInfo['payment_status'])?$paypalInfo['payment_status']:'';
$inputData['user_id'] = $custom = $paypalInfo['custom'];
$subscr_date = !empty($paypalInfo['subscr_date'])?$paypalInfo['subscr_date']:date("Y-m-d H:i:s");
$dt = new DateTime($subscr_date);
$inputData['valid_from'] = $subscr_date = $dt->format("Y-m-d H:i:s");
$inputData['valid_to'] = $subscr_date_valid_to = date("Y-m-d H:i:s", strtotime(" + $subscr_period month", strtotime($subscr_date)));
if(!empty($txn_id)){
// Check if transaction data exists with the same TXN ID
// $prevPayment = $db->query("SELECT id FROM user_subscriptions WHERE txn_id = '".$txn_id."'");
// Insert transaction data into the database
/*$insert = $db->query("INSERT INTO user_subscriptions
(user_id,validity,valid_from,
valid_to,item_number,txn_id,payment_gross,
currency_code,subscr_id,payment_status,payer_email)
VALUES('".$custom."','".$subscr_period."','".$subscr_date."','"
.$subscr_date_valid_to."','".$item_number."','".$txn_id."','".$payment_gross."','"
.$currency_code."','".$subscr_id."','".$payment_status."','".$payer_email."')");
// Update subscription id in the users table
if($insert && !empty($custom)){
$subscription_id = $db->insert_id;
$update = $db->query("UPDATE users SET subscription_id = {$subscription_id} WHERE id = {$custom}");
}
*/
$existUserSub = $this->UserSubscription->isUserSubscriptionExist($txn_id);
if (isset($existUser[0]) && empty($existUser[0])) {
$UserSubObj = $this->UserSubscription->insertUserSubscription($inputData);
if (isset($UserSubObj[1]['id']) && ($UserSubObj[1]['id'] > 0)) {
$subscription_id = $UserSubObj[1]['id'];
$user_id = $custom;
$this->User->updateFieldsById($user_id, $fields = array('user_subscription_id' => $subscription_id));
}
}
}
}
die;
// return false;
}
public function paypalcancel()
{
// do nothing
}
public function createGroup()
{
echo 'this is createGroup page';
pr($this->request->query);
die;
$data = $this->preparingProductBuyInput($this->request->query);
$apiResponse = $this->callAPI(HTTP_SITE_URL . "/products/buy.json", 'POST', json_encode($data));
$apiResponseArr = json_decode($apiResponse, true);
if (isset($apiResponseArr['response']['status']) && ($apiResponseArr['response']['status'] == '+000')) {
$this->redirect('/pages/myExpenses');
/*if ($data['expense_type'] == 1):
$this->redirect('/Home/createGroupExpense');
elseif ($data['expense_type'] == 2):
$this->redirect('/Home/createMessExpense');
elseif ($data['expense_type'] == 3):
$this->redirect('/Home/createFamilyExpense');
endif;*/
} else {
$message = 'Something Wrong';
$this->Session->write('system.message', $message);
$this->redirect('/pages/products');
}
}
public function getToken(){
$device_id = "2sdfd6788ds76f8sd6f8f";
$random_number = "c9du5htkwwACZWLcraKrngKbKPtJ1YaY";
$unique_number = $device_id.$random_number; // device id + six digit random number
$salt = 'Nop@ss%!*-+@s=_17';
$generated_token = hash('sha256', $unique_number . $salt);
echo $generated_token;exit;
}
public function getSecretKeyss()
{
$device_id = "2sdfd6788ds76f8sd6f8f";
$this->loadModel('AccessKey');
$access_key = $this->AccessKey->getAccessToken($device_id);
//print_r($access_key['AccessKey']['secret_key']);
echo $access_key;
exit;
}
public function addGroup()
{
$url = $this->request->data['unique_url'];
$unique_url = str_replace(HTTP_SITE_URL.'/', '', $url);
$sessionProfileId = $this->Session->read('userData.profile_id');
$sessionUserId = $this->Session->read('userData.id');
list($status, $status_desc, $expObj) = $this->validateUniqueUrl($unique_url);
if (empty($status)) {
$permission = $this->Permission->PermissionByUserId($unique_url, $sessionUserId);
if ($permission != NO_PERMIT) {
$user_group = $this->UserGroup->find('first', array(
'conditions' => array('UserGroup.unique_url' => $unique_url, 'UserGroup.user_id' => $sessionUserId)
));
if (empty($user_group)) {
$inputData['user_id'] = $sessionUserId;
$inputData['unique_url'] = $unique_url;
$inputData['participant_id'] = '1_0';
$result = $this->UserGroup->save($inputData);
$expense_name = 'GroupExpense';
$expense_type = substr($data["unique_url"], 0 , 1);
if ($expense_type == 2) {
$expense_name = "MessExpense";
} elseif ($expense_type == 3) {
$expense_name = "FamilyExpense";
}
$this->userGroupUpdateOnFirebase($sessionUserId, $expense_name);
$this->Cookie->delete('Expenses');
$this->Session->setFlash(__('LBL_Add_GROUP_SUCCESS_MESSAGE'), 'default', ['class' => 'alert alert-success']);
} else {
$this->Session->setFlash(__('LBL_Add_GROUP_EXISTS_MESSAGE'), 'default', ['class' => 'alert alert-danger']);
}
} else {
$this->Session->setFlash('You do not have permission to access this group!', 'default', ['class' => 'alert alert-danger']);
}
}
else{
$this->Session->setFlash( __('LBL_Add_GROUP_NOT_EXISTS_MESSAGE'), 'default', ['class' => 'alert alert-danger']);
}
return $this->redirect(['controller' => 'pages', 'action' => 'myExpenses']);
}
}