From 0a87e92f591b15c80a347e66da830013c4797548 Mon Sep 17 00:00:00 2001 From: Omair Saleh Date: Mon, 13 Mar 2023 01:06:29 +0800 Subject: [PATCH 01/27] import bank record --- .../Imports/Services/ImportsBankRecord.php | 73 +++++++++++++++++++ .../Imports/ImportBankRecordController.php | 22 ++++++ routes/web.php | 3 + 3 files changed, 98 insertions(+) create mode 100644 app/Classes/Modules/Imports/Services/ImportsBankRecord.php create mode 100644 app/Http/Controllers/Imports/ImportBankRecordController.php diff --git a/app/Classes/Modules/Imports/Services/ImportsBankRecord.php b/app/Classes/Modules/Imports/Services/ImportsBankRecord.php new file mode 100644 index 00000000..9f74bbd7 --- /dev/null +++ b/app/Classes/Modules/Imports/Services/ImportsBankRecord.php @@ -0,0 +1,73 @@ +where('type', TransactionType::PAYMENT)->where('owner_type', Booking::class) + ->WhereDate('created_at', $date->format('Y-m-d'))->where('amount', '>=', $credit)->where('amount', '<', ($credit + 0.01))->get(); +dd($transaction); + if(!count($transaction)) return; + + dd($transaction); + + dd([ + 'date' => $date, + 'credit' => $credit, + 'payments' => $transaction->pluck('owner.reference') + ]); + + try { + preg_match_all('/([0-9]{3,4}[a-zA-Z]{3,4})/', $row['desc2'], $matches); + + foreach ($matches[0] as $match){ + $reference = $match; + $debtor = $row['code']; + $company = Company::where('reference', $reference)->whereNull('debtor')->first(); + + if ($company) { + $company->debtor = $debtor; + $company->update(); + } + + } + + } catch (\Exception $exception){ + dd($exception); + } + } + + public function batchSize(): int + { + return 100; + } + + public function rules(): array + { + return [ + + ]; + } +} diff --git a/app/Http/Controllers/Imports/ImportBankRecordController.php b/app/Http/Controllers/Imports/ImportBankRecordController.php new file mode 100644 index 00000000..19c3c1ed --- /dev/null +++ b/app/Http/Controllers/Imports/ImportBankRecordController.php @@ -0,0 +1,22 @@ +input('files'), '', ApprovalStatus::APPROVED, 'imports'); + Excel::import(new ImportsBankRecord(), 'daily_transaction_nov.xlsx'); + return []; + } +} diff --git a/routes/web.php b/routes/web.php index fec3f552..df705655 100644 --- a/routes/web.php +++ b/routes/web.php @@ -554,4 +554,7 @@ Route::get('/currency-rate-history', function () { return view('pages.rate_histories')->with('paymentMethods', $paymentMethods); })->name('currency_rate.history'); +Route::get('/bank-record', 'Imports\ImportBankRecordController@import'); + + From 2e4395d649809360d3d264a19ac3c05ac96c5dca Mon Sep 17 00:00:00 2001 From: Omair Saleh Date: Mon, 13 Mar 2023 01:15:42 +0800 Subject: [PATCH 02/27] import bank record --- app/Classes/Modules/Imports/Services/ImportsBankRecord.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Classes/Modules/Imports/Services/ImportsBankRecord.php b/app/Classes/Modules/Imports/Services/ImportsBankRecord.php index 9f74bbd7..fe750c52 100644 --- a/app/Classes/Modules/Imports/Services/ImportsBankRecord.php +++ b/app/Classes/Modules/Imports/Services/ImportsBankRecord.php @@ -28,7 +28,7 @@ class ImportsBankRecord implements ToModel, WithHeadingRow, WithBatchInserts, Wi $transaction = Transaction::whereIn('status', [ApprovalStatus::APPROVED, ApprovalStatus::COMPLETED]) ->where('type', TransactionType::PAYMENT)->where('owner_type', Booking::class) ->WhereDate('created_at', $date->format('Y-m-d'))->where('amount', '>=', $credit)->where('amount', '<', ($credit + 0.01))->get(); -dd($transaction); + if(!count($transaction)) return; dd($transaction); From b474cec411385d6489e079fcba8c4edb07043281 Mon Sep 17 00:00:00 2001 From: Omair Saleh Date: Mon, 13 Mar 2023 01:17:09 +0800 Subject: [PATCH 03/27] import bank record --- app/Classes/Modules/Imports/Services/ImportsBankRecord.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Classes/Modules/Imports/Services/ImportsBankRecord.php b/app/Classes/Modules/Imports/Services/ImportsBankRecord.php index fe750c52..c58c1cc2 100644 --- a/app/Classes/Modules/Imports/Services/ImportsBankRecord.php +++ b/app/Classes/Modules/Imports/Services/ImportsBankRecord.php @@ -23,7 +23,7 @@ class ImportsBankRecord implements ToModel, WithHeadingRow, WithBatchInserts, Wi public function model($row = []) { $date = Date::excelToDateTimeObject($row['date']); - $credit = $row['credit']; + $credit = (float) $row['credit']; $transaction = Transaction::whereIn('status', [ApprovalStatus::APPROVED, ApprovalStatus::COMPLETED]) ->where('type', TransactionType::PAYMENT)->where('owner_type', Booking::class) From 065c35f79a4c0e3547cbc9573a39ecef20773cdb Mon Sep 17 00:00:00 2001 From: Omair Saleh Date: Mon, 13 Mar 2023 01:18:15 +0800 Subject: [PATCH 04/27] import bank record --- app/Classes/Modules/Imports/Services/ImportsBankRecord.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Classes/Modules/Imports/Services/ImportsBankRecord.php b/app/Classes/Modules/Imports/Services/ImportsBankRecord.php index c58c1cc2..56c0d520 100644 --- a/app/Classes/Modules/Imports/Services/ImportsBankRecord.php +++ b/app/Classes/Modules/Imports/Services/ImportsBankRecord.php @@ -31,7 +31,7 @@ class ImportsBankRecord implements ToModel, WithHeadingRow, WithBatchInserts, Wi if(!count($transaction)) return; - dd($transaction); + dd($transaction->pluck('owner.reference')); dd([ 'date' => $date, From 1cbf1a987fce33896cc3851d311f8ab532e812a1 Mon Sep 17 00:00:00 2001 From: Omair Saleh Date: Mon, 13 Mar 2023 01:20:49 +0800 Subject: [PATCH 05/27] import bank record --- .../Modules/Imports/Services/ImportsBankRecord.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/app/Classes/Modules/Imports/Services/ImportsBankRecord.php b/app/Classes/Modules/Imports/Services/ImportsBankRecord.php index 56c0d520..55385c28 100644 --- a/app/Classes/Modules/Imports/Services/ImportsBankRecord.php +++ b/app/Classes/Modules/Imports/Services/ImportsBankRecord.php @@ -27,16 +27,16 @@ class ImportsBankRecord implements ToModel, WithHeadingRow, WithBatchInserts, Wi $transaction = Transaction::whereIn('status', [ApprovalStatus::APPROVED, ApprovalStatus::COMPLETED]) ->where('type', TransactionType::PAYMENT)->where('owner_type', Booking::class) - ->WhereDate('created_at', $date->format('Y-m-d'))->where('amount', '>=', $credit)->where('amount', '<', ($credit + 0.01))->get(); + ->WhereDate('created_at', $date->format('Y-m-d')) + ->where('amount', '>=', $credit)->where('amount', '<', ($credit + 0.01))->get(); if(!count($transaction)) return; - dd($transaction->pluck('owner.reference')); - dd([ + dump([ 'date' => $date, 'credit' => $credit, - 'payments' => $transaction->pluck('owner.reference') + 'payments' => $transaction->pluck('owner.marking') ]); try { From 72e51ee2c57e15e7f62221cd47023d0244db439b Mon Sep 17 00:00:00 2001 From: Omair Saleh Date: Mon, 13 Mar 2023 01:21:39 +0800 Subject: [PATCH 06/27] import bank record --- .../Imports/Services/ImportsBankRecord.php | 36 +++++++++---------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/app/Classes/Modules/Imports/Services/ImportsBankRecord.php b/app/Classes/Modules/Imports/Services/ImportsBankRecord.php index 55385c28..1489e209 100644 --- a/app/Classes/Modules/Imports/Services/ImportsBankRecord.php +++ b/app/Classes/Modules/Imports/Services/ImportsBankRecord.php @@ -39,24 +39,24 @@ class ImportsBankRecord implements ToModel, WithHeadingRow, WithBatchInserts, Wi 'payments' => $transaction->pluck('owner.marking') ]); - try { - preg_match_all('/([0-9]{3,4}[a-zA-Z]{3,4})/', $row['desc2'], $matches); - - foreach ($matches[0] as $match){ - $reference = $match; - $debtor = $row['code']; - $company = Company::where('reference', $reference)->whereNull('debtor')->first(); - - if ($company) { - $company->debtor = $debtor; - $company->update(); - } - - } - - } catch (\Exception $exception){ - dd($exception); - } +// try { +// preg_match_all('/([0-9]{3,4}[a-zA-Z]{3,4})/', $row['desc2'], $matches); +// +// foreach ($matches[0] as $match){ +// $reference = $match; +// $debtor = $row['code']; +// $company = Company::where('reference', $reference)->whereNull('debtor')->first(); +// +// if ($company) { +// $company->debtor = $debtor; +// $company->update(); +// } +// +// } +// +// } catch (\Exception $exception){ +// dd($exception); +// } } public function batchSize(): int From 45000f5bd206d71e3ee99821b71ba4f4e88ef292 Mon Sep 17 00:00:00 2001 From: Omair Saleh Date: Mon, 13 Mar 2023 01:22:49 +0800 Subject: [PATCH 07/27] import bank record --- app/Classes/Modules/Imports/Services/ImportsBankRecord.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Classes/Modules/Imports/Services/ImportsBankRecord.php b/app/Classes/Modules/Imports/Services/ImportsBankRecord.php index 1489e209..6b28efa8 100644 --- a/app/Classes/Modules/Imports/Services/ImportsBankRecord.php +++ b/app/Classes/Modules/Imports/Services/ImportsBankRecord.php @@ -36,7 +36,7 @@ class ImportsBankRecord implements ToModel, WithHeadingRow, WithBatchInserts, Wi dump([ 'date' => $date, 'credit' => $credit, - 'payments' => $transaction->pluck('owner.marking') + 'payments' => $transaction->pluck('owner.marking')->flatten()->impolod(', ') ]); // try { From fd4cb621263145230610603bbbec3956a227a88d Mon Sep 17 00:00:00 2001 From: Omair Saleh Date: Mon, 13 Mar 2023 01:26:10 +0800 Subject: [PATCH 08/27] import bank record --- .../Modules/Imports/Services/ImportsBankRecord.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/app/Classes/Modules/Imports/Services/ImportsBankRecord.php b/app/Classes/Modules/Imports/Services/ImportsBankRecord.php index 6b28efa8..bf88fccc 100644 --- a/app/Classes/Modules/Imports/Services/ImportsBankRecord.php +++ b/app/Classes/Modules/Imports/Services/ImportsBankRecord.php @@ -28,15 +28,15 @@ class ImportsBankRecord implements ToModel, WithHeadingRow, WithBatchInserts, Wi $transaction = Transaction::whereIn('status', [ApprovalStatus::APPROVED, ApprovalStatus::COMPLETED]) ->where('type', TransactionType::PAYMENT)->where('owner_type', Booking::class) ->WhereDate('created_at', $date->format('Y-m-d')) - ->where('amount', '>=', $credit)->where('amount', '<', ($credit + 0.01))->get(); + ->where('amount', '>=', $credit)->where('amount', '<', ($credit + 0.01)) + ->get(); if(!count($transaction)) return; - dump([ - 'date' => $date, + 'date' => $date->format('d-m-Y'), 'credit' => $credit, - 'payments' => $transaction->pluck('owner.marking')->flatten()->impolod(', ') + 'payments' => $transaction->pluck('owner.marking')->flatten()->implode(', ') ]); // try { From 106252897fe35186236cfd409d56c01f6dbabff9 Mon Sep 17 00:00:00 2001 From: Omair Saleh Date: Mon, 13 Mar 2023 01:35:40 +0800 Subject: [PATCH 09/27] import bank record --- .../Imports/Services/ImportsBankRecord.php | 25 ++++++++++++++----- 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/app/Classes/Modules/Imports/Services/ImportsBankRecord.php b/app/Classes/Modules/Imports/Services/ImportsBankRecord.php index bf88fccc..7ddb4875 100644 --- a/app/Classes/Modules/Imports/Services/ImportsBankRecord.php +++ b/app/Classes/Modules/Imports/Services/ImportsBankRecord.php @@ -24,6 +24,7 @@ class ImportsBankRecord implements ToModel, WithHeadingRow, WithBatchInserts, Wi { $date = Date::excelToDateTimeObject($row['date']); $credit = (float) $row['credit']; + $systemReference = null; $transaction = Transaction::whereIn('status', [ApprovalStatus::APPROVED, ApprovalStatus::COMPLETED]) ->where('type', TransactionType::PAYMENT)->where('owner_type', Booking::class) @@ -31,13 +32,25 @@ class ImportsBankRecord implements ToModel, WithHeadingRow, WithBatchInserts, Wi ->where('amount', '>=', $credit)->where('amount', '<', ($credit + 0.01)) ->get(); - if(!count($transaction)) return; + if(count($transaction)) { + $systemReference = $transaction->pluck('owner.marking')->flatten()->implode(', '); + } + + + echo ' + '.$date->format('d-m-Y').' + '.$row['description'].' + '.$credit.' + '.$systemReference.' + '.$row['remarkreferences'].' + '.($systemReference === $row['remarkreferences']) ? 'true':'false'.' + '; +// dump([ +// 'date' => $date->format('d-m-Y'), +// 'credit' => $credit, +// 'payments' => +// ]); - dump([ - 'date' => $date->format('d-m-Y'), - 'credit' => $credit, - 'payments' => $transaction->pluck('owner.marking')->flatten()->implode(', ') - ]); // try { // preg_match_all('/([0-9]{3,4}[a-zA-Z]{3,4})/', $row['desc2'], $matches); From be2ce85de16798817efd8536a17a861b27ff57ca Mon Sep 17 00:00:00 2001 From: Omair Saleh Date: Mon, 13 Mar 2023 01:46:52 +0800 Subject: [PATCH 10/27] import bank record --- app/Classes/Modules/Imports/Services/ImportsBankRecord.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/Classes/Modules/Imports/Services/ImportsBankRecord.php b/app/Classes/Modules/Imports/Services/ImportsBankRecord.php index 7ddb4875..6698a803 100644 --- a/app/Classes/Modules/Imports/Services/ImportsBankRecord.php +++ b/app/Classes/Modules/Imports/Services/ImportsBankRecord.php @@ -36,6 +36,7 @@ class ImportsBankRecord implements ToModel, WithHeadingRow, WithBatchInserts, Wi $systemReference = $transaction->pluck('owner.marking')->flatten()->implode(', '); } + $matches = $systemReference === $row['remarkreferences'] ? 'Yes' : 'No'; echo ' '.$date->format('d-m-Y').' @@ -43,7 +44,7 @@ class ImportsBankRecord implements ToModel, WithHeadingRow, WithBatchInserts, Wi '.$credit.' '.$systemReference.' '.$row['remarkreferences'].' - '.($systemReference === $row['remarkreferences']) ? 'true':'false'.' + '.$matches.' '; // dump([ // 'date' => $date->format('d-m-Y'), From 4079324670ce18ea12714be7b19191be65cc4407 Mon Sep 17 00:00:00 2001 From: Omair Saleh Date: Mon, 13 Mar 2023 02:14:36 +0800 Subject: [PATCH 11/27] import bank record --- .../Imports/Services/ImportsBankRecord.php | 41 +++--------- .../Imports/ImportBankRecordController.php | 64 ++++++++++++++++++- 2 files changed, 70 insertions(+), 35 deletions(-) diff --git a/app/Classes/Modules/Imports/Services/ImportsBankRecord.php b/app/Classes/Modules/Imports/Services/ImportsBankRecord.php index 6698a803..fa972e40 100644 --- a/app/Classes/Modules/Imports/Services/ImportsBankRecord.php +++ b/app/Classes/Modules/Imports/Services/ImportsBankRecord.php @@ -5,25 +5,24 @@ namespace App\Classes\Modules\Imports\Services; use App\Classes\ValueObjects\Constants\ApprovalStatus; use App\Classes\ValueObjects\Constants\TransactionType; use App\Models\Booking; -use App\Models\Company; use App\Models\Transaction; -use Maatwebsite\Excel\Concerns\ToModel; +use Maatwebsite\Excel\Concerns\toCollection; use Maatwebsite\Excel\Concerns\WithHeadingRow; use Maatwebsite\Excel\Concerns\WithBatchInserts; use Maatwebsite\Excel\Concerns\WithValidation; use PhpOffice\PhpSpreadsheet\Shared\Date; -class ImportsBankRecord implements ToModel, WithHeadingRow, WithBatchInserts, WithValidation +class ImportsBankRecord implements WithHeadingRow, WithBatchInserts, WithValidation { public function __construct() { } - public function model($row = []) + public function collection($collection) { - $date = Date::excelToDateTimeObject($row['date']); - $credit = (float) $row['credit']; + $date = Date::excelToDateTimeObject($collection['date']); + $credit = (float) $collection['credit']; $systemReference = null; $transaction = Transaction::whereIn('status', [ApprovalStatus::APPROVED, ApprovalStatus::COMPLETED]) @@ -36,41 +35,17 @@ class ImportsBankRecord implements ToModel, WithHeadingRow, WithBatchInserts, Wi $systemReference = $transaction->pluck('owner.marking')->flatten()->implode(', '); } - $matches = $systemReference === $row['remarkreferences'] ? 'Yes' : 'No'; + $matches = $systemReference === $collection['remarkreferences'] ? 'Yes' : 'No'; echo ' '.$date->format('d-m-Y').' - '.$row['description'].' + '.$collection['description'].' '.$credit.' '.$systemReference.' - '.$row['remarkreferences'].' + '.$collection['remarkreferences'].' '.$matches.' '; -// dump([ -// 'date' => $date->format('d-m-Y'), -// 'credit' => $credit, -// 'payments' => -// ]); - -// try { -// preg_match_all('/([0-9]{3,4}[a-zA-Z]{3,4})/', $row['desc2'], $matches); -// -// foreach ($matches[0] as $match){ -// $reference = $match; -// $debtor = $row['code']; -// $company = Company::where('reference', $reference)->whereNull('debtor')->first(); -// -// if ($company) { -// $company->debtor = $debtor; -// $company->update(); -// } -// -// } -// -// } catch (\Exception $exception){ -// dd($exception); -// } } public function batchSize(): int diff --git a/app/Http/Controllers/Imports/ImportBankRecordController.php b/app/Http/Controllers/Imports/ImportBankRecordController.php index 19c3c1ed..6922440b 100644 --- a/app/Http/Controllers/Imports/ImportBankRecordController.php +++ b/app/Http/Controllers/Imports/ImportBankRecordController.php @@ -4,8 +4,14 @@ namespace App\Http\Controllers\Imports; use App\Classes\Modules\Documents\DataTransferObjects\DocumentObject; use App\Classes\Modules\Imports\Services\ImportsBankRecord; +use App\Classes\ValueObjects\Constants\ApprovalStatus; +use App\Classes\ValueObjects\Constants\TransactionType; +use App\Models\Booking; +use App\Models\Transaction; +use App\Models\Wallet; use Illuminate\Http\Request; use Maatwebsite\Excel\Facades\Excel; +use PhpOffice\PhpSpreadsheet\Shared\Date; class ImportBankRecordController { @@ -16,7 +22,61 @@ class ImportBankRecordController */ public function import(Request $request) { // $object = new DocumentObject('', $request->input('files'), '', ApprovalStatus::APPROVED, 'imports'); - Excel::import(new ImportsBankRecord(), 'daily_transaction_nov.xlsx'); - return []; + + echo ' + + + + + + + + + + '; + + $collection = Excel::toCollection(new ImportsBankRecord(), 'daily_transaction_nov.xlsx'); + + $branches = [ + 0 => 'MBB Cyber', + 1 => 'MBB SS2' + ]; + + foreach ($collection as $key => $sheet){ + $branch = $branches[$key]; + foreach ($sheet as $row) { + $date = Date::excelToDateTimeObject($row['date']); + $credit = (float) $row['credit']; + $systemReference = null; + + $transaction = Transaction::whereIn('status', [ApprovalStatus::APPROVED, ApprovalStatus::COMPLETED]) + ->where('type', TransactionType::PAYMENT)->WhereDate('created_at', $date->format('Y-m-d')) + ->where('amount', '>=', $credit)->where('amount', '<', ($credit + 0.01)) + ->get(); + + if(count($transaction)) { + if($transaction->owner instanceof Booking::class){ + $systemReference = $transaction->pluck('owner.marking')->flatten()->implode(', '); + } + + if($transaction->owner instanceof Wallet::class){ + $systemReference = $transaction->bill_no; + } + } + + $matches = $systemReference === $row['remarkreferences'] ? 'Yes' : 'No'; + + echo ' + + + + + + + + '; + } + } +// return []; } } From 76a528cc6158f71c9a6171993b9f85de70db19e3 Mon Sep 17 00:00:00 2001 From: Omair Saleh Date: Mon, 13 Mar 2023 02:15:47 +0800 Subject: [PATCH 12/27] import bank record --- app/Http/Controllers/Imports/ImportBankRecordController.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/Http/Controllers/Imports/ImportBankRecordController.php b/app/Http/Controllers/Imports/ImportBankRecordController.php index 6922440b..6e4632a4 100644 --- a/app/Http/Controllers/Imports/ImportBankRecordController.php +++ b/app/Http/Controllers/Imports/ImportBankRecordController.php @@ -55,11 +55,11 @@ class ImportBankRecordController ->get(); if(count($transaction)) { - if($transaction->owner instanceof Booking::class){ + if($transaction->owner instanceof Booking){ $systemReference = $transaction->pluck('owner.marking')->flatten()->implode(', '); } - if($transaction->owner instanceof Wallet::class){ + if($transaction->owner instanceof Wallet){ $systemReference = $transaction->bill_no; } } From a285b027577bb645dbf90d215948e815fa3d0ecd Mon Sep 17 00:00:00 2001 From: Omair Saleh Date: Mon, 13 Mar 2023 02:20:02 +0800 Subject: [PATCH 13/27] import bank record --- .../Imports/ImportBankRecordController.php | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/app/Http/Controllers/Imports/ImportBankRecordController.php b/app/Http/Controllers/Imports/ImportBankRecordController.php index 6e4632a4..45e784a0 100644 --- a/app/Http/Controllers/Imports/ImportBankRecordController.php +++ b/app/Http/Controllers/Imports/ImportBankRecordController.php @@ -49,19 +49,24 @@ class ImportBankRecordController $credit = (float) $row['credit']; $systemReference = null; - $transaction = Transaction::whereIn('status', [ApprovalStatus::APPROVED, ApprovalStatus::COMPLETED]) + $transactions = Transaction::whereIn('status', [ApprovalStatus::APPROVED, ApprovalStatus::COMPLETED]) ->where('type', TransactionType::PAYMENT)->WhereDate('created_at', $date->format('Y-m-d')) ->where('amount', '>=', $credit)->where('amount', '<', ($credit + 0.01)) ->get(); - if(count($transaction)) { - if($transaction->owner instanceof Booking){ - $systemReference = $transaction->pluck('owner.marking')->flatten()->implode(', '); + if(count($transactions)) { + foreach ($transactions as $transaction){ + if($transaction->owner instanceof Booking){ + $systemReference[] = $transaction->pluck('owner.marking'); + } + + if($transaction->owner instanceof Wallet){ + $systemReference[] = $transaction->bill_no; + } } - if($transaction->owner instanceof Wallet){ - $systemReference = $transaction->bill_no; - } + $systemReference = implode(',', $systemReference); + } $matches = $systemReference === $row['remarkreferences'] ? 'Yes' : 'No'; From 8103efa0c7a9d3ca76ed6af0dc8a187cb5baf195 Mon Sep 17 00:00:00 2001 From: Omair Saleh Date: Mon, 13 Mar 2023 02:21:25 +0800 Subject: [PATCH 14/27] import bank record --- app/Http/Controllers/Imports/ImportBankRecordController.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Http/Controllers/Imports/ImportBankRecordController.php b/app/Http/Controllers/Imports/ImportBankRecordController.php index 45e784a0..119989f7 100644 --- a/app/Http/Controllers/Imports/ImportBankRecordController.php +++ b/app/Http/Controllers/Imports/ImportBankRecordController.php @@ -57,7 +57,7 @@ class ImportBankRecordController if(count($transactions)) { foreach ($transactions as $transaction){ if($transaction->owner instanceof Booking){ - $systemReference[] = $transaction->pluck('owner.marking'); + $systemReference[] = $transaction->owner->marking; } if($transaction->owner instanceof Wallet){ From 23ab33c1e57f570c7603adb6ba6e5942892bd408 Mon Sep 17 00:00:00 2001 From: Omair Saleh Date: Mon, 13 Mar 2023 02:24:36 +0800 Subject: [PATCH 15/27] import bank record --- app/Http/Controllers/Imports/ImportBankRecordController.php | 1 - 1 file changed, 1 deletion(-) diff --git a/app/Http/Controllers/Imports/ImportBankRecordController.php b/app/Http/Controllers/Imports/ImportBankRecordController.php index 119989f7..12b779e0 100644 --- a/app/Http/Controllers/Imports/ImportBankRecordController.php +++ b/app/Http/Controllers/Imports/ImportBankRecordController.php @@ -29,7 +29,6 @@ class ImportBankRecordController - From 9e1652bcca02755037b7d7a54760632ef1064187 Mon Sep 17 00:00:00 2001 From: Omair Saleh Date: Mon, 13 Mar 2023 02:31:53 +0800 Subject: [PATCH 16/27] import bank record --- .../Controllers/Imports/ImportBankRecordController.php | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/app/Http/Controllers/Imports/ImportBankRecordController.php b/app/Http/Controllers/Imports/ImportBankRecordController.php index 12b779e0..df8bb265 100644 --- a/app/Http/Controllers/Imports/ImportBankRecordController.php +++ b/app/Http/Controllers/Imports/ImportBankRecordController.php @@ -5,6 +5,7 @@ namespace App\Http\Controllers\Imports; use App\Classes\Modules\Documents\DataTransferObjects\DocumentObject; use App\Classes\Modules\Imports\Services\ImportsBankRecord; use App\Classes\ValueObjects\Constants\ApprovalStatus; +use App\Classes\ValueObjects\Constants\PaymentMethodType; use App\Classes\ValueObjects\Constants\TransactionType; use App\Models\Booking; use App\Models\Transaction; @@ -49,7 +50,14 @@ class ImportBankRecordController $systemReference = null; $transactions = Transaction::whereIn('status', [ApprovalStatus::APPROVED, ApprovalStatus::COMPLETED]) - ->where('type', TransactionType::PAYMENT)->WhereDate('created_at', $date->format('Y-m-d')) + ->where(function ($query){ + return $query->where(function ($query){ + return $query->where('type', TransactionType::PAYMENT)->where('owner_type', Booking::class)->where('payment_method', '!=', PaymentMethodType::WALLET); + })->orWhere(function ($query){ + $query->where('type', TransactionType::TOP_UP); + }); + }) + ->WhereDate('created_at', $date->format('Y-m-d')) ->where('amount', '>=', $credit)->where('amount', '<', ($credit + 0.01)) ->get(); From 23601d9e90c46b8f60d256334015e31e8fdc6e19 Mon Sep 17 00:00:00 2001 From: Omair Saleh Date: Mon, 13 Mar 2023 02:35:03 +0800 Subject: [PATCH 17/27] import bank record --- app/Http/Controllers/Imports/ImportBankRecordController.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Http/Controllers/Imports/ImportBankRecordController.php b/app/Http/Controllers/Imports/ImportBankRecordController.php index df8bb265..6ff6f0ed 100644 --- a/app/Http/Controllers/Imports/ImportBankRecordController.php +++ b/app/Http/Controllers/Imports/ImportBankRecordController.php @@ -76,7 +76,7 @@ class ImportBankRecordController } - $matches = $systemReference === $row['remarkreferences'] ? 'Yes' : 'No'; + $matches = $systemReference == $row['remarkreferences'] ? 'Yes' : 'No'; echo ' From a319dc60d1d70e8674a6e8e81fb533b5f192b7e8 Mon Sep 17 00:00:00 2001 From: Omair Saleh Date: Mon, 13 Mar 2023 02:37:26 +0800 Subject: [PATCH 18/27] import bank record --- app/Http/Controllers/Imports/ImportBankRecordController.php | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/app/Http/Controllers/Imports/ImportBankRecordController.php b/app/Http/Controllers/Imports/ImportBankRecordController.php index 6ff6f0ed..f4bb7c62 100644 --- a/app/Http/Controllers/Imports/ImportBankRecordController.php +++ b/app/Http/Controllers/Imports/ImportBankRecordController.php @@ -32,6 +32,7 @@ class ImportBankRecordController + '; @@ -48,6 +49,7 @@ class ImportBankRecordController $date = Date::excelToDateTimeObject($row['date']); $credit = (float) $row['credit']; $systemReference = null; + $multiple = 'No'; $transactions = Transaction::whereIn('status', [ApprovalStatus::APPROVED, ApprovalStatus::COMPLETED]) ->where(function ($query){ @@ -72,6 +74,9 @@ class ImportBankRecordController } } + if(count($systemReference) > 1) { + $multiple = 'Yes'; + } $systemReference = implode(',', $systemReference); } @@ -85,6 +90,7 @@ class ImportBankRecordController + '; } From 3198e6a772cf89dd6912a3329fae1e3bb626469f Mon Sep 17 00:00:00 2001 From: Omair Saleh Date: Mon, 13 Mar 2023 02:54:27 +0800 Subject: [PATCH 19/27] import bank record --- app/Http/Controllers/Imports/ImportBankRecordController.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/Http/Controllers/Imports/ImportBankRecordController.php b/app/Http/Controllers/Imports/ImportBankRecordController.php index f4bb7c62..effac446 100644 --- a/app/Http/Controllers/Imports/ImportBankRecordController.php +++ b/app/Http/Controllers/Imports/ImportBankRecordController.php @@ -30,6 +30,7 @@ class ImportBankRecordController + @@ -88,6 +89,7 @@ class ImportBankRecordController + From 201a502aa8e523fbd1d5ee1149d4e3746100c30c Mon Sep 17 00:00:00 2001 From: edmondlang Date: Wed, 15 Mar 2023 19:19:12 +0800 Subject: [PATCH 20/27] debug billplz payment --- .../Commands/debugBillplzFailedPayment.php | 71 +++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 app/Console/Commands/debugBillplzFailedPayment.php diff --git a/app/Console/Commands/debugBillplzFailedPayment.php b/app/Console/Commands/debugBillplzFailedPayment.php new file mode 100644 index 00000000..cf7a9664 --- /dev/null +++ b/app/Console/Commands/debugBillplzFailedPayment.php @@ -0,0 +1,71 @@ +where('payment_method', PaymentMethodType::PAYMENT_GATEWAY)->whereNotIn('status', [ApprovalStatus::COMPLETED, ApprovalStatus::APPROVED])->get(); + + $i = 0; + $totalAmount = 0; + foreach ($transactions as $transaction){ + $response = Http::withBasicAuth(config('billplz.api_key').':', '')->get(config('billplz.base_url').'/api/v3/bills/'.$transaction->payment_reference); + + // dd($response); + + if($response->successful()){ + $data = $response->json(); + if($data['paid']){ + if (!in_array($transaction->status, [ApprovalStatus::APPROVED, ApprovalStatus::COMPLETED])) { + echo 'Paid transaction - : id: '. $transaction->id . ' - Date: '.$transaction->created_at->format('d-m-Y').' - Amount: '. $transaction->amount . "

"; + } + } else { + $totalAmount += $transaction->amount; + $this->info('Unpaid Transaction - id:' . $transaction->id . ' - Date: '.$transaction->owner->created_at->format('d-m-Y').' - Amount: '. $transaction->amount); + } + }else{ + $this->info('billplz error'); + } + } + + echo 'Total: ' . $totalAmount; + } +} From bf74789bfce94ca901d85922bb965136752143cf Mon Sep 17 00:00:00 2001 From: edmondlang Date: Wed, 15 Mar 2023 19:21:58 +0800 Subject: [PATCH 21/27] debug billplz payment --- app/Console/Commands/debugBillplzFailedPayment.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Console/Commands/debugBillplzFailedPayment.php b/app/Console/Commands/debugBillplzFailedPayment.php index cf7a9664..ce481d3a 100644 --- a/app/Console/Commands/debugBillplzFailedPayment.php +++ b/app/Console/Commands/debugBillplzFailedPayment.php @@ -55,7 +55,7 @@ class debugBillplzFailedPayment extends Command $data = $response->json(); if($data['paid']){ if (!in_array($transaction->status, [ApprovalStatus::APPROVED, ApprovalStatus::COMPLETED])) { - echo 'Paid transaction - : id: '. $transaction->id . ' - Date: '.$transaction->created_at->format('d-m-Y').' - Amount: '. $transaction->amount . "

"; + $this->info('Paid transaction - : id: '. $transaction->id . ' - Date: '.$transaction->created_at->format('d-m-Y').' - Amount: '. $transaction->amount); } } else { $totalAmount += $transaction->amount; From 10467e5cc190aba46f0e887b1810ef61e8eb93bb Mon Sep 17 00:00:00 2001 From: edmondlang Date: Wed, 15 Mar 2023 19:23:24 +0800 Subject: [PATCH 22/27] debug billplz payment --- app/Console/Commands/debugBillplzFailedPayment.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Console/Commands/debugBillplzFailedPayment.php b/app/Console/Commands/debugBillplzFailedPayment.php index ce481d3a..1a4f23f7 100644 --- a/app/Console/Commands/debugBillplzFailedPayment.php +++ b/app/Console/Commands/debugBillplzFailedPayment.php @@ -62,7 +62,7 @@ class debugBillplzFailedPayment extends Command $this->info('Unpaid Transaction - id:' . $transaction->id . ' - Date: '.$transaction->owner->created_at->format('d-m-Y').' - Amount: '. $transaction->amount); } }else{ - $this->info('billplz error'); + $this->info('billplz error - id: '. $transaction->id . ' - Date: '.$transaction->created_at->format('d-m-Y')); } } From 0d9264ba108f4455fab7be1b3e471b16c95616a1 Mon Sep 17 00:00:00 2001 From: edmondlang Date: Wed, 15 Mar 2023 19:26:59 +0800 Subject: [PATCH 23/27] debug billplz payment --- app/Console/Commands/debugBillplzFailedPayment.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Console/Commands/debugBillplzFailedPayment.php b/app/Console/Commands/debugBillplzFailedPayment.php index 1a4f23f7..050d3379 100644 --- a/app/Console/Commands/debugBillplzFailedPayment.php +++ b/app/Console/Commands/debugBillplzFailedPayment.php @@ -55,7 +55,7 @@ class debugBillplzFailedPayment extends Command $data = $response->json(); if($data['paid']){ if (!in_array($transaction->status, [ApprovalStatus::APPROVED, ApprovalStatus::COMPLETED])) { - $this->info('Paid transaction - : id: '. $transaction->id . ' - Date: '.$transaction->created_at->format('d-m-Y').' - Amount: '. $transaction->amount); + $this->info('Paid transaction - id: '. $transaction->id . '. Booking Marking: '. $transaction->owner->marking . ' - Date: '.$transaction->created_at->format('d-m-Y').' - Amount: '. $transaction->amount); } } else { $totalAmount += $transaction->amount; From fe9ccc1041abfd293fb4f97f5021cff6e375245a Mon Sep 17 00:00:00 2001 From: edmondlang Date: Wed, 15 Mar 2023 19:28:42 +0800 Subject: [PATCH 24/27] debug billplz payment --- app/Console/Commands/debugBillplzFailedPayment.php | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/app/Console/Commands/debugBillplzFailedPayment.php b/app/Console/Commands/debugBillplzFailedPayment.php index 050d3379..26ddc176 100644 --- a/app/Console/Commands/debugBillplzFailedPayment.php +++ b/app/Console/Commands/debugBillplzFailedPayment.php @@ -57,10 +57,11 @@ class debugBillplzFailedPayment extends Command if (!in_array($transaction->status, [ApprovalStatus::APPROVED, ApprovalStatus::COMPLETED])) { $this->info('Paid transaction - id: '. $transaction->id . '. Booking Marking: '. $transaction->owner->marking . ' - Date: '.$transaction->created_at->format('d-m-Y').' - Amount: '. $transaction->amount); } - } else { - $totalAmount += $transaction->amount; - $this->info('Unpaid Transaction - id:' . $transaction->id . ' - Date: '.$transaction->owner->created_at->format('d-m-Y').' - Amount: '. $transaction->amount); - } + } + // else { + // $totalAmount += $transaction->amount; + // $this->info('Unpaid Transaction - id:' . $transaction->id . ' - Date: '.$transaction->owner->created_at->format('d-m-Y').' - Amount: '. $transaction->amount); + // } }else{ $this->info('billplz error - id: '. $transaction->id . ' - Date: '.$transaction->created_at->format('d-m-Y')); } From 1140cc9d3d1edbacf00632d5e438df194660463e Mon Sep 17 00:00:00 2001 From: edmondlang Date: Wed, 15 Mar 2023 19:43:51 +0800 Subject: [PATCH 25/27] debug billplz payment --- app/Classes/ValueObjects/Constants/ApprovalStatus.php | 11 +++++++++++ app/Console/Commands/debugBillplzFailedPayment.php | 11 ++++++++--- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/app/Classes/ValueObjects/Constants/ApprovalStatus.php b/app/Classes/ValueObjects/Constants/ApprovalStatus.php index 154db2ca..ba7660d4 100644 --- a/app/Classes/ValueObjects/Constants/ApprovalStatus.php +++ b/app/Classes/ValueObjects/Constants/ApprovalStatus.php @@ -19,4 +19,15 @@ final class ApprovalStatus { public const EXPIRED = 6; public const REFUNDED = 7; + + public const APPROVAL_STATUS_ID = [ + self::PENDING_SUBMISSION => "Pending Submission", + self::PENDING_VERIFICATION => "Pending Verification", + self::APPROVED => "Approved", + self::COMPLETED => "Completed", + self::REJECTED => "Rejected", + self::SUSPENDED => "Suspended", + self::EXPIRED => "Expired", + self::REFUNDED => "Refunded", + ]; } diff --git a/app/Console/Commands/debugBillplzFailedPayment.php b/app/Console/Commands/debugBillplzFailedPayment.php index 26ddc176..027cc0ba 100644 --- a/app/Console/Commands/debugBillplzFailedPayment.php +++ b/app/Console/Commands/debugBillplzFailedPayment.php @@ -55,18 +55,23 @@ class debugBillplzFailedPayment extends Command $data = $response->json(); if($data['paid']){ if (!in_array($transaction->status, [ApprovalStatus::APPROVED, ApprovalStatus::COMPLETED])) { - $this->info('Paid transaction - id: '. $transaction->id . '. Booking Marking: '. $transaction->owner->marking . ' - Date: '.$transaction->created_at->format('d-m-Y').' - Amount: '. $transaction->amount); + $this->returnLog('Paid transaction', $transaction); } } // else { // $totalAmount += $transaction->amount; - // $this->info('Unpaid Transaction - id:' . $transaction->id . ' - Date: '.$transaction->owner->created_at->format('d-m-Y').' - Amount: '. $transaction->amount); + // $this->returnLog('Unpaid Transaction', $transaction); // } }else{ - $this->info('billplz error - id: '. $transaction->id . ' - Date: '.$transaction->created_at->format('d-m-Y')); + $this->returnLog('billplz error', $transaction); } } echo 'Total: ' . $totalAmount; } + + public function returnLog($text, $transaction) { + $approvalStatusArray = ApprovalStatus::APPROVAL_STATUS_ID; + $this->info($text . ' - id: '. $transaction->id . '. Booking Marking: '. $transaction->owner->marking . ' - Date: '.$transaction->created_at->format('d-m-Y').' - Amount: '. $transaction->amount . '. Current Status: ' . $approvalStatusArray[$transaction->status]); + } } From f6082382bf97b7bd7d1e21cb0eafa65a89949d40 Mon Sep 17 00:00:00 2001 From: edmondlang Date: Wed, 15 Mar 2023 19:48:21 +0800 Subject: [PATCH 26/27] debug billplz payment --- app/Console/Commands/debugBillplzFailedPayment.php | 2 -- 1 file changed, 2 deletions(-) diff --git a/app/Console/Commands/debugBillplzFailedPayment.php b/app/Console/Commands/debugBillplzFailedPayment.php index 027cc0ba..ee1cf4b0 100644 --- a/app/Console/Commands/debugBillplzFailedPayment.php +++ b/app/Console/Commands/debugBillplzFailedPayment.php @@ -66,8 +66,6 @@ class debugBillplzFailedPayment extends Command $this->returnLog('billplz error', $transaction); } } - - echo 'Total: ' . $totalAmount; } public function returnLog($text, $transaction) { From 7cf7fdec54b2ef669ed3d5b6cd820d6df72044ac Mon Sep 17 00:00:00 2001 From: edmondlang Date: Fri, 17 Mar 2023 18:40:48 +0800 Subject: [PATCH 27/27] honey trap --- .env.example | 2 + .../Filters/WhereHasSeasonalSegment.php | 20 +++++ .../AssignCompanyToSegmentLogic.php | 21 +++++- .../SeasonalSegmentObject.php | 74 +++++++++++++++++++ .../Services/CreatesSeasonalSegment.php | 27 +++++++ .../Commands/RemoveSeasonalSegmentCompany.php | 48 ++++++++++++ app/Console/Kernel.php | 4 + app/Models/Company.php | 8 ++ app/Models/SeasonalSegment.php | 48 ++++++++++++ ...23_03_16_223623_seasonal_segment_table.php | 41 ++++++++++ .../elements/SeasonalSegmentComponent.vue | 47 ++++++++++++ .../forms/AssignSegmentFormComponent.vue | 25 ++++++- .../forms/DetachSegmentFormComponent.vue | 6 +- resources/views/pages/settings.blade.php | 48 ++++++++++++ 14 files changed, 415 insertions(+), 4 deletions(-) create mode 100644 app/Classes/General/Eloquent/Filters/WhereHasSeasonalSegment.php create mode 100644 app/Classes/Modules/Segments/DataTransferObjects/SeasonalSegmentObject.php create mode 100644 app/Classes/Modules/Segments/Services/CreatesSeasonalSegment.php create mode 100644 app/Console/Commands/RemoveSeasonalSegmentCompany.php create mode 100644 app/Models/SeasonalSegment.php create mode 100644 database/migrations/2023_03_16_223623_seasonal_segment_table.php create mode 100644 resources/assets/vue/components/companies/elements/SeasonalSegmentComponent.vue diff --git a/.env.example b/.env.example index 91c8e15c..d48eeb79 100644 --- a/.env.example +++ b/.env.example @@ -61,3 +61,5 @@ BILLPLZ_WALLET_COLLECTION_ID="t0cggbdd" PERFEXCRM_BASE_URL="" PERFEXCRM_API_KEY="" PERFEXCRM_IS_ENABLED="false" + +HONEY_TRAP_SEGMENT_ID='false' # set HONEY_TRAP_SEGMENT_ID diff --git a/app/Classes/General/Eloquent/Filters/WhereHasSeasonalSegment.php b/app/Classes/General/Eloquent/Filters/WhereHasSeasonalSegment.php new file mode 100644 index 00000000..78905650 --- /dev/null +++ b/app/Classes/General/Eloquent/Filters/WhereHasSeasonalSegment.php @@ -0,0 +1,20 @@ +whereHas('seasonalSegments'); + } +} \ No newline at end of file diff --git a/app/Classes/Modules/Companies/ControllersLogic/AssignCompanyToSegmentLogic.php b/app/Classes/Modules/Companies/ControllersLogic/AssignCompanyToSegmentLogic.php index 17a6c900..97fcb193 100644 --- a/app/Classes/Modules/Companies/ControllersLogic/AssignCompanyToSegmentLogic.php +++ b/app/Classes/Modules/Companies/ControllersLogic/AssignCompanyToSegmentLogic.php @@ -6,7 +6,11 @@ namespace App\Classes\Modules\Companies\ControllersLogic; use App\Classes\General\Abstracts\AbstractControllerLogic; use App\Classes\Modules\Companies\Processors\AssignSegmentProcessor; use App\Classes\Modules\Companies\Services\FetchesCompany; +use App\Classes\Modules\Segments\DataTransferObjects\SeasonalSegmentObject; +use App\Classes\Modules\Segments\Services\CreatesSeasonalSegment; use App\Http\Resources\CompanyResource; +use App\Models\SeasonalSegment; +use Carbon\Carbon; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; @@ -29,15 +33,20 @@ class AssignCompanyToSegmentLogic extends AbstractControllerLogic /** @var AssignSegmentProcessor */ private $assignCompanyToSegmentProcessor; + /** @var CreatesSeasonalSegment */ + private $createsSeasonalSegment; + /** * AssignCompanyToSegmentLogic constructor. * @param FetchesCompany $fetchesCompany * @param AssignSegmentProcessor $assignCompanyToSegmentProcessor + * @param CreatesSeasonalSegment $createsSeasonalSegment */ - public function __construct(FetchesCompany $fetchesCompany, AssignSegmentProcessor $assignCompanyToSegmentProcessor) + public function __construct(FetchesCompany $fetchesCompany, AssignSegmentProcessor $assignCompanyToSegmentProcessor, CreatesSeasonalSegment $createsSeasonalSegment) { $this->fetchesCompany = $fetchesCompany; $this->assignCompanyToSegmentProcessor = $assignCompanyToSegmentProcessor; + $this->createsSeasonalSegment = $createsSeasonalSegment; } /** @@ -54,6 +63,16 @@ class AssignCompanyToSegmentLogic extends AbstractControllerLogic $this->assignCompanyToSegmentProcessor->execute($company, $request->input('segment_id')); + if (env('HONEY_TRAP_SEGMENT_ID') && env('HONEY_TRAP_SEGMENT_ID') == $request->input('segment_id')) { + $start_date = $request->input('starting_on') ? $request->input('starting_on') : Carbon::now(); + $seasonalSegmentObject = new SeasonalSegmentObject($request->route('id'), $request->input('segment_id'), $start_date, $request->input('ending_on')); + // $seasonalSegmentObject = new SeasonalSegmentObject((int)$request->route('id'), $request->input('segment_id'), '01-01-2022', '01-01-2022'); + + $this->createsSeasonalSegment->execute($seasonalSegmentObject); + } else { + dd('d'); + } + return $this->resourceResponse(new CompanyResource($company)); } } \ No newline at end of file diff --git a/app/Classes/Modules/Segments/DataTransferObjects/SeasonalSegmentObject.php b/app/Classes/Modules/Segments/DataTransferObjects/SeasonalSegmentObject.php new file mode 100644 index 00000000..5911a384 --- /dev/null +++ b/app/Classes/Modules/Segments/DataTransferObjects/SeasonalSegmentObject.php @@ -0,0 +1,74 @@ +$companyId = $companyId; + $this->segmentId = $segmentId; + $this->starting_on = $starting_on; + $this->ending_on = $ending_on; + $this->status = $status; + } + + /** + * @return int + */ + public function getCompanyId(): int + { + return $this->companyId; + } + + /** + * @return int + */ + public function getSegmentId(): int + { + return $this->segmentId; + } + + + /** + * @return string + */ + public function getStartingOn(): string + { + return $this->starting_on; + } + + /** + * @return string + */ + public function getEndingOn(): string + { + return $this->ending_on; + } +} \ No newline at end of file diff --git a/app/Classes/Modules/Segments/Services/CreatesSeasonalSegment.php b/app/Classes/Modules/Segments/Services/CreatesSeasonalSegment.php new file mode 100644 index 00000000..dc6fdb49 --- /dev/null +++ b/app/Classes/Modules/Segments/Services/CreatesSeasonalSegment.php @@ -0,0 +1,27 @@ +company_id = $object->getSegmentId(); + $model->segment_id = $object->getSegmentId(); + $model->starting_on = $object->getStartingOn(); + $model->ending_on = $object->getEndingOn(); + + return $this->handler($model); + + } +} \ No newline at end of file diff --git a/app/Console/Commands/RemoveSeasonalSegmentCompany.php b/app/Console/Commands/RemoveSeasonalSegmentCompany.php new file mode 100644 index 00000000..fd71d891 --- /dev/null +++ b/app/Console/Commands/RemoveSeasonalSegmentCompany.php @@ -0,0 +1,48 @@ +count(); + + SeasonalSegment::where('ending_on', '<=', Carbon::today())->delete(); + + $this->info(Carbon::now() . ' : Done soft delete on seasonal segment company. Total Deleted: ' . $count); + } +} diff --git a/app/Console/Kernel.php b/app/Console/Kernel.php index 8edaaa22..baf9a4cc 100644 --- a/app/Console/Kernel.php +++ b/app/Console/Kernel.php @@ -34,6 +34,10 @@ class Kernel extends ConsoleKernel // $schedule->command('inspire')->hourly(); $schedule->command('mail:EmailDoToVTCommand')->dailyAt('10:00')->withoutOverlapping(); + $schedule->command('seasonalSegmantCompany:remove') + ->hourly() + ->appendOutputTo (storage_path().'/logs/soft-delete-seasonal-segmant-company.log') + ->withoutOverlapping(); } /** diff --git a/app/Models/Company.php b/app/Models/Company.php index def72720..8b2e6081 100644 --- a/app/Models/Company.php +++ b/app/Models/Company.php @@ -62,6 +62,14 @@ class Company extends AbstractModel implements Documentable return $this->belongsToMany(Segment::class, (new SegmentCompany())->getTable(), 'company_id', 'segment_id'); } + /** + * @return belongsToMany + */ + public function seasonalSegments() + { + return $this->hasMany(SeasonalSegment::class); + } + /** * @return belongsToMany */ diff --git a/app/Models/SeasonalSegment.php b/app/Models/SeasonalSegment.php new file mode 100644 index 00000000..30bb1796 --- /dev/null +++ b/app/Models/SeasonalSegment.php @@ -0,0 +1,48 @@ +BelongsTo(Company::class, 'company_id', 'id'); + } + + public function segment() + { + return $this->belongsTo(Segment::class); + } +} diff --git a/database/migrations/2023_03_16_223623_seasonal_segment_table.php b/database/migrations/2023_03_16_223623_seasonal_segment_table.php new file mode 100644 index 00000000..4b804086 --- /dev/null +++ b/database/migrations/2023_03_16_223623_seasonal_segment_table.php @@ -0,0 +1,41 @@ +id(); + $table->foreignId('company_id')->unsigned(); + $table->string('status')->default(ApprovalStatus::APPROVED); + $table->foreignId('segment_id')->unsigned(); + $table->timestamp('starting_on')->nullable(); + $table->timestamp('ending_on')->nullable(); + $table->softDeletes(); + $table->timestamps(); + + $table->foreign('segment_id')->references('id')->on('segments'); + $table->foreign('company_id')->references('id')->on('companies'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + // + } +} diff --git a/resources/assets/vue/components/companies/elements/SeasonalSegmentComponent.vue b/resources/assets/vue/components/companies/elements/SeasonalSegmentComponent.vue new file mode 100644 index 00000000..06726269 --- /dev/null +++ b/resources/assets/vue/components/companies/elements/SeasonalSegmentComponent.vue @@ -0,0 +1,47 @@ + + + \ No newline at end of file diff --git a/resources/assets/vue/components/companies/forms/AssignSegmentFormComponent.vue b/resources/assets/vue/components/companies/forms/AssignSegmentFormComponent.vue index 667bc76f..af164001 100644 --- a/resources/assets/vue/components/companies/forms/AssignSegmentFormComponent.vue +++ b/resources/assets/vue/components/companies/forms/AssignSegmentFormComponent.vue @@ -23,6 +23,23 @@ + +
+
+ + + + +

Please leave End Date empty if the end date is not confirmed or there is no end date.

+
+
Not Now
@@ -49,7 +66,9 @@ data(){ return { parameters: { - segment_id: '' + segment_id: '', + // starting_on: '', + ending_on: '', } } }, @@ -57,7 +76,9 @@ parameters: { segment_id: { required - } + }, + // starting_on: {}, + ending_on: {}, } }, computed: { diff --git a/resources/assets/vue/components/companies/forms/DetachSegmentFormComponent.vue b/resources/assets/vue/components/companies/forms/DetachSegmentFormComponent.vue index 7e87816d..8a276393 100644 --- a/resources/assets/vue/components/companies/forms/DetachSegmentFormComponent.vue +++ b/resources/assets/vue/components/companies/forms/DetachSegmentFormComponent.vue @@ -38,7 +38,11 @@ type: Number } }, - + methods: { + successHandler(){ + window.location.reload(); + } + }, mixins: [componentHandler, ModalFormHandler] } \ No newline at end of file diff --git a/resources/views/pages/settings.blade.php b/resources/views/pages/settings.blade.php index 787c1616..7db89c75 100644 --- a/resources/views/pages/settings.blade.php +++ b/resources/views/pages/settings.blade.php @@ -54,6 +54,29 @@
+
+
+
+
+
+
+
+
+ +
+
+
Seasonal Segment
+
+
+
+
+
+
+
+
DateBankDescriptionCreditCreditSystem ReferenceHuman ReferenceMatch?
'.$date->format('d-m-Y').''.$branch.''.$row['description'].''.$credit.''.$systemReference.''.$row['remarkreferences'].''.$matches.'
Bank Description CreditCredit System Reference Human Reference Match?
'.$date->format('d-m-Y').'Credit System Reference Human ReferenceMultiple Match?
'.$credit.' '.$systemReference.' '.$row['remarkreferences'].''.$multiple.' '.$matches.'
Bank Description CreditPay For System Reference Human Reference Multiple'.$branch.' '.$row['description'].' '.$credit.''.$row['pay_for'].' '.$systemReference.' '.$row['remarkreferences'].' '.$multiple.'