File: //proc/thread-self/cwd/emu-integration/index.php
<?php
/***
* Purpose: This api is for EMU user registration and for starting test.
*
* @author Rohit Kashyap
* @since 04/05/2020 >> dd/mm/yyyy
* @version 0.2
* @copyright Copyright (C) 2020 Graposs Edutech Ltd. All rights reserved.
* @license Graposs Edutech Ltd.
*/
// header('Content-Type: application/json');
include_once('../wp-config.php');
include_once('generateChecksum.php');
/**
* WPDB global variable and including tables
*/
global $wpdb;
$PSY_TEST_GEN_TEST_TAKEN = $wpdb->prefix . PSY_TEST_GEN_TEST_TAKEN;
$PSY_USERS_DETAILS = $wpdb->prefix . PSY_USERS_DETAILS;
$PSY_SUBSCRIPTION = $wpdb->prefix . PSY_SUBSCRIPTION;
$PSY_API_REQUEST_DATA = $wpdb->prefix . PSY_API_REQUEST_DATA;
/***root link */
$root_link = 'http://3.7.22.134';
/***
* requesting params from emu
*/
$emu_name = $_REQUEST['name'];
$emu_class = $_REQUEST['class'];
$emu_email = $_REQUEST['email'];
$emu_mobile = $_REQUEST['mobile'];
$emu_dob = date('Y-m-d', strtotime($_REQUEST['dob']));
$emu_gender = $_REQUEST['gender'];
$exam_type = $_REQUEST['exam_type'];
$emu_unique_user_id = $_REQUEST['emu_unique_user_id'];
$emu_payment_ref_id = $_REQUEST['emu_payment_ref_id'];
$checksum = $_REQUEST['checksum'];
$selfanly_exam_id = $_REQUEST['exam_id'];
$curDate = date('Y-m-d H:i:s');
/***required feild status */
if ($emu_name == '' || $emu_class == '' || $emu_email == '' || $emu_mobile == '' || $emu_dob == '' || $emu_gender == '' || $exam_type == '' || $emu_unique_user_id == '' || $checksum == '' || $selfanly_exam_id == '' || $emu_payment_ref_id == '') {
$paramStatus = 2; // 2 for integration closed
} else {
$paramStatus = 1;
}
/***form action if start test */
if ($exam_type == 'P') {
$action = '/emu-personality-test/';
} else if ($exam_type == 'A') {
$action = '/emu-aptitude-test/';
}
/***
* verify check sum value is equal to function value
*/
$key = '3dotSevendot22dot!EFour';
$genratingCheckSum = $emu_unique_user_id . $key;
$newcheckSum = adler32($genratingCheckSum);
if ($newcheckSum == $checksum) {
/***
* condition for all parameters required
*/
if ($paramStatus == 1) {
/***validate params */
if (!filter_var($emu_email, FILTER_VALIDATE_EMAIL)) {
$status = 0;
$response = $emu_email . ' is not a valid email address';
} else if (!is_numeric($emu_mobile) || strlen($emu_mobile) != 10) {
$status = 0;
$response = $emu_mobile . ' is not a valid mobile number';
} else {
/***
* insert data in api table on request of every api call
*/
// $insertAPiData = "INSERT into $PSY_API_REQUEST_DATA set name='$emu_name', email='$emu_email', mobile='$emu_mobile', class='$emu_class', dob='$emu_dob', gender='$emu_gender', exam_type='$exam_type', emu_unique_user_id='$emu_unique_user_id', emu_payment_ref_id='$emu_payment_ref_id', exam_id='$selfanly_exam_id', created_on='$curDate'";
// if ($wpdb->query($insertAPiData)) {
// $apiTableID = $wpdb->insert_id;
// }
/***
* exam type
*/
if ($exam_type == 'P') {
$testType = 'EMU-PER';
} else if ($exam_type == 'A') {
$testType = 'EMU-APT';
}
/***
* condition if user already registered
*/
if (username_exists($emu_email)) {
/*** get user id by user login */
$user = get_user_by('login', $emu_email);
$user_id = $user->ID;
//auto login
// wp_clear_auth_cookie();
// wp_set_current_user($user_id);
// wp_set_auth_cookie($user_id);
$findSubs = $wpdb->get_var("SELECT subs_id from $PSY_API_REQUEST_DATA where emu_payment_ref_id='$emu_payment_ref_id' and subs_id!=''");
/***condiotion if user already taken test of this exam id */
$checktest = $wpdb->get_row("SELECT test_taken_id,reference_id,status FROM $PSY_TEST_GEN_TEST_TAKEN where exam_category_id='$selfanly_exam_id' and user_id='$user_id' and reference_id='$findSubs' order by test_taken_id desc");
/***
* if test not taken or taken
*/
if ($checktest->test_taken_id == '' || $checktest->test_taken_id == 0) {
$checkSubscription = $wpdb->get_row("SELECT subscription_id from $PSY_SUBSCRIPTION where user_id='$user_id' and exam_id='$selfanly_exam_id' and test_type='$testType' and subscription_id='$findSubs' order by subscription_id DESC");
if ($checkSubscription->subscription_id != '' || $checkSubscription->subscription_id != 0) {
$subs_id = $checkSubscription->subscription_id;
$status = 1;
$response = 'Welcome you have not taken your test, So Start Test';
} else {
//$insertSubscription = "INSERT into $PSY_SUBSCRIPTION set user_id='$user_id', plan_id='8', exam_id='$selfanly_exam_id', test_type='$testType', purchase_date='$curDate', status='1', active_status='1', active_date='$curDate', online_txn_table_id='0', source='EMU', source_id='0'";
/***
* update api table with subscription id
*/
// if ($wpdb->query($insertSubscription)) {
// $subs_id = $wpdb->insert_id;
// $updateApiData = $wpdb->query("UPDATE $PSY_API_REQUEST_DATA set subs_id='$subs_id' where id='$apiTableID'");
// /***after response */
// $status = 1;
// $response = 'Welcome! Start Test';
// }
}
//$array = array("status" => 1, "message" => "Start Test");
} else {
if ($checktest->status == 'N') {
/***after response */
$status = 1;
$response = 'Welcome Back! Resume Test';
$subs_id = $checktest->reference_id;
} else if ($checktest->status == 'Y') {
/***after response */
$status = 0;
$response = 'You have already test taken';
}
//$array = array("status" => 0, "message" => "Already test taken");
}
} else {
// $password = str_shuffle(bin2hex(openssl_random_pseudo_bytes(4)));
// $user_id = wp_create_user($emu_email, $password, $emu_email);
// $creds = array();
// $creds['user_login'] = $emu_email;
// $creds['user_password'] = $password;
// $creds['remember'] = true;
// $user = wp_signon($creds, false);
// wp_set_current_user($user->ID);
if ($user_id) {
// $inserTDetails = $wpdb->query("INSERT into $PSY_USERS_DETAILS set user_id='$user_id', first_name='$emu_name', mobile_number='$emu_mobile', email_address='$emu_email', gender_id='$emu_gender', date_of_birth='$emu_dob', current_education_level='$emu_class', source='EMU', source_id='1'");
// $insertSubscription = "INSERT into $PSY_SUBSCRIPTION set user_id='$user_id', plan_id='8', exam_id='$selfanly_exam_id', test_type='$testType', purchase_date='$curDate', status='1', active_status='1', active_date='$curDate', online_txn_table_id='0', source='EMU', source_id='0'";
/***
* update api table with subscription id
*/
// if ($wpdb->query($insertSubscription)) {
// $subs_id = $wpdb->insert_id;
// $updateApiData = $wpdb->query("UPDATE $PSY_API_REQUEST_DATA set subs_id='$subs_id' where id='$apiTableID'");
// //$array = array("status" => 1, "message" => "Start Test", "gepl_user_id" => $user_id);
// /***after response */
// $status = 1;
// $response = 'Registered successfully, Start Test';
// } else {
// //$array = array("status" => 0, "message" => "Error occured");
// /***after response */
// $status = 0;
// $response = 'Error occured, while creating test';
// }
} else {
//$array = array("status" => 0, "message" => "User not registered");
/***after response */
$status = 0;
$response = 'User not registered, due to some errors';
}
}
//echo json_encode($array);
}
} else if($paramStatus == 2) {
$status = 0;
$response = 'Registration Closed';
} else {
//$array = array("status" => 0, "message" => "Error,all parameters required");
/***after response */
$status = 0;
$response = 'Error,all parameters required';
//echo json_encode($array);
}
} else {
//$array = array("status" => 0, "message" => "Error,checksum not verified");
/***after response */
$status = 0;
$response = 'Error,checksum not verified';
//echo json_encode($array);
}
?>
<link rel="stylesheet" href="/wp-content/themes/psychometrics/bootstrap/css/bootstrap.min.css">
<?php
/***Using of HTML for status condition */
if ($status == 1) {
?>
<div class="container" style="margin-top: 250px">
<div class="row d-flex justify-content-center">
<div class="col-md-3">
</div>
<div class="col-md-6">
<div class="alert alert-success" role="alert">
<?php echo $response; ?>
</div>
</div>
<div class="col-md-3">
</div>
</div>
<div class="row d-flex justify-content-center">
<div class="col-md-3">
</div>
<div class="col-md-6">
<form action="<?php echo $root_link . $action ?>" method="POST">
<input type="hidden" name="sID" value="<?php echo $subs_id ?>">
<input type="hidden" name="class_id" value="<?php echo $emu_class ?>">
<button type="submit" class="btn btn-primary">Start Test</button>
</form>
</div>
<div class="col-md-3">
</div>
</div>
</div>
<?php
} else {
?>
<div class="container" style="margin-top: 250px">
<div class="row d-flex justify-content-center">
<div class="col-md-3">
</div>
<div class="col-md-6">
<div class="alert alert-danger" role="alert">
<?php echo $response; ?>
</div>
</div>
<div class="col-md-3">
</div>
</div>
</div>
<?php
}
?>