$id_agent]); // Create wallet if is not exist $category = null; if($networks){ $reload = false; $id = $id_agent; foreach ($networks as $network){ $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); } // Return only single wallet if it is hypervisor or supervisor if(in_array( $category , ['hyper','super'])){ // Remove unnecessary fields $networks = $this->array_except($networks,['id_networkAgent','category']); return $this->successResponse(collect($networks)->first()); }else{ // Remove unnecessary fields $networks = $this->array_except($networks,['id_networkAgent','category','balance_princ','balance_com','created_date','taux_com_client_depot']); return $this->successResponse($networks); } } private function array_except($array, $keys){ foreach ($array as $row){ foreach($keys as $key){ unset($row->$key); } } return $array; } public function show($id_wallet) { // $wallet = Wallet::findOrFail($id_wallet); $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, 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 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); } 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]); return $this->successResponse(trans('messages.new_wallet_added')); } // 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) { return $this->successResponse($wallet); } else return $this->errorResponse(trans('errors.model_not_found', ['model' => 'wallet']), Response::HTTP_BAD_REQUEST); } //Les historiques globals des hyperviseur et superviseur public function hyperHistory($id_network, Request $request) { $demandes = DB::select("SELECT 'N' as type_historique, i.montant , i.user as destinataire , i.* FROM infos_users_demandes_credits i WHERE id_network = :id ;", ['id' => $id_network]); $savings = DB::select("SELECT 'E' as type_historique , i.montant , i.user as destinataire , i.* FROM infos_users_epargnes i WHERE id_network = :id;", ['id' => $id_network]); $transactions = DB::select("SELECT 'T' as type_historique, wit.id_transaction, tit.nom as operation , wit.montant ,wit.nom_emetteur, wit.prenom_emetteur, wit.id_wallet_user,wit.frais,wit.taxe,wit.id_destinataire, wit.nom_destinataire, wit.prenom_destinataire, wit.type , wit.id_wallet_user, wit.init_country, wit.final_country , wit.network_destinataire , wit.montant_net_final_country , wit.date as date_creation , wit.id , wit.numero_carte, wit.montant_net FROM wallet_ilink_transaction wit INNER JOIN type_ilink_transaction tit ON wit.type = tit.id WHERE wit.network_emetteur = :id ;", ['id' => $id_network]); $transactions_mapped = array_map(function ($data) { $date = $data->date_creation; unset($data->date_creation); $wallet_user = isset($data->id_wallet_user) ? WalletsUser::findOrFail($data->id_wallet_user) : null; $user_destinataire = isset($data->id_destinataire) ? User::where('user_code', $data->id_destinataire)->first() : null; $emetteur = $wallet_user ? $wallet_user->user->lastname . ' ' . $wallet_user->user->firstname : $data->prenom_emetteur . ' ' . $data->nom_emetteur; if (!$wallet_user && !$data->nom_emetteur) $emetteur = $data->numero_carte; $destinataire = in_array($data->type, [12, 16]) ? $emetteur : ($user_destinataire ? $user_destinataire->lastname . ' ' . $user_destinataire->firstname : $data->prenom_destinataire . ' ' . $data->nom_destinataire); $data->emetteur = $emetteur; $data->destinataire = $destinataire; $data->frais = $this->toMoney($data->frais + $data->taxe, $data->init_country); $data->montant_net_init = $this->toMoney($data->montant_net, $data->init_country); $data->montant_net_final = $data->montant_net_final_country ? $this->toMoney($data->montant_net_final_country, $data->final_country) : $data->montant_net_init; $data->montant2 = $this->toMoney($data->montant, $data->init_country); $data->init_country = $this->getCountryName($data->init_country); $data->final_country = $data->montant_net_final_country ? $this->getCountryName($data->final_country) : ''; $data->reseau_payeur = isset($data->network_destinataire) ? $this->getNetworkName($data->network_destinataire) . ' ' . $data->final_country : null; if ($data->type == 13) $data->destinataire = $data->numero_carte; if (ctype_space($data->destinataire)) { $data->destinataire = $data->emetteur; } $data->date_creation = $date; unset($data->type, $data->id_wallet_user, $data->network_destinataire, $data->nom_destinataire, $data->prenom_destinataire, $data->taxe, $data->numero_carte, $data->montant_net_final_country, $data->montant_net, $data->nom_emetteur, $data->prenom_emetteur, $data->id_destinataire); return $data; }, $transactions); // Supprimer les underscore sur les etats $merge = array_map(function ($demand) { $demand->etat = str_replace('_', ' ', $demand->etat); return $demand; }, array_merge($demandes, $savings)); $result = array_merge($transactions_mapped, $merge); usort($result, array($this, 'sortFunction')); // Trier le tout par date return $this->successResponse($this->arrayPaginator($result, $request)); } public function superHistory($id_wallet, Request $request) { $walletSup = WalletAgent::where('wallet_id', $id_wallet)->firstOrFail(); $demandes = DB::select("SELECT 'N' as type_historique , i.montant ,i.user as destinataire , i.* FROM infos_users_demandes_credits i WHERE codeParrain = :code ;", ['code' => $walletSup->codeMembre]); $transactions = DB::select("SELECT 'T' as type_historique, wit.id_transaction, tit.nom as operation , wit.montant ,wit.nom_emetteur, wit.prenom_emetteur, wit.id_wallet_user,wit.frais,wit.taxe,wit.id_destinataire, wit.nom_destinataire, wit.prenom_destinataire, wit.type , wit.id_wallet_user, wit.init_country, wit.final_country , wit.network_destinataire , wit.montant_net_final_country , wit.date as date_creation , wit.id , wit.numero_carte, wit.montant_net FROM wallet_ilink_transaction wit INNER JOIN type_ilink_transaction tit ON wit.type = tit.id WHERE wit.id_wallet_sup = :id ;", ['id' => $id_wallet]); $transactions_mapped = array_map(function ($data) { $date = $data->date_creation; unset($data->date_creation); $wallet_user = isset($data->id_wallet_user) ? WalletsUser::findOrFail($data->id_wallet_user) : null; $user_destinataire = isset($data->id_destinataire) ? User::where('user_code', $data->id_destinataire)->first() : null; $emetteur = $wallet_user ? $wallet_user->user->lastname . ' ' . $wallet_user->user->firstname : $data->prenom_emetteur . ' ' . $data->nom_emetteur; if (!$wallet_user && !$data->nom_emetteur) $emetteur = $data->numero_carte; $destinataire = in_array($data->type, [12, 16]) ? $emetteur : ($user_destinataire ? $user_destinataire->lastname . ' ' . $user_destinataire->firstname : $data->prenom_destinataire . ' ' . $data->nom_destinataire); $data->emetteur = $emetteur; $data->destinataire = $destinataire; $data->frais = $this->toMoney($data->frais + $data->taxe, $data->init_country); $data->montant_net_init = $this->toMoney($data->montant_net, $data->init_country); $data->montant_net_final = $data->montant_net_final_country ? $this->toMoney($data->montant_net_final_country, $data->final_country) : $data->montant_net_init; $data->montant2 = $this->toMoney($data->montant, $data->init_country); $data->init_country = $this->getCountryName($data->init_country); $data->final_country = $data->montant_net_final_country ? $this->getCountryName($data->final_country) : ''; $data->reseau_payeur = isset($data->network_destinataire) ? $this->getNetworkName($data->network_destinataire) . ' ' . $data->final_country : null; if ($data->type == 13) $data->destinataire = $data->numero_carte; $data->date_creation = $date; unset($data->type, $data->id_wallet_user, $data->network_destinataire, $data->nom_destinataire, $data->prenom_destinataire, $data->taxe, $data->numero_carte, $data->montant_net_final_country, $data->montant_net, $data->nom_emetteur, $data->prenom_emetteur, $data->id_destinataire); return $data; }, $transactions); // Supprimer les underscore sur les etats $demandes_mapped = array_map(function ($demand) { $demand->etat = str_replace('_', ' ', $demand->etat); return $demand; }, $demandes); $result = array_merge($transactions_mapped, $demandes_mapped); usort($result, array($this, 'sortFunction')); // Trier le tout par date return $this->successResponse($this->arrayPaginator($result, $request)); } // Routes sans pagination public function allHyperHistory($id_network) { $demandes = DB::select("SELECT 'N' as type_historique, i.montant , i.user as destinataire , i.* FROM infos_users_demandes_credits i WHERE id_network = :id ;", ['id' => $id_network]); $savings = DB::select("SELECT 'E' as type_historique , i.montant , i.user as destinataire , i.* FROM infos_users_epargnes i WHERE id_network = :id;", ['id' => $id_network]); $transactions = DB::select("SELECT 'T' as type_historique, wit.id_transaction, tit.nom as operation , wit.montant ,wit.nom_emetteur, wit.prenom_emetteur, wit.id_wallet_user,wit.frais,wit.taxe,wit.id_destinataire, wit.nom_destinataire, wit.prenom_destinataire, wit.type , wit.id_wallet_user, wit.init_country, wit.final_country , wit.network_destinataire , wit.montant_net_final_country , wit.date as date_creation , wit.id , wit.numero_carte, wit.montant_net FROM wallet_ilink_transaction wit INNER JOIN type_ilink_transaction tit ON wit.type = tit.id WHERE wit.network_emetteur = :id ;", ['id' => $id_network]); $transactions_mapped = array_map(function ($data) { $date = $data->date_creation; unset($data->date_creation); $wallet_user = isset($data->id_wallet_user) ? WalletsUser::findOrFail($data->id_wallet_user) : null; $user_destinataire = isset($data->id_destinataire) ? User::where('user_code', $data->id_destinataire)->first() : null; $emetteur = $wallet_user ? $wallet_user->user->lastname . ' ' . $wallet_user->user->firstname : $data->prenom_emetteur . ' ' . $data->nom_emetteur; if (!$wallet_user && !$data->nom_emetteur) $emetteur = $data->numero_carte; $destinataire = in_array($data->type, [12, 16]) ? $emetteur : ($user_destinataire ? $user_destinataire->lastname . ' ' . $user_destinataire->firstname : $data->prenom_destinataire . ' ' . $data->nom_destinataire); $data->emetteur = $emetteur; $data->destinataire = $destinataire; $data->frais = $this->toMoney($data->frais + $data->taxe, $data->init_country); $data->montant_net_init = $this->toMoney($data->montant_net, $data->init_country); $data->montant_net_final = $data->montant_net_final_country ? $this->toMoney($data->montant_net_final_country, $data->final_country) : $data->montant_net_init; $data->montant2 = $this->toMoney($data->montant, $data->init_country); $data->init_country = $this->getCountryName($data->init_country); $data->final_country = $data->montant_net_final_country ? $this->getCountryName($data->final_country) : ''; $data->reseau_payeur = isset($data->network_destinataire) ? $this->getNetworkName($data->network_destinataire) . ' ' . $data->final_country : null; if ($data->type == 13) $data->destinataire = $data->numero_carte; if (ctype_space($data->destinataire)) { $data->destinataire = $data->emetteur; } $data->date_creation = $date; unset($data->type, $data->id_wallet_user, $data->network_destinataire, $data->nom_destinataire, $data->prenom_destinataire, $data->taxe, $data->numero_carte, $data->montant_net_final_country, $data->montant_net, $data->nom_emetteur, $data->prenom_emetteur, $data->id_destinataire); return $data; }, $transactions); // Supprimer les underscore sur les etats $merge = array_map(function ($demand) { $demand->etat = str_replace('_', ' ', $demand->etat); return $demand; }, array_merge($demandes, $savings)); $result = array_merge($transactions_mapped, $merge); usort($result, array($this, 'sortFunction')); // Trier le tout par date return $this->successResponse($result); } public function allSuperHistory($id_wallet) { $walletSup = WalletAgent::where('wallet_id', $id_wallet)->firstOrFail(); $demandes = DB::select("SELECT 'N' as type_historique, i.montant , i.user as destinataire , i.* FROM infos_users_demandes_credits i WHERE codeParrain = :code ;", ['code' => $walletSup->codeMembre]); $transactions = DB::select("SELECT 'T' as type_historique, wit.id_transaction, tit.nom as operation , wit.montant ,wit.nom_emetteur, wit.prenom_emetteur, wit.id_wallet_user,wit.frais,wit.taxe,wit.id_destinataire, wit.nom_destinataire, wit.prenom_destinataire, wit.type , wit.id_wallet_user, wit.init_country, wit.final_country , wit.network_destinataire , wit.montant_net_final_country , wit.date as date_creation , wit.id , wit.numero_carte, wit.montant_net FROM wallet_ilink_transaction wit INNER JOIN type_ilink_transaction tit ON wit.type = tit.id WHERE wit.id_wallet_sup = :id ;", ['id' => $id_wallet]); $transactions_mapped = array_map(function ($data) { $date = $data->date_creation; unset($data->date_creation); $wallet_user = isset($data->id_wallet_user) ? WalletsUser::findOrFail($data->id_wallet_user) : null; $user_destinataire = isset($data->id_destinataire) ? User::where('user_code', $data->id_destinataire)->first() : null; $emetteur = $wallet_user ? $wallet_user->user->lastname . ' ' . $wallet_user->user->firstname : $data->prenom_emetteur . ' ' . $data->nom_emetteur; if (!$wallet_user && !$data->nom_emetteur) $emetteur = $data->numero_carte; $destinataire = in_array($data->type, [12, 16]) ? $emetteur : ($user_destinataire ? $user_destinataire->lastname . ' ' . $user_destinataire->firstname : $data->prenom_destinataire . ' ' . $data->nom_destinataire); $data->emetteur = $emetteur; $data->destinataire = $destinataire; $data->frais = $this->toMoney($data->frais + $data->taxe, $data->init_country); $data->montant_net_init = $this->toMoney($data->montant_net, $data->init_country); $data->montant_net_final = $data->montant_net_final_country ? $this->toMoney($data->montant_net_final_country, $data->final_country) : $data->montant_net_init; $data->montant2 = $this->toMoney($data->montant, $data->init_country); $data->init_country = $this->getCountryName($data->init_country); $data->final_country = $data->montant_net_final_country ? $this->getCountryName($data->final_country) : ''; $data->reseau_payeur = isset($data->network_destinataire) ? $this->getNetworkName($data->network_destinataire) . ' ' . $data->final_country : null; if ($data->type == 13) $data->destinataire = $data->numero_carte; if (ctype_space($data->destinataire)) { $data->destinataire = $data->emetteur; } $data->date_creation = $date; unset($data->type, $data->id_wallet_user, $data->network_destinataire, $data->nom_destinataire, $data->prenom_destinataire, $data->taxe, $data->numero_carte, $data->montant_net_final_country, $data->montant_net, $data->nom_emetteur, $data->prenom_emetteur, $data->id_destinataire); return $data; }, $transactions); // Supprimer les underscore sur les etats $demandes_mapped = array_map(function ($demand) { $demand->etat = str_replace('_', ' ', $demand->etat); return $demand; }, $demandes); $result = array_merge($transactions_mapped, $demandes_mapped); usort($result, array($this, 'sortFunction')); // Trier le tout par date return $this->successResponse($result); } }