<?php
namespace App\Traits\User;
use App\Models\Admin\Currency;
use App\Models\MerchantApiKey;
use App\Models\UserLoginLog;
use App\Models\UserWallet;
use Exception;
use Jenssegers\Agent\Agent;
trait LoggedInUsers {
protected function refreshUserWallets($user) {
if($user->wallet == null || $user->wallet->count() == 0){
$currency = Currency::default();
$wallet= [
'user_id' => $user->id,
'currency_id' => $currency->id,
'balance' => 0,
'status' => true,
];
try{
UserWallet::insert($wallet);
}catch(Exception $e) {
throw new Exception($e->getMessage());
}
}
}
/**
* refresh merchant info
*/
protected function refreshMerchant($user){
$data = MerchantApiKey::where('user_id',$user->id)->first();
if(!$data){
$merchant['user_id'] = $user->id;
$merchant['client_id'] = generate_unique_string_number();
$merchant['secret_id'] = generate_unique_string_number();
$merchant['env'] = global_const()::ENV_SANDBOX;
try{
MerchantApiKey::insert($merchant);
}catch(Exception $e){
throw new Exception("Failed to create merchant! Please try again.");
}
}
}
protected function createLoginLog($user) {
$client_ip = request()->ip() ?? false;
$location = geoip()->getLocation($client_ip);
$agent = new Agent();
$mac = "";
$data = [
'user_id' => $user->id,
'ip' => $client_ip,
'mac' => $mac,
'city' => $location['city'] ?? "",
'country' => $location['country'] ?? "",
'longitude' => $location['lon'] ?? "",
'latitude' => $location['lat'] ?? "",
'timezone' => $location['timezone'] ?? "",
'browser' => $agent->browser() ?? "",
'os' => $agent->platform() ?? "",
];
try{
UserLoginLog::create($data);
}catch(Exception $e) {
// return false;
}
}
}