From 02db72067df4aaea19b2c61a9da97020c62d6eaa Mon Sep 17 00:00:00 2001 From: Djery-Tom Date: Mon, 4 Oct 2021 12:01:26 +0100 Subject: [PATCH] Add route to fix refund amount on network UBA Frequence Service --- ...mountImport.php => RefundAmountExport.php} | 2 +- app/Http/Controllers/HelperController.php | 38 ++++++++++++++++-- app/Imports/RefundAmountImport.php | 20 +++++++++ app/Traits/ApiResponser.php | 14 +++---- storage/refund.xlsx | Bin 0 -> 14568 bytes 5 files changed, 63 insertions(+), 11 deletions(-) rename app/Exports/{RefundAmountImport.php => RefundAmountExport.php} (89%) create mode 100644 app/Imports/RefundAmountImport.php create mode 100644 storage/refund.xlsx diff --git a/app/Exports/RefundAmountImport.php b/app/Exports/RefundAmountExport.php similarity index 89% rename from app/Exports/RefundAmountImport.php rename to app/Exports/RefundAmountExport.php index 61b7413..dfef463 100644 --- a/app/Exports/RefundAmountImport.php +++ b/app/Exports/RefundAmountExport.php @@ -7,7 +7,7 @@ use Maatwebsite\Excel\Concerns\ShouldAutoSize; use Maatwebsite\Excel\Concerns\WithColumnFormatting; use PhpOffice\PhpSpreadsheet\Style\NumberFormat; -class RefundAmountImport implements FromArray, WithColumnFormatting, ShouldAutoSize +class RefundAmountExport implements FromArray, WithColumnFormatting, ShouldAutoSize { protected $data; diff --git a/app/Http/Controllers/HelperController.php b/app/Http/Controllers/HelperController.php index 24a98ce..1605d71 100755 --- a/app/Http/Controllers/HelperController.php +++ b/app/Http/Controllers/HelperController.php @@ -2,7 +2,8 @@ namespace App\Http\Controllers; -use App\Exports\RefundAmountImport; +use App\Exports\RefundAmountExport; +use App\Imports\RefundAmountImport; use App\Jobs\TestJob; use App\Models\AgentPlus; use App\Models\ConfigWallet; @@ -17,7 +18,9 @@ use App\Traits\ApiResponser; use App\Traits\Helper; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; +use Illuminate\Support\Facades\Log; use Maatwebsite\Excel\Facades\Excel; +use Throwable; class HelperController extends Controller { @@ -151,7 +154,7 @@ class HelperController extends Controller return $this->successResponse($codes); } - public function fixTransactionAmount() + public function calculateTransactionAmount() { $data = [['ID Wallet', 'Agent', 'Contact', 'Role', 'Parrain', 'Nombre de transactions', 'Montant à rembourser']]; // Calcul du montant a prelever pour tous les agents loc du reseau iLink World @@ -185,8 +188,37 @@ class HelperController extends Controller } } - $export = new RefundAmountImport($data); + $export = new RefundAmountExport($data); return Excel::download($export, 'refund.xlsx'); } + + public function fixTransactionAmount() + { + $data = Excel::toArray(new RefundAmountImport, storage_path('refund.xlsx')); + $result = []; + foreach ($data[0] as $key => $row) { + if ($key > 0) { + array_push($result, $row); + } + } + + try { + DB::beginTransaction(); + // Fix amount + foreach ($result as $r) { + if (isset($r[6])) { + $wallet = Wallet::find($r[0]); + $wallet->balance_com -= $r[6]; + $wallet->save(); + } + } + DB::commit(); + return $this->successResponse(trans('messages.success_treated_demand')); + } catch (Throwable $exception) { + DB::rollBack(); + Log::error($exception->getMessage()); + return $this->errorResponse(trans('errors.unexpected_error')); + } + } } diff --git a/app/Imports/RefundAmountImport.php b/app/Imports/RefundAmountImport.php new file mode 100644 index 0000000..fcc1715 --- /dev/null +++ b/app/Imports/RefundAmountImport.php @@ -0,0 +1,20 @@ +data = $data; +// } + + public function array(array $array) + { + // TODO: Implement array() method. + } +} diff --git a/app/Traits/ApiResponser.php b/app/Traits/ApiResponser.php index ff4f5f0..17e1300 100755 --- a/app/Traits/ApiResponser.php +++ b/app/Traits/ApiResponser.php @@ -34,16 +34,16 @@ trait ApiResponser public function errorResponse($message, $code = Response::HTTP_BAD_REQUEST) { - return response()->json($this->formatResponse($code,null,$message), $code); + return response()->json($this->formatResponse($code, null, $message), $code); } - public function errorMessage($message , $code) - { - return response($message ,$code)->header('Content-Type', 'application/json'); - } +// public function errorMessage($message , $code) +// { +// return response($message ,$code)->header('Content-Type', 'application/json'); +// } - private function formatResponse(int $status, $response = null , $error = null) + private function formatResponse(int $status, $response = null, $error = null) { - return ['status' => $status , 'response' => $response , 'error' => $error]; + return ['status' => $status, 'response' => $response, 'error' => $error]; } } diff --git a/storage/refund.xlsx b/storage/refund.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..059ddf09c13ea095a920e3515b490c5d976b193a GIT binary patch literal 14568 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 yzh%LHz+^c84gP;b!oOMm9y