1463 lines
54 KiB
Plaintext
1463 lines
54 KiB
Plaintext
<?php
|
|
|
|
namespace App\Http\Controllers\API;
|
|
|
|
use App\Libraries\CywareLibrary;
|
|
use App\Libraries\StratuscastLibrary;
|
|
use App\Libraries\M360;
|
|
use Illuminate\Http\Request;
|
|
use App\Http\Controllers\Controller;
|
|
use Illuminate\Support\Facades\Auth;
|
|
use App\Helpers\HttpStatusCode;
|
|
use Validator;
|
|
use Carbon\Carbon;
|
|
|
|
use App\Http\Resources\MobileUserProfileResource;
|
|
|
|
use App\Contracts\UserResourceInterface;
|
|
use App\Contracts\AdminResourceInterface;
|
|
use App\Contracts\PasswordLogsResourceInterface;
|
|
use App\Contracts\AdminActionLogsInterface;
|
|
use App\Contracts\LoyaltyCardResourceInterface;
|
|
use App\Contracts\PersonalDetailsResourceInterface;
|
|
use App\Contracts\OtpLogResourceInterface;
|
|
use App\Contracts\LcardActionLogsInterface;
|
|
use App\Contracts\SystemPreferenceResourceInterface;
|
|
use App\Contracts\OtpAttemptsResourceInterface;
|
|
use App\Contracts\MobileAnalyticsResourceInterface;
|
|
use App\Contracts\MpinCodesResourceInterface;
|
|
use App\Http\Requests\UserFormValidation;
|
|
use App\Http\Requests\LoginMobileNumberFormValidation;
|
|
use App\Http\Requests\LoginCardNumberFormValidation;
|
|
use App\Http\Requests\LoginBirthdateFormValidation;
|
|
use App\Http\Requests\LoginActivateCardFormValidation;
|
|
use App\Http\Requests\MpinFormValidation;
|
|
use App\Helpers\StringHelper;
|
|
|
|
use GuzzleHttp\Exception\GuzzleException;
|
|
|
|
class UserController extends Controller
|
|
{
|
|
const MODULE = 'LOGIN';
|
|
|
|
public $user;
|
|
|
|
protected $format;
|
|
|
|
protected $module;
|
|
|
|
protected $model;
|
|
|
|
protected $admin;
|
|
|
|
protected $password_logs;
|
|
|
|
protected $loyalty_card;
|
|
|
|
protected $personal_details;
|
|
|
|
protected $otp_logs;
|
|
|
|
protected $admin_logs;
|
|
|
|
protected $lcard_logs;
|
|
|
|
protected $system_preferences;
|
|
|
|
protected $otp_attempts;
|
|
|
|
protected $mobile_usage;
|
|
|
|
|
|
|
|
public function __construct(UserResourceInterface $user,
|
|
HttpStatusCode $httpStatusCode,
|
|
AdminResourceInterface $admin,
|
|
PasswordLogsResourceInterface $password_logs,
|
|
LoyaltyCardResourceInterface $loyalty_card,
|
|
PersonalDetailsResourceInterface $personal_details,
|
|
OtpLogResourceInterface $otp_logs,
|
|
LcardActionLogsInterface $lcard_logs,
|
|
AdminActionLogsInterface $admin_logs,
|
|
SystemPreferenceResourceInterface $system_preferences,
|
|
OtpAttemptsResourceInterface $otp_attempts,
|
|
MobileAnalyticsResourceInterface $mobile_usage,
|
|
MpinCodesResourceInterface $mpin_codes)
|
|
{
|
|
$this->user = $user;
|
|
$this->format = $httpStatusCode;
|
|
$this->module = "User";
|
|
$this->model = "User";
|
|
$this->admin = $admin;
|
|
$this->password_logs = $password_logs;
|
|
$this->loyalty_card = $loyalty_card;
|
|
$this->personal_details = $personal_details;
|
|
$this->otp_logs = $otp_logs;
|
|
$this->admin_logs = $admin_logs;
|
|
$this->lcard_logs = $lcard_logs;
|
|
$this->system_preferences = $system_preferences;
|
|
$this->otp_attempts = $otp_attempts;
|
|
$this->mobile_usage = $mobile_usage;
|
|
$this->mpin_codes = $mpin_codes;
|
|
}
|
|
|
|
/**
|
|
* CMS api
|
|
*
|
|
* @return \Illuminate\Http\Response
|
|
*/
|
|
|
|
public function cms_usernameLogin(Request $request)
|
|
{
|
|
$admin = $this->admin->getByField([
|
|
'username' => $request->get('username'),
|
|
'is_active' => 1,
|
|
]);
|
|
|
|
if($admin->count())
|
|
{
|
|
if($admin[0]['status'] == 1)
|
|
{
|
|
$data['inactive'] = true;
|
|
return $this->format->unprocessableEntity("Username does not exist.",$data);
|
|
}
|
|
elseif($admin[0]['is_active'] == 1)
|
|
{
|
|
|
|
// note : password checking must be in the password form
|
|
|
|
// $password_log = $this->password_logs->getLastLog($admin[0]['admin_id']);
|
|
|
|
// if($password_log)
|
|
// {
|
|
// $hasExceeded = StringHelper::check_time_exceeded($password_log['created_dt'], '+15 minutes');
|
|
// if($password_log['generated_password'] != null && $hasExceeded == false)
|
|
// {
|
|
// $data['expired'] = true;
|
|
// return $this->format->unprocessableEntity("Your password is expired",$data);
|
|
// }
|
|
// }
|
|
|
|
$data['is_verified'] = true;
|
|
$data['role'] = $admin[0]['role'];
|
|
return $this->format->success("Success",$data);
|
|
}
|
|
}
|
|
|
|
$data['is_verified'] = false;
|
|
return $this->format->unprocessableEntity("Username does not exist.",$data);
|
|
|
|
}
|
|
|
|
|
|
public function cms_login()
|
|
{
|
|
if(Auth::attempt(['username' => request('username'), 'password' => request('password')]))
|
|
{
|
|
|
|
$user = Auth::user();
|
|
$admin = $this->admin->getByField([
|
|
'username' => request('username'),
|
|
'is_active' => 1,
|
|
]);
|
|
|
|
if($admin[0]['is_passwordChanged'] == 1)
|
|
{
|
|
$this->admin_logs->log($admin[0]['admin_id'],self::MODULE,'LOGIN');
|
|
// $success['token'] = $user->createToken('Admin')->accessToken;
|
|
|
|
|
|
$data = [
|
|
'grant_type' => 'password',
|
|
'client_id' => env("PASSPORT_ADMIN_CLIENT_ID", 2),
|
|
'client_secret' => env("PASSPORT_ADMIN_CLIENT_SECRET", "test"),
|
|
'username' => $admin[0]['email'],
|
|
'password' => request('password'),
|
|
'scope' => ''
|
|
];
|
|
|
|
$request = Request::create('/oauth/token', 'POST', $data);
|
|
$result = app()->handle($request)->getContent();
|
|
$result = json_decode($result);
|
|
|
|
|
|
$success['token'] = $result->access_token;
|
|
// $success['refresh_token'] = $result->refresh_token;
|
|
$message = 'Success';
|
|
}
|
|
else
|
|
{
|
|
$password_log = $this->password_logs->getLastLog($admin[0]['admin_id']);
|
|
if($password_log)
|
|
{
|
|
$hasExceeded = StringHelper::check_time_exceeded($password_log['created_dt'], '+15 minutes');
|
|
if($password_log['generated_password'] != null && $hasExceeded == false)
|
|
{
|
|
$data['expired'] = true;
|
|
return $this->format->unprocessableEntity("Your password is expired",$data);
|
|
}
|
|
}
|
|
|
|
$success['prompt_password'] = 1;
|
|
$success['admin_uuid'] = $admin[0]['admin_uuid'];
|
|
$message = 'User must change password';
|
|
}
|
|
|
|
return $this->format->success($message,$success);
|
|
}
|
|
else{
|
|
return $this->format->unauthorized("Incorrect Password");
|
|
}
|
|
}
|
|
|
|
|
|
public function cms_changePassword(UserFormValidation $request)
|
|
{
|
|
|
|
$admin = $this->admin->getByField(['admin_uuid' => $request->get('admin_uuid')]);
|
|
|
|
//added this to check if the admin uuid is correct and to avoid Undefined offset: 0
|
|
if ($admin->count() == 0){
|
|
return $this->format->unauthorized();
|
|
}
|
|
|
|
// Shall not be the same with the previous 2 passwords.
|
|
$logs = $this->password_logs->getByField([
|
|
'admin_id' =>$admin[0]['admin_id'],
|
|
'is_generated' => 0
|
|
]);
|
|
$good_password = true;
|
|
if(count($logs) > 0)
|
|
{
|
|
$ctr = 1;
|
|
foreach ($logs as $key => $value) {
|
|
if($ctr <= 2)
|
|
{
|
|
if($value['password'] == md5($request->get('password')))
|
|
$good_password = false;
|
|
}
|
|
$ctr++;
|
|
}
|
|
}
|
|
|
|
if($good_password)
|
|
{
|
|
|
|
$success_admin = $this->admin->changePassword($request);
|
|
$success_user = $this->user->changePassword($request,$admin[0]['username']);
|
|
$this->password_logs->store($admin[0]['admin_id'],$request->get('password'),$admin[0]['admin_id']);
|
|
|
|
if($success_user && $success_admin)
|
|
{
|
|
$this->admin_logs->log($admin[0]['admin_id'],self::MODULE,'UPDATE','Changed Password');
|
|
|
|
if(Auth::attempt(['username' => $admin[0]['username'], 'password' => $request->get('password')]))
|
|
{
|
|
$auth = Auth::user();
|
|
// $success['token'] = $auth->createToken('Admin')->accessToken;
|
|
$data = [
|
|
'grant_type' => 'password',
|
|
'client_id' => env("PASSPORT_ADMIN_CLIENT_ID", 2),
|
|
'client_secret' => env("PASSPORT_ADMIN_CLIENT_SECRET", "test"),
|
|
'username' => $admin[0]['email'],
|
|
'password' => $request->get('password'),
|
|
'scope' => ''
|
|
];
|
|
|
|
$auth_request = Request::create('/oauth/token', 'POST', $data);
|
|
$result = app()->handle($auth_request)->getContent();
|
|
$result = json_decode($result);
|
|
|
|
|
|
$success['token'] = $result->access_token;
|
|
// $success['refresh_token'] = $result->refresh_token;
|
|
|
|
$this->admin_logs->log($admin[0]['admin_id'],self::MODULE,'LOGIN');
|
|
return $this->format->success("SUCCESS",$success);
|
|
}
|
|
else
|
|
{
|
|
return $this->format->unauthorized();
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$data['password'] = 'Shall not be the same with the previous 2 passwords';
|
|
return $this->format->unprocessableEntity("Shall not be the same with the previous 2 passwords",$data);
|
|
}
|
|
}
|
|
|
|
public function logout_cms()
|
|
{
|
|
if (Auth::check()) {
|
|
// Auth::user()->AauthAcessToken()->delete();
|
|
Auth::user()->token()->revoke();
|
|
return $this->format->success("Logout Success");
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Mobile api
|
|
*
|
|
* @return \Illuminate\Http\Response
|
|
*/
|
|
|
|
public function mobile_loginCardNumber(LoginMobileNumberFormValidation $request)
|
|
{
|
|
|
|
|
|
|
|
$member_det = $this->loyalty_card->getByField([
|
|
'mobile' => '63'.$request->get('mobile_number'),
|
|
'is_active' => 1
|
|
]);
|
|
$cardnumber = null;
|
|
if($member_det != null && count($member_det) > 0 && $member_det[0]['card_number'] != null){
|
|
$cardnumber = $member_det[0]['card_number'];
|
|
}else{
|
|
return $this->format->mobile_error("Mobile number is not yet registered",['code' => 2]);
|
|
}
|
|
|
|
$cyware = new CywareLibrary();
|
|
$cyware->setCardNumber($cardnumber);
|
|
$cyware->state_validate();
|
|
|
|
if ($cyware->response['status_code'] == "200" && $cyware->response['data'] != null)
|
|
{
|
|
|
|
// check if locked
|
|
$member_det = $this->loyalty_card->getByField([
|
|
'card_number' => $cardnumber,
|
|
'is_active' => 1
|
|
]);
|
|
|
|
|
|
|
|
|
|
if(count($member_det))
|
|
{
|
|
if($member_det[0]['is_locked'] == 1)
|
|
{
|
|
|
|
if(!StringHelper::check_time_exceeded($member_det[0]['lock_dt'],'+24 hours'))
|
|
{
|
|
$this->loyalty_card->activate_locked($member_det[0]['lcard_uuid']);
|
|
$this->lcard_logs->log($member_det[0]['lcard_id'],'LOGIN','UPDATE','System automatically changes lock status to activated');
|
|
}
|
|
else
|
|
{
|
|
$customer_service_email = $this->system_preferences->getByField('name','contact_email_address_mobile');
|
|
$customer_service_number = $this->system_preferences->getByField('name','contact_number_mobile');
|
|
|
|
return $this->format->mobile_error('The account you are trying to access is locked. Please contact Customer Service for assistance, call or email customer service.',[
|
|
'code' => 1,
|
|
'email' => $customer_service_email[0]['value'],
|
|
'number' => $customer_service_number[0]['value'],
|
|
]);
|
|
}
|
|
}
|
|
|
|
// todo remove this comment on live
|
|
// if($member_det[0]['deviceUUID'] != "" && $member_det[0]['deviceUUID'] != $request->get('deviceUUID'))
|
|
// {
|
|
// return $this->format->mobile_error('Your account is already logged in a different device',['code' => 3]);
|
|
// }
|
|
}
|
|
|
|
|
|
return $this->format->mobile_success('Success',[
|
|
'is_valid' => 1,
|
|
'card_number' => $cardnumber
|
|
]);
|
|
|
|
}else{
|
|
return $this->format->mobile_error($cyware->response['message'],['code' => 2]);
|
|
}
|
|
|
|
}
|
|
|
|
public function mobile_loginMobileNumber(LoginMobileNumberFormValidation $request)
|
|
{
|
|
|
|
$cyware = new CywareLibrary();
|
|
$cyware->setMobile('63'.$request->get('mobile_number'));
|
|
$cyware->state_mobilevalidate();
|
|
|
|
if ($cyware->response['status_code'] == "200" && $cyware->response['data'] != null)
|
|
{
|
|
|
|
//get card number details
|
|
$dataResult = $cyware->response['data'];
|
|
$cardnumber = null;
|
|
if(is_array($dataResult)){
|
|
//get latest card
|
|
foreach ($dataResult as $key => $part) {
|
|
$sort[$key] = strtotime($part->app_date.$part->app_time);
|
|
}
|
|
array_multisort($sort, SORT_DESC, $dataResult);
|
|
|
|
$cardnumber = $dataResult[0]->card_number;
|
|
|
|
}else
|
|
$cardnumber = $dataResult->card_number;
|
|
|
|
// check if locked
|
|
$member_det = $this->loyalty_card->getByField([
|
|
'card_number' => $cardnumber,
|
|
'is_active' => 1
|
|
]);
|
|
|
|
if(count($member_det))
|
|
{
|
|
if($member_det[0]['is_locked'] == 1)
|
|
{
|
|
|
|
if(!StringHelper::check_time_exceeded($member_det[0]['lock_dt'],'+24 hours'))
|
|
{
|
|
$this->loyalty_card->activate_locked($member_det[0]['lcard_uuid']);
|
|
$this->lcard_logs->log($member_det[0]['lcard_id'],'LOGIN','UPDATE','System automatically changes lock status to activated');
|
|
}
|
|
else
|
|
{
|
|
$customer_service_email = $this->system_preferences->getByField('name','contact_email_address_mobile');
|
|
$customer_service_number = $this->system_preferences->getByField('name','contact_number_mobile');
|
|
|
|
return $this->format->mobile_error('The account you are trying to access is locked. Please contact Customer Service for assistance, call or email customer service.',[
|
|
'code' => 1,
|
|
'email' => $customer_service_email[0]['value'],
|
|
'number' => $customer_service_number[0]['value'],
|
|
]);
|
|
}
|
|
}
|
|
|
|
// todo remove this comment on live
|
|
// if($member_det[0]['deviceUUID'] != "" && $member_det[0]['deviceUUID'] != $request->get('deviceUUID'))
|
|
// {
|
|
// return $this->format->mobile_error('Your account is already logged in a different device',['code' => 3]);
|
|
// }
|
|
}
|
|
|
|
$lcard_uuid = $member_det[0]['lcard_uuid'];
|
|
|
|
return $this->format->mobile_success('Success',[
|
|
'is_valid' => 1,
|
|
'card_number' => $cardnumber,
|
|
'user_id' => $lcard_uuid
|
|
]);
|
|
|
|
}else{
|
|
return $this->format->mobile_error($cyware->response['message'],['code' => 2]);
|
|
}
|
|
|
|
}
|
|
|
|
public function mobile_loginCardNumber_enroll(LoginCardNumberFormValidation $request)
|
|
{
|
|
// // Number Verification Code
|
|
// $loyalty_card = $this->loyalty_card->getByField([
|
|
// 'mobile' => $request->get('mobile'),
|
|
// 'is_active' => 1,
|
|
// ]);
|
|
|
|
$cyware = new CywareLibrary();
|
|
$cyware->setCardNumber($request->get('card_number'));
|
|
$cyware->state_entry();
|
|
|
|
if ($cyware->response['status_code'] == "200" && $cyware->response['message'] == 'Pin is required')
|
|
{
|
|
|
|
$cyware->setCardNumber($request->get('card_number'));
|
|
$cyware->state_validate();
|
|
if ($cyware->response['status_code'] == "200" && $cyware->response['message'] == 'No Records Found')
|
|
{
|
|
return $this->format->mobile_success('Success',[
|
|
'is_valid' => 1
|
|
]);
|
|
}
|
|
else
|
|
{
|
|
$message = $cyware->response['message'];
|
|
$code = 2;
|
|
if(isset($cyware->response['message']) && $cyware->response['message'] == "Success")
|
|
{
|
|
|
|
// check if locked
|
|
$member_det = $this->loyalty_card->getByField([
|
|
'card_number' => $request->get('card_number'),
|
|
'is_active' => 1
|
|
]);
|
|
|
|
if(count($member_det))
|
|
{
|
|
if($member_det[0]['is_locked'] == 1)
|
|
{
|
|
|
|
if(!StringHelper::check_time_exceeded($member_det[0]['lock_dt'],'+24 hours'))
|
|
{
|
|
$this->loyalty_card->activate_locked($member_det[0]['lcard_uuid']);
|
|
$this->lcard_logs->log($member_det[0]['lcard_id'],'LOGIN','UPDATE','System automatically changes lock status to activated');
|
|
}
|
|
else
|
|
{
|
|
$customer_service_email = $this->system_preferences->getByField('name','contact_email_address_mobile');
|
|
$customer_service_number = $this->system_preferences->getByField('name','contact_number_mobile');
|
|
|
|
return $this->format->mobile_error('The account you are trying to access is locked. Please contact Customer Service for assistance, call or email customer service.',[
|
|
'code' => 1,
|
|
'email' => $customer_service_email[0]['value'],
|
|
'number' => $customer_service_number[0]['value'],
|
|
]);
|
|
}
|
|
}
|
|
|
|
// todo remove this comment on live
|
|
// if($member_det[0]['deviceUUID'] != "" && $member_det[0]['deviceUUID'] != $request->get('deviceUUID'))
|
|
// {
|
|
// return $this->format->mobile_error('Your account is already logged in a different device',['code' => 3]);
|
|
// }
|
|
}
|
|
|
|
$message = 'Card Number is already registered. Do you want to proceed to login?';
|
|
$code = 4;
|
|
return $this->format->mobile_error($message,['code' => $code,'number' => $cyware->response['data']->mobile]);
|
|
}
|
|
|
|
|
|
return $this->format->mobile_error($message,['code' => $code,'number' => $cyware->response['data']->mobile]);
|
|
}
|
|
|
|
}
|
|
else
|
|
{
|
|
return $this->format->mobile_error($cyware->response['message'],['code' => 2]);
|
|
}
|
|
|
|
}
|
|
|
|
public function mobile_loginBirthdate(LoginBirthdateFormValidation $request)
|
|
{
|
|
$cyware = new CywareLibrary();
|
|
$cyware->setCardNumber($request->get('card_number'));
|
|
$cyware->state_validate();
|
|
|
|
if ($cyware->response['status_code'] == "200" && $cyware->response['data'] != null)
|
|
{
|
|
if(Carbon::parse($request->get('birthdate'))->age < 18)
|
|
{
|
|
return $this->format->mobile_error('You must be at least 18 years old to join the Loyalty Program');
|
|
}
|
|
elseif($cyware->response['data']->birthdate != $request->get('birthdate'))
|
|
{
|
|
return $this->format->mobile_error( 'Incorrect Birthdate');
|
|
}
|
|
else
|
|
{
|
|
$loyalty_card = $this->loyalty_card->getByField([
|
|
'card_number' => $request->get('card_number'),
|
|
'is_active' => 1
|
|
],'codeCardType');
|
|
|
|
if(count($loyalty_card))
|
|
{
|
|
$cyware->state_retrieve();
|
|
// update device uuid
|
|
$this->loyalty_card->update_deviceuuid($loyalty_card[0]['lcard_id'],$request->get('deviceUUID'));
|
|
|
|
|
|
$success = [
|
|
'mobile_number' => $loyalty_card[0]['mobile'],
|
|
// 'card_type' => $loyalty_card[0]['card_type']['code'],
|
|
// 'card_number' => $loyalty_card[0]['card_number'],
|
|
'lcard_uuid' => $loyalty_card[0]['lcard_uuid'],
|
|
'state_retrieve' => $cyware->response["data"]
|
|
];
|
|
$this->lcard_logs->log($loyalty_card[0]['lcard_id'],'LOGIN','LOGIN','Member logs in a verified account');
|
|
}
|
|
else
|
|
{
|
|
// add details to database
|
|
|
|
$pd_id = $this->personal_details->store($cyware->response['data']);
|
|
$lcard_store = $this->loyalty_card->store($pd_id, $cyware->response['data'], $request->get('deviceUUID'),1);
|
|
$this->user->store_member($cyware->response['data']);
|
|
$this->mobile_usage->add_inactive();
|
|
$success = [
|
|
'mobile_number' => $cyware->response['data']->mobile,
|
|
// 'card_type' => $cyware->response['data']->card_type_code,
|
|
// 'card_number' => $cyware->response['data']->card_number,
|
|
'lcard_uuid' => $lcard_store['lcard_uuid'],
|
|
];
|
|
|
|
$this->lcard_logs->log($lcard_store['lcard_id'],'LOGIN','STORE','Member added a verified account to database');
|
|
}
|
|
|
|
return $this->format->mobile_success('Success',$success);
|
|
|
|
}
|
|
|
|
}else{
|
|
return $this->format->mobile_error('Error',['card_number' => $cyware->response['message']]);
|
|
}
|
|
}
|
|
|
|
public function create_otp(Request $request)
|
|
{
|
|
$loyalty_card = $this->loyalty_card->getByField([
|
|
'lcard_uuid' => $request->get('lcard_uuid'),
|
|
'is_active' => 1
|
|
]);
|
|
|
|
|
|
if(count($loyalty_card))
|
|
{
|
|
// get if loyalty card is less than 30 seconds
|
|
// this is due to iOS' double request for OTP
|
|
$last_log = $this->otp_logs->getLastLog($loyalty_card[0]['lcard_id']);
|
|
if((isset($last_log->created_at) && strtotime($last_log->created_at.' +30 seconds') > strtotime(date('Y-m-d H:i:s'))) && $request->is_resend == 'true')
|
|
return $this->format->mobile_success('Success');
|
|
|
|
if($request->has('is_resend') && $request->is_resend != 'true')
|
|
{
|
|
// reset otp_attempts
|
|
$this->otp_attempts->delete($loyalty_card[0]['lcard_id']);
|
|
}
|
|
|
|
if(env("M360_ENV", 'TEST') == 'LOCAL')
|
|
$otp = 1234;
|
|
else
|
|
$otp = StringHelper::random_num(4);
|
|
|
|
|
|
$content = 'Your Unioil Mobile Application OTP Code is '.$otp;
|
|
$transid = date('YmdHis').$loyalty_card[0]['lcard_id'];
|
|
$mobile = $request->has('mobile') ? '63'.$request->mobile : $loyalty_card[0]['mobile'];
|
|
|
|
$m360 = new M360();
|
|
|
|
$m360->set_msisdn($mobile);
|
|
$m360->set_content($content);
|
|
$m360->set_rcvd_transid($transid);
|
|
$m360->send();
|
|
|
|
if($m360->success())
|
|
{
|
|
// error_log( "SMS Sent!" );
|
|
$data = [
|
|
'otp' => $otp,
|
|
'msisdn' => $mobile,
|
|
'content' => $content,
|
|
'rcvd_transid' => $transid,
|
|
'transid' => $m360->get_transid()
|
|
];
|
|
|
|
if($this->otp_logs->store($loyalty_card[0]['lcard_id'],$data))
|
|
{
|
|
$this->lcard_logs->log($loyalty_card[0]['lcard_id'],'OTP','GENERATE','Member requested to generate an OTP');
|
|
return $this->format->mobile_success('Success');
|
|
}
|
|
else
|
|
{
|
|
return $this->format->mobile_error('Something went wrong');
|
|
}
|
|
}
|
|
else
|
|
{
|
|
return $this->format->mobile_error($m360->get_response_name(),$m360->get_response_message());
|
|
}
|
|
}
|
|
else
|
|
{
|
|
return $this->format->mobile_error('User doesn\'t exist');
|
|
}
|
|
|
|
}
|
|
|
|
public function mobile_otp(Request $request){
|
|
|
|
if($request->has('mobile')){
|
|
|
|
$mobile = '63'.$request->mobile;
|
|
|
|
$loyalty_card = $this->loyalty_card->getByField([
|
|
'mobile' => $mobile,
|
|
'is_active' => 1,
|
|
]);
|
|
|
|
if(count($loyalty_card)>0){
|
|
return $this->format->mobile_error('Mobile number already used.');
|
|
}else{
|
|
|
|
$lastlog = $this->otp_logs->getLastLogByNumber($mobile);
|
|
if($lastlog != null){
|
|
$timeB = time();
|
|
$lastlog = strtotime($lastlog->created_at);
|
|
if($lastlog+30 > $timeB){
|
|
return $this->format->mobile_error("OTP too fast to request.");
|
|
}
|
|
}
|
|
|
|
$otp = StringHelper::random_num(4);
|
|
$content = 'Your Unioil Mobile Application OTP Code is '.$otp;
|
|
$transid = date('YmdHis')."validate";
|
|
|
|
$m360 = new M360();
|
|
|
|
$m360->set_msisdn($mobile);
|
|
$m360->set_content($content);
|
|
$m360->set_rcvd_transid($transid);
|
|
$m360->send();
|
|
|
|
if($m360->success()){
|
|
|
|
$data = [
|
|
'otp' => $otp,
|
|
'msisdn' => $mobile,
|
|
'content' => $content,
|
|
'rcvd_transid' => $transid,
|
|
'transid' => $m360->get_transid()
|
|
];
|
|
|
|
// return $this->format->mobile_success('Success');
|
|
if($this->otp_logs->store("validation",$data)){
|
|
$this->lcard_logs->log("validation",'OTP','GENERATE','Member requested to generate an OTP');
|
|
return $this->format->mobile_success('Success', [
|
|
'trans_id' => $transid
|
|
]);
|
|
}else{
|
|
return $this->format->mobile_error('Something went wrong');
|
|
}
|
|
|
|
}else{
|
|
return $this->format->mobile_error($m360->get_response_name(),$m360->get_response_message());
|
|
}
|
|
|
|
// return $this->format->mobile_success("Mobile number is valid.");
|
|
}
|
|
|
|
}else{
|
|
return $this->format->mobile_error("Mobile number is required");
|
|
}
|
|
|
|
}
|
|
|
|
public function mobile_updateMpin(MpinFormValidation $request){
|
|
|
|
|
|
//check if code exist
|
|
$loyalty_card = $this->loyalty_card->getByField([
|
|
'lcard_uuid' => $request->get('lcard_uuid'),
|
|
'is_active' => 1
|
|
]);
|
|
|
|
if(count($loyalty_card))
|
|
{
|
|
$cardNumber = $loyalty_card[0]['card_number'];
|
|
|
|
//check if mpin exist
|
|
$mpin = $this->mpin_codes->getMpin($cardNumber);
|
|
if($mpin){
|
|
//update
|
|
|
|
$data = [];
|
|
$data['mpin_code'] = $request->get('mpin');
|
|
$res = $this->mpin_codes->updateMpin($cardNumber,$data);
|
|
if($res){
|
|
return $this->format->mobile_success('Success', [
|
|
'mpin' => $request->get('mpin')
|
|
]);
|
|
}else{
|
|
return $this->format->mobile_error('Something went wrong.');
|
|
}
|
|
}else{
|
|
//store
|
|
$data = [];
|
|
$data['lcard_id'] = $cardNumber;
|
|
$data['mpin_code'] = $request->get('mpin');
|
|
$res = $this->mpin_codes->store($data);
|
|
if($res){
|
|
return $this->format->mobile_success('Success', [
|
|
'mpin' => $request->get('mpin')
|
|
]);
|
|
}else{
|
|
return $this->format->mobile_error('Something went wrong.');
|
|
}
|
|
|
|
}
|
|
}else{
|
|
return $this->format->mobile_error('User doesn\'t exist');
|
|
}
|
|
|
|
|
|
}
|
|
|
|
public function mobile_getPin(Request $request){
|
|
|
|
$loyalty_card = $this->loyalty_card->getByField([
|
|
'lcard_uuid' => $request->get('lcard_uuid'),
|
|
'is_active' => 1
|
|
]);
|
|
|
|
if(count($loyalty_card))
|
|
{
|
|
$cardNumber = $loyalty_card[0]['card_number'];
|
|
$mpin = $this->mpin_codes->getMpin($cardNumber);
|
|
if($mpin){
|
|
return $this->format->mobile_success('Success', [
|
|
'mpin' => $mpin->mpin_code
|
|
]);
|
|
}else{
|
|
return $this->format->mobile_error('MPIN is not yet set by the user.');
|
|
}
|
|
|
|
}else{
|
|
return $this->format->mobile_error('User doesn\'t exist');
|
|
}
|
|
|
|
}
|
|
|
|
public function mobile_validate_otp(Request $request){
|
|
$otp_log = $this->otp_logs->getByField([
|
|
'rcvd_transid' => $request->trans_id
|
|
]);
|
|
if(count($otp_log)>0){
|
|
$_otp = $otp_log[0]->otp;
|
|
$_otp_id = $otp_log[0]->otplog_id;
|
|
$_otp_used = $otp_log[0]->used;
|
|
// return $this->format->mobile_success("test", $otp_log[0]->otp);
|
|
if($_otp_used == 0){
|
|
if($_otp == $request->otp){
|
|
if($this->otp_logs->setUsed($_otp_id)){
|
|
return $this->format->mobile_success('Success');
|
|
}else{
|
|
return $this->format->mobile_error("Something went wrong.");
|
|
}
|
|
}else{
|
|
return $this->format->mobile_error('Incorrect OTP. The OTP you have entered does not exist.',['code' => 2]);
|
|
}
|
|
}else{
|
|
return $this->format->mobile_error('The OTP you have entered has already used.');
|
|
}
|
|
}else{
|
|
return $this->format->mobile_error('Incorrect OTP. The OTP you have entered does not exist.',['code' => 2]);
|
|
}
|
|
}
|
|
|
|
public function validate_otp(Request $request)
|
|
{
|
|
// lock after 3 attempts
|
|
$numberOfAttempts = 0;
|
|
|
|
$attempts = $this->loyalty_card->numberOfOTPAttempts($request->get('lcard_uuid'));
|
|
|
|
if(!is_null($attempts))
|
|
{
|
|
$numberOfAttempts = $attempts->otpAttempts->count();
|
|
}
|
|
|
|
|
|
if($numberOfAttempts >= 3)
|
|
{
|
|
|
|
$customer_service_email = $this->system_preferences->getByField('name','contact_email_address_mobile');
|
|
$customer_service_number = $this->system_preferences->getByField('name','contact_number_mobile');
|
|
|
|
return $this->format->mobile_error('You already entered the wrong OTP 3 times. Your account is locked for 24 hours. Please contact Customer Service for assistance, call or email customer service.',[
|
|
'code' => 1,
|
|
'email' => $customer_service_email[0]['value'],
|
|
'number' => $customer_service_number[0]['value'],
|
|
]);
|
|
}
|
|
else
|
|
{
|
|
$loyalty_card = $this->loyalty_card->getByField([
|
|
'lcard_uuid' => $request->get('lcard_uuid'),
|
|
'is_active' => 1
|
|
],'personalDetails');
|
|
|
|
$getuserDetails = $this->loyalty_card->show($request->get('lcard_uuid'),['personalDetails','codeVehicleOwn','codeCivilStatus','codeGender','codeCardType','codeCity','codeFuelType']);
|
|
$data = new MobileUserProfileResource($getuserDetails);
|
|
$userDetails = null;
|
|
if($data != null){
|
|
$userDetails = $data->toArray($getuserDetails);
|
|
|
|
}
|
|
|
|
|
|
$numberOfAttempts++;
|
|
$this->otp_attempts->store($loyalty_card[0]['lcard_id'],$request->get('otp'));
|
|
$this->lcard_logs->log($loyalty_card[0]['lcard_id'],'OTP','ATTEMPT','Member entered otp '.$request->get('otp'));
|
|
|
|
// check if correct
|
|
|
|
$otpLog = $this->otp_logs->getByField(['lcard_id' => $loyalty_card[0]['lcard_id'], 'otp' => $request->get('otp')]);
|
|
//var_dump($otpLog);
|
|
if(count($otpLog))
|
|
{
|
|
$latestOtp = $this->otp_logs->getLastLog($loyalty_card[0]['lcard_id']);
|
|
|
|
// checks if otp entered is expired and it's the latest otp created
|
|
if(!StringHelper::check_time_exceeded($otpLog[0]['created_at'],'+5 minutes') || $latestOtp->otp != $request->get('otp'))
|
|
{
|
|
if($numberOfAttempts >= 3)
|
|
{
|
|
return $this->format->mobile_error('You have entered the wrong OTP for 3 times. Your account is now locked for 24 hours, call or email customer service.',$this->lock_member($loyalty_card));
|
|
}
|
|
|
|
return $this->format->mobile_error('The OTP you have entered has already expired. Please select the Resend OTP option',['code' => 3]);
|
|
}
|
|
else
|
|
{
|
|
if($loyalty_card[0]['cyware_synced'] == 0)
|
|
{
|
|
$cyware_response = $this->cyware_activate($loyalty_card[0]);
|
|
|
|
if($cyware_response['success'] == true && isset($cyware_response['data']))
|
|
{
|
|
$this->loyalty_card->cyware_activate($loyalty_card[0]['lcard_id'],$cyware_response['data']);
|
|
$this->user->store_member($cyware_response['data']);
|
|
$this->lcard_logs->log($loyalty_card[0]['lcard_id'],'LOGIN','ACTIVATE','Member activated a card');
|
|
}
|
|
else
|
|
{
|
|
return $this->format->mobile_error($cyware_response['message']);
|
|
}
|
|
}
|
|
|
|
|
|
if(Auth::attempt([ 'username' => $loyalty_card[0]['card_number'], 'password' => $loyalty_card[0]['birthdate']->toDateString() ]))
|
|
{
|
|
|
|
if($loyalty_card[0]['is_validated'] == 0)
|
|
{
|
|
$this->loyalty_card->validateMember($loyalty_card[0]['lcard_id']);
|
|
$this->mobile_usage->add_active();
|
|
}
|
|
|
|
$mpin = $this->mpin_codes->getMpin($loyalty_card[0]['card_number']);
|
|
|
|
$this->otp_logs->setUsed($latestOtp->otplog_id);
|
|
|
|
$user = Auth::user();
|
|
$success['is_valid'] = 1;
|
|
// $success['token'] = $user->createToken('Mobile')->accessToken; // for multiple login
|
|
|
|
// ---------------------------------------------------------------- new login start
|
|
|
|
$data = [
|
|
'grant_type' => 'password',
|
|
'client_id' => env("PASSPORT_ADMIN_CLIENT_ID", 2),
|
|
'client_secret' => env("PASSPORT_ADMIN_CLIENT_SECRET", "test"),
|
|
'username' => $loyalty_card[0]['card_number'],
|
|
'password' => $loyalty_card[0]['birthdate']->toDateString(),
|
|
'scope' => ''
|
|
];
|
|
|
|
// dd($data);
|
|
|
|
$request = Request::create('/oauth/token', 'POST', $data);
|
|
$result = app()->handle($request)->getContent();
|
|
$result = json_decode($result);
|
|
|
|
|
|
$success['token'] = $result->access_token;
|
|
$success['userDetails'] = $userDetails;
|
|
if($mpin){
|
|
$success['userDetails']['mpin'] = $mpin->mpin_code;
|
|
}
|
|
// ---------------------------------------------------------------- new login end
|
|
|
|
$this->lcard_logs->log($loyalty_card[0]['lcard_id'],'LOGIN','LOGIN','Member successfully logs in');
|
|
return $this->format->mobile_success('Sucess',$success,$data);
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if($numberOfAttempts >= 3)
|
|
{
|
|
return $this->format->mobile_error('You have entered the wrong OTP for 3 times. Your account is now locked for 24 hours, call or email customer service.',$this->lock_member($loyalty_card));
|
|
}
|
|
|
|
return $this->format->mobile_error('Incorrect OTP. The OTP you have entered does not exist.',['code' => 2]);
|
|
}
|
|
}
|
|
}
|
|
|
|
private function cyware_activate($loyalty_card)
|
|
{
|
|
$err = '';
|
|
|
|
$cyware = new CywareLibrary();
|
|
$cyware->setCardNumber($loyalty_card['card_number']);
|
|
$cyware->setPin($loyalty_card['pin']);
|
|
$cyware->setFirstName($loyalty_card['personalDetails']['firstname']);
|
|
$cyware->setLastName($loyalty_card['personalDetails']['lastname']);
|
|
$cyware->setBirthday(date('Ymd',strtotime($loyalty_card['birthdate'])));
|
|
$cyware->setMobile($loyalty_card['mobile']);
|
|
$cyware->setEmail($loyalty_card['email']);
|
|
$cyware->state_entry();
|
|
|
|
if ($cyware->response['status_code'] == 200 && $cyware->response['message'] == 'success')
|
|
{
|
|
$cyware->state_validate();
|
|
|
|
if ($cyware->response['status_code'] == 200 && $cyware->response['data'] != null)
|
|
{
|
|
return ['success' => true , 'data' => $cyware->response['data']];
|
|
}
|
|
else
|
|
$err = $cyware->response['message'];
|
|
|
|
}
|
|
else
|
|
$err = $cyware->response['message'];
|
|
|
|
return ['success' => false , 'message' => $err];
|
|
}
|
|
|
|
private function lock_member($loyalty_card)
|
|
{
|
|
$this->loyalty_card->lockMember($loyalty_card[0]['lcard_id'],'01');
|
|
$this->lcard_logs->log($loyalty_card[0]['lcard_id'],'OTP','LOCKED','Account is locked due to wrong OTP entered for 3 times during login');
|
|
$this->mobile_usage->add_locked();
|
|
|
|
$customer_service_email = $this->system_preferences->getByField('name','contact_email_address_mobile');
|
|
$customer_service_number = $this->system_preferences->getByField('name','contact_number_mobile');
|
|
|
|
return [
|
|
'code' => 1,
|
|
'email' => $customer_service_email[0]['value'],
|
|
'number' => $customer_service_number[0]['value'],
|
|
];
|
|
}
|
|
|
|
public function mobile_validatePin(Request $request)
|
|
{
|
|
$cyware = new CywareLibrary();
|
|
$cyware->setCardNumber($request->get('card_number'));
|
|
$cyware->setPin($request->get('pin'));
|
|
$cyware->state_entry();
|
|
|
|
if ($cyware->response['status_code'] == "200" && $cyware->response['message'] == 'First name is required')
|
|
{
|
|
return $this->format->mobile_success('Success');
|
|
}
|
|
else
|
|
{
|
|
return $this->format->mobile_error($cyware->response['message']);
|
|
}
|
|
}
|
|
|
|
public function mobile_activateCard(LoginActivateCardFormValidation $request)
|
|
{
|
|
// check if exists
|
|
$loyalty_card = $this->loyalty_card->getByField([
|
|
'card_number' => $request->card_number,
|
|
'cyware_synced' => 0,
|
|
'is_active' => 1
|
|
],'personalDetails');
|
|
|
|
if(count($loyalty_card) > 0)
|
|
{
|
|
$pd_id = $this->personal_details->update_non_cyware_synced($loyalty_card[0]['pd_id'],$request);
|
|
$lcard_store = $this->loyalty_card->update_non_cyware_synced($loyalty_card[0]['lcard_id'], $request);
|
|
$this->lcard_logs->log($loyalty_card[0]['lcard_id'],'LOGIN','UPDATE','Member updated form for card activation');
|
|
}
|
|
else
|
|
{
|
|
$pd_id = $this->personal_details->store($request);
|
|
$lcard_store = $this->loyalty_card->store($pd_id, $request);
|
|
$this->lcard_logs->log($lcard_store['lcard_id'],'LOGIN','STORE','Member filed for card activation');
|
|
|
|
// ------ send OTP start
|
|
$loyalty_card = $this->loyalty_card->getByField([
|
|
'lcard_uuid' => $lcard_store['lcard_uuid'],
|
|
'is_active' => 1
|
|
]);
|
|
}
|
|
|
|
|
|
|
|
if(count($loyalty_card))
|
|
{
|
|
// reset otp_attempts
|
|
$this->otp_attempts->delete($loyalty_card[0]['lcard_id']);
|
|
|
|
if(env("M360_ENV", 'TEST') == 'LOCAL')
|
|
$otp = 1234;
|
|
else
|
|
$otp = StringHelper::random_num(4);
|
|
|
|
|
|
$content = 'Your Unioil Mobile Application OTP Code is '.$otp;
|
|
$transid = date('YmdHis').$loyalty_card[0]['lcard_id'];
|
|
|
|
$m360 = new M360();
|
|
|
|
$m360->set_msisdn($loyalty_card[0]['mobile']);
|
|
$m360->set_content($content);
|
|
$m360->set_rcvd_transid($transid);
|
|
$m360->send();
|
|
|
|
if($m360->success())
|
|
{
|
|
// error_log('SMS Sent Activation!');
|
|
$data = [
|
|
'otp' => $otp,
|
|
'msisdn' => $loyalty_card[0]['mobile'],
|
|
'content' => $content,
|
|
'rcvd_transid' => $transid,
|
|
'transid' => $m360->get_transid()
|
|
];
|
|
|
|
if($this->otp_logs->store($loyalty_card[0]['lcard_id'],$data))
|
|
{
|
|
$this->lcard_logs->log($loyalty_card[0]['lcard_id'],'OTP','GENERATE','Member requested to generate an OTP');
|
|
return $this->format->mobile_success('Success',[
|
|
'mobile_number' => $loyalty_card[0]['mobile'],
|
|
'lcard_uuid' => $loyalty_card[0]['lcard_uuid'],
|
|
]);
|
|
}
|
|
else
|
|
{
|
|
return $this->format->mobile_error('Something went wrong');
|
|
}
|
|
}
|
|
else
|
|
{
|
|
// return $this->format->mobile_error($m360->get_response_name(),$m360->get_response_message());
|
|
return $this->format->mobile_error('There was a problem sending your OTP. Please try again.',$m360->get_response_message());
|
|
}
|
|
}
|
|
else
|
|
{
|
|
return $this->format->mobile_error('User doesn\'t exist');
|
|
}
|
|
// ------ send OTP end
|
|
|
|
|
|
}
|
|
|
|
public function logout_mobile()
|
|
{
|
|
|
|
if (Auth::check()) {
|
|
$this->lcard_logs->log(0,'LOGIN','LOGOUT','Member logged out');
|
|
$this->loyalty_card->remove_deviceuuid(Auth::user()->username);
|
|
// Auth::user()->AauthAcessToken()->delete();
|
|
Auth::user()->token()->revoke();
|
|
return $this->format->mobile_success("Logout Success");
|
|
}
|
|
}
|
|
|
|
|
|
public function checkTime()
|
|
{
|
|
echo date('Y-m-d H:i:s').'<br>';
|
|
echo config('app.timezone');
|
|
}
|
|
|
|
public function convertmd5()
|
|
{
|
|
echo md5(request('value'));
|
|
}
|
|
|
|
public function checkOTP($card_number)
|
|
{
|
|
|
|
$loyalty_card = $this->loyalty_card->getByField([
|
|
'card_number' => $card_number,
|
|
'is_active' => 1,
|
|
]);
|
|
|
|
if(count($loyalty_card)>0)
|
|
{
|
|
$logs = $this->otp_logs->getLastLog_limit(1, $loyalty_card[0]->lcard_id);
|
|
|
|
if(count($logs) > 0)
|
|
{
|
|
foreach ($logs as $k => $v)
|
|
{
|
|
echo '
|
|
<h1>'.$v->otp.'</h1>
|
|
<b>'.($v->used == 1 ? 'used' : 'not used').'</b>
|
|
'.date('F d, Y h:i A',strtotime($v->created_at)).'
|
|
<br>
|
|
|
|
';
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
echo 'Card Number doesn\'t exists';
|
|
}
|
|
}
|
|
//check mobile number already exist
|
|
public function checkMobile($mobile)
|
|
{
|
|
|
|
$loyalty_card = $this->loyalty_card->getByField([
|
|
'mobile' => $mobile,
|
|
'is_active' => 1,
|
|
]);
|
|
|
|
if(count($loyalty_card)>0)
|
|
{
|
|
return $this->format->mobile_error('Mobile number already used.');
|
|
}
|
|
else
|
|
{
|
|
return $this->format->mobile_success("Mobile number is valid.");
|
|
}
|
|
}
|
|
|
|
//todo delete for testing only
|
|
public function state_validate()
|
|
{
|
|
$cyware = new CywareLibrary();
|
|
$cyware->setCardNumber($_GET['as']);
|
|
$cyware->setBirthday('19800222');
|
|
$cyware->state_validate();
|
|
|
|
if ($cyware->response['data'] == "200"){
|
|
return $this->format->success("curl success",$cyware->response['data']);
|
|
}else{
|
|
return $this->format->success($cyware->response['message'],$cyware->response['data']);
|
|
}
|
|
}
|
|
|
|
public function state_entry()
|
|
{
|
|
$cyware = new CywareLibrary();
|
|
$cyware->setCardNumber('1100000000000001');
|
|
$cyware->setFirstName('vic');
|
|
$cyware->setLastName('vic');
|
|
$cyware->setBirthday('19991010');
|
|
$cyware->setMobile('639178032215'); // must have 63
|
|
$cyware->setEmail('gasdga@fasd.com');
|
|
$cyware->setPin('99798722');
|
|
$cyware->state_entry();
|
|
$cyware->state_entry();
|
|
|
|
if ($cyware->response['data'] == "200"){
|
|
return $this->format->success("curl success",$cyware->response['data']);
|
|
}else{
|
|
return $this->format->success($cyware->response['message'],$cyware->response['data']);
|
|
}
|
|
}
|
|
|
|
public function state_trans()
|
|
{
|
|
$cyware = new CywareLibrary();
|
|
$cyware->setCardNumber('1100000000000001');
|
|
$cyware->setStartDate('20180101');
|
|
$cyware->setEndDate('20181231');
|
|
$cyware->state_trans();
|
|
|
|
if ($cyware->response['data'] == "200"){
|
|
return $this->format->success("curl success",$cyware->response['data']);
|
|
}else{
|
|
return $this->format->success($cyware->response['message'],$cyware->response['data']);
|
|
}
|
|
}
|
|
|
|
//this func is not yet available in phase 1 / but just in case
|
|
public function state_promo()
|
|
{
|
|
$cyware = new CywareLibrary();
|
|
$cyware->setCardNumber('1100000000000001');
|
|
$cyware->state_promo();
|
|
|
|
if ($cyware->response['data'] == "200"){
|
|
return $this->format->success("curl success",$cyware->response['data']);
|
|
}else{
|
|
return $this->format->success($cyware->response['message'],$cyware->response['data']);
|
|
}
|
|
}
|
|
|
|
public function state_retrieve()
|
|
{
|
|
$cyware = new CywareLibrary();
|
|
$cyware->setCardNumber('1100000000000001');
|
|
$cyware->state_retrieve();
|
|
|
|
if ($cyware->response['data'] == "200"){
|
|
return $this->format->success("curl success",$cyware->response['data']);
|
|
}else{
|
|
return $this->format->success($cyware->response['message'],$cyware->response['data']);
|
|
}
|
|
}
|
|
|
|
public function StateRetrieve($data){
|
|
$newData = $data->getData();
|
|
$mainData = [];
|
|
$mainData["lcard_uuid"] = $newData->data->lcard_uuid;
|
|
$mainData["card_number"] = $newData->data->card_number;
|
|
$mainData["pin"] = $newData->data->pin;
|
|
$mainData["birthdate"] = $newData->data->birthdate;
|
|
$mainData["mobile"] = $newData->data->mobile;
|
|
$mainData["email"] = $newData->data->email;
|
|
$mainData["firstname"] = $newData->data->firstname;
|
|
$mainData["lastname"] = $newData->data->lastname;
|
|
$mainData["photo"] = $newData->data->photo;
|
|
$mainData["card_type"] = $newData->data->card_type;
|
|
$mainData["card_code"] = $newData->data->card_code;
|
|
$mainData["card_image"] = $newData->data->card_image;
|
|
$mainData["card_bg_image"] = $newData->data->card_bg_image;
|
|
$mainData["card_black_label"] = $newData->data->card_black_label;
|
|
$mainData["expiry_date"] = $newData->data->expiry_date;
|
|
$mainData["points"] = $newData->data->points;
|
|
//DATA THAT MUST GET FROM STATE RETRIEVE
|
|
$mainData["middlename"] = $newData->retrieved->middle_initial;
|
|
$mainData["city_name"] = $newData->retrieved->address;
|
|
$mainData["address"] = $newData->retrieved->address;
|
|
$mainData["civilstatus_code"] = $newData->retrieved->civil_status_code;
|
|
$mainData["gender_code"] = $newData->retrieved->gender_code;
|
|
$mainData["vo_code"] = $newData->retrieved->vehicle_own_code;
|
|
$mainData["fueltype_code"] = $newData->retrieved->fuel_type_code;
|
|
//$mainData['log'] = "start:".$datestart." ---- end:".$dateend;
|
|
$newData->data = $mainData;
|
|
return response()->json($newData);
|
|
}
|
|
|
|
|
|
public function state_update()
|
|
{
|
|
$cyware = new CywareLibrary();
|
|
|
|
$cyware->setCardNumber('1100000000000001');
|
|
$cyware->setFirstName('vic');
|
|
$cyware->setLastName('abalos');
|
|
$cyware->setAddress('dun');
|
|
$cyware->setMobile('639178032215');
|
|
$cyware->setEmail('email@gmaill.com');
|
|
$cyware->setCivilStatusCode('S');
|
|
$cyware->setGenderCode('0');
|
|
$cyware->setCivilStatusCode('S');
|
|
$cyware->setFuelType('1');
|
|
|
|
|
|
|
|
$cyware->state_update();
|
|
|
|
if ($cyware->response['data'] == "200"){
|
|
return $this->format->success("curl success",$cyware->response['data']);
|
|
}else{
|
|
return $this->format->success($cyware->response['message'],$cyware->response['data']);
|
|
}
|
|
}
|
|
|
|
public function state_points()
|
|
{
|
|
$cyware = new CywareLibrary();
|
|
|
|
$cyware->setCardNumber('1100000000000001');
|
|
$cyware->setSiNum(rand(1000,3000));
|
|
$cyware->setTotalAmount('100');
|
|
$cyware->state_points();
|
|
|
|
if ($cyware->response['data'] == "200"){
|
|
return $this->format->success("curl success",$cyware->response['data']);
|
|
}else{
|
|
return $this->format->success($cyware->response['message'],$cyware->response['data']);
|
|
}
|
|
}
|
|
|
|
public function state_redeemed()
|
|
{
|
|
$cyware = new CywareLibrary();
|
|
$cyware->setCardNumber('1100000000000001');
|
|
$cyware->setStartDate('20180101');
|
|
$cyware->setEndDate('20181231');
|
|
$cyware->state_redeemed();
|
|
|
|
if ($cyware->response['data'] == "200"){
|
|
return $this->format->success("curl success",$cyware->response['data']);
|
|
}else{
|
|
return $this->format->success($cyware->response['message'],$cyware->response['data']);
|
|
}
|
|
}
|
|
|
|
|
|
public function stations_fuel_prices()
|
|
{
|
|
$cyware = new StratuscastLibrary();
|
|
$cyware->getAllFuelPrice();
|
|
|
|
if ($cyware->response['status_code'] == "200"){
|
|
return $this->format->success("curl success",$cyware->response['data']);
|
|
}
|
|
}
|
|
|
|
public function station_fuel_price_station()
|
|
{
|
|
$cyware = new StratuscastLibrary();
|
|
$cyware->getFuelPriceBystation($_GET['station']);
|
|
|
|
if ($cyware->response['status_code'] == "200"){
|
|
return $this->format->success("curl success",$cyware->response['data']);
|
|
}
|
|
}
|
|
|
|
public function city_provinces()
|
|
{
|
|
$cyware = new StratuscastLibrary();
|
|
$cyware->getCityAndProvince();
|
|
|
|
if ($cyware->response['status_code'] == "200"){
|
|
return $this->format->success("curl success",$cyware->response['data']);
|
|
}
|
|
}
|
|
|
|
public function city()
|
|
{
|
|
$cyware = new StratuscastLibrary();
|
|
$cyware->getCity();
|
|
if ($cyware->response['status_code'] == "200"){
|
|
return $this->format->success("curl success",$cyware->response['data']);
|
|
}
|
|
}
|
|
public function province()
|
|
{
|
|
$cyware = new StratuscastLibrary();
|
|
$cyware->getProvince();
|
|
if ($cyware->response['status_code'] == "200"){
|
|
return $this->format->success("curl success",$cyware->response['data']);
|
|
}
|
|
}
|
|
|
|
public function aboutus()
|
|
{
|
|
$cyware = new StratuscastLibrary();
|
|
$cyware->getAboutUs();
|
|
if ($cyware->response['status_code'] == "200"){
|
|
return $this->format->success("curl success",$cyware->response['data']);
|
|
}
|
|
}
|
|
|
|
public function product()
|
|
{
|
|
$cyware = new StratuscastLibrary();
|
|
$cyware->getProduct($_GET['id']);
|
|
if ($cyware->response['status_code'] == "200"){
|
|
return $this->format->success("curl success",$cyware->response['data']);
|
|
}
|
|
}
|
|
|
|
public function checkmobileotp($mobile){
|
|
|
|
$mobile = $mobile != null ? $mobile: "";
|
|
|
|
$lastlog = $this->otp_logs->getLastLogByNumber($mobile);
|
|
|
|
if($lastlog){
|
|
return $lastlog->content;
|
|
}
|
|
return "Sorry, this request is not available or no data found";
|
|
}
|
|
|
|
|
|
}
|