walletservice/app/Http/Controllers/WalletController.php

117 lines
4.8 KiB
PHP
Raw Normal View History

2020-04-15 23:08:09 +00:00
<?php
namespace App\Http\Controllers;
2020-06-01 18:31:25 +00:00
use App\Models\WalletsUser;
2020-04-15 23:08:09 +00:00
use App\Traits\ApiResponser;
2020-06-25 08:01:59 +00:00
use App\Traits\Helper;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
2020-04-15 23:08:09 +00:00
use Illuminate\Support\Facades\DB;
class WalletController extends Controller
{
use ApiResponser;
2020-06-25 08:01:59 +00:00
use Helper;
2020-04-15 23:08:09 +00:00
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
//
}
public function activated($id_agent)
{
2020-09-28 09:43:39 +00:00
$networks = DB::select('SELECT ne.name as network , cc.name AS country, cc.currency_code, w.id, w.balance_princ , w.balance_com, w.created_date, cw.type,
2020-07-07 19:15:30 +00:00
na.id AS id_networkAgent , cw.taux_com_client_depot , na.id AS id_networkAgent , cg.category FROM agents ag
2020-04-21 14:07:57 +00:00
INNER JOIN networks_agents na ON ag.id=na.agent_id INNER JOIN codeGenerer cg ON cg.id=na.codeGenerer_id INNER JOIN networks ne ON ne.id=na.network_id INNER JOIN configWallet cw ON ne.id = cw.id_network
2020-09-28 09:43:39 +00:00
INNER JOIN countries_currencies cc ON ne.country_id=cc.id LEFT JOIN wallets w ON na.id = w.id_networkAgent WHERE ag.id= :id AND network_id IN (
SELECT networks.id FROM networks LEFT JOIN configWallet ON configWallet.id_network = networks.id WHERE status = 1 AND id_network IS NOT NULL)', ['id' => $id_agent]);
2020-04-15 23:08:09 +00:00
// Create wallet if is not exist
2020-05-05 20:42:57 +00:00
$category = null;
if($networks){
$reload = false;
$id = $id_agent;
foreach ($networks as $network){
2020-05-05 20:42:57 +00:00
$category = $network->category;
// Create wallet if is not exist
if(!$network->id){
DB::insert('INSERT INTO wallets (id_networkAgent) VALUES (?);', [$network->id_networkAgent]);
$reload = true;
}
}
if($reload)
return $this->activated($id);
}
2020-05-05 20:42:57 +00:00
2020-05-05 22:29:26 +00:00
2020-05-05 20:42:57 +00:00
// Return only single wallet if it is hypervisor or supervisor
2020-05-05 22:29:26 +00:00
if(in_array( $category , ['hyper','super'])){
// Remove unnecessary fields
$networks = $this->array_except($networks,['id_networkAgent','category']);
2020-05-05 20:42:57 +00:00
return $this->successResponse(collect($networks)->first());
2020-05-05 22:29:26 +00:00
}else{
// Remove unnecessary fields
$networks = $this->array_except($networks,['id_networkAgent','category','balance_princ','balance_com','created_date','taux_com_client_depot']);
2020-05-05 20:42:57 +00:00
return $this->successResponse($networks);
2020-05-05 22:29:26 +00:00
}
}
private function array_except($array, $keys){
foreach ($array as $row){
foreach($keys as $key){
unset($row->$key);
}
}
return $array;
2020-04-15 23:08:09 +00:00
}
public function show($id_wallet)
{
2020-05-05 19:18:08 +00:00
// $wallet = Wallet::findOrFail($id_wallet);
2020-07-07 19:15:30 +00:00
$wallet = collect(DB::select('SELECT wa.wallet_id AS id, wa.balance_princ, wa.balance_com, wa.created_date, wa.network , cw.taux_com_client_depot, c.name AS country, cw.type,
2020-07-04 17:03:59 +00:00
c.currency_code FROM wallet_agent wa INNER JOIN configWallet cw ON wa.network_id = cw.id_network INNER JOIN networks n ON n.id = wa.network_id
INNER JOIN countries_currencies c ON c.id = n.country_id
2020-05-05 19:18:08 +00:00
WHERE wa.wallet_id = :id',['id' => $id_wallet]))->first();
if($wallet)
return $this->successResponse($wallet);
else
return $this->errorResponse(trans('errors.model_not_found',['model'=>'wallet']),Response::HTTP_BAD_REQUEST);
}
2020-04-21 14:07:57 +00:00
public function create(Request $request)
{
$rules = [
'id_networkAgent'=>'required|integer|min:1'
];
$this->validate($request,$rules);
DB::insert('INSERT INTO wallets (id_networkAgent) VALUES (?);', [$request->id_networkAgent]);
2020-04-28 16:12:05 +00:00
return $this->successResponse(trans('messages.new_wallet_added'));
2020-04-21 14:07:57 +00:00
}
2020-06-01 18:31:25 +00:00
// Wallets users iLink
public function showWalletUser($id_user){
$wallet = collect(DB::select('SELECT wu.*, u.user_code , u.numero_carte , u.expiration_date ,n2.name as network , cc.name as country, cc.currency_code from wallets_users wu
INNER JOIN users u ON u.id = wu.idUser
INNER JOIN networks n1 ON n1.id = u.network_id
INNER JOIN networks n2 ON n2.country_id = n1.country_id
INNER JOIN configWallet cw ON cw.id_network = n2.id
INNER JOIN countries_currencies cc ON cc.id = n2.country_id
WHERE wu.idUser = :id_user AND cw.type = \'ilink\' LIMIT 1',['id_user' => $id_user]))->first();
if($wallet){
2020-06-02 08:35:37 +00:00
return $this->successResponse($wallet);
} else
2020-06-02 08:35:37 +00:00
return $this->errorResponse(trans('errors.model_not_found',['model'=>'wallet']),Response::HTTP_BAD_REQUEST);
2020-06-01 18:31:25 +00:00
}
2020-04-15 23:08:09 +00:00
}