From 5ad82c124df1309bbc46835ba5be1a6724fc9984 Mon Sep 17 00:00:00 2001 From: David Bomba Date: Thu, 4 Nov 2021 18:25:15 +1100 Subject: [PATCH 1/6] Fixes for check data --- app/Console/Commands/CheckData.php | 43 +++++++++++++++--------------- 1 file changed, 21 insertions(+), 22 deletions(-) diff --git a/app/Console/Commands/CheckData.php b/app/Console/Commands/CheckData.php index ac6c388684fb..8fa974f95da0 100644 --- a/app/Console/Commands/CheckData.php +++ b/app/Console/Commands/CheckData.php @@ -648,25 +648,19 @@ ORDER BY clients.id; private function clientBalanceQuery() { $results = \DB::select( \DB::raw(" - SELECT - SUM(invoices.balance) as invoice_balance, - SUM(credits.balance) as credit_balance, - clients.id as client_id, - clients.balance as client_balance - FROM invoices - INNER JOIN - clients ON - clients.id=invoices.client_id - INNER JOIN - credits ON - credits.client_id = clients.id - WHERE invoices.is_deleted = false - AND invoices.status_id > 1 - AND credits.is_deleted = false - AND credits.status_id > 1 - GROUP BY clients.id - HAVING invoice_balance != clients.balance - ORDER BY clients.id; + SELECT + SUM(invoices.balance) as invoice_balance, + clients.id as client_id, + clients.balance as client_balance + FROM clients + LEFT JOIN + invoices ON + clients.id=invoices.client_id + WHERE invoices.is_deleted = false + AND invoices.status_id > 1 + GROUP BY clients.id + HAVING invoice_balance != clients.balance + ORDER BY clients.id; ") ); return $results; @@ -686,7 +680,12 @@ ORDER BY clients.id; { $client = (array)$client; - $invoice_balance = $client['invoice_balance'] - $client['credit_balance']; + // $credit_balance = Credit::withTrashed()->where('is_deleted', 0) + // ->where('client_id', $client['client_id']) + // ->where('status_id', '>', 1)->sum('balance'); + + // $invoice_balance = $client['invoice_balance'] - $credit_balance; + $invoice_balance = $client['invoice_balance']; $ledger = CompanyLedger::where('client_id', $client['client_id'])->orderBy('id', 'DESC')->first(); @@ -701,8 +700,8 @@ ORDER BY clients.id; if($this->option('client_balance')){ $this->logMessage("# {$client_object->id} " . $client_object->present()->name.' - '.$client_object->number." Fixing {$client_object->balance} to {$invoice_balance}"); - $client->balance = $invoice_balance; - $client->save(); + $client_object->balance = $invoice_balance; + $client_object->save(); $ledger->adjustment = $invoice_balance; $ledger->balance = $invoice_balance; From dddab73b91a7d02f0160f71f8ad311d226ca8b3a Mon Sep 17 00:00:00 2001 From: David Bomba Date: Thu, 4 Nov 2021 20:52:03 +1100 Subject: [PATCH 2/6] Fixes for payment hash types --- app/Jobs/Mail/PaymentFailedMailer.php | 2 +- app/Mail/Admin/PaymentFailureObject.php | 2 +- app/PaymentDrivers/BaseDriver.php | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/Jobs/Mail/PaymentFailedMailer.php b/app/Jobs/Mail/PaymentFailedMailer.php index 9d84a7459502..87663e159b16 100644 --- a/app/Jobs/Mail/PaymentFailedMailer.php +++ b/app/Jobs/Mail/PaymentFailedMailer.php @@ -36,7 +36,7 @@ class PaymentFailedMailer implements ShouldQueue { use Dispatchable, InteractsWithQueue, Queueable, SerializesModels, UserNotifies; - public PaymentHash $payment_hash; + public ?PaymentHash $payment_hash; public string $error; diff --git a/app/Mail/Admin/PaymentFailureObject.php b/app/Mail/Admin/PaymentFailureObject.php index 9094536ed1ff..b190d4a0a5db 100644 --- a/app/Mail/Admin/PaymentFailureObject.php +++ b/app/Mail/Admin/PaymentFailureObject.php @@ -33,7 +33,7 @@ class PaymentFailureObject public $amount; - public PaymentHash $payment_hash; + public ?PaymentHash $payment_hash; // private $invoices; /** diff --git a/app/PaymentDrivers/BaseDriver.php b/app/PaymentDrivers/BaseDriver.php index 778ebc5ff6f1..9b8d2ca04a12 100644 --- a/app/PaymentDrivers/BaseDriver.php +++ b/app/PaymentDrivers/BaseDriver.php @@ -71,7 +71,7 @@ class BaseDriver extends AbstractPaymentDriver public $payment_method; /* PaymentHash */ - public PaymentHash $payment_hash; + public ?PaymentHash $payment_hash; /* Array of payment methods */ public static $methods = []; From 68b228f45f9f6ad8f081407066cb1d5d875bc181 Mon Sep 17 00:00:00 2001 From: David Bomba Date: Fri, 5 Nov 2021 15:24:37 +1100 Subject: [PATCH 3/6] Minor fixes for Check Data --- app/Console/Commands/CheckData.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/app/Console/Commands/CheckData.php b/app/Console/Commands/CheckData.php index 8fa974f95da0..97b442b5b207 100644 --- a/app/Console/Commands/CheckData.php +++ b/app/Console/Commands/CheckData.php @@ -484,6 +484,9 @@ class CheckData extends Command } } + + $this->logMessage("{$this->wrong_paid_to_dates} clients with incorrect paid to dates"); + } From 916e20d90229bdbaa1b89b61057c8b6ab7b251c4 Mon Sep 17 00:00:00 2001 From: David Bomba Date: Fri, 5 Nov 2021 15:29:16 +1100 Subject: [PATCH 4/6] fixes for add user count logic --- app/Http/ValidationRules/Ninja/CanAddUserRule.php | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/app/Http/ValidationRules/Ninja/CanAddUserRule.php b/app/Http/ValidationRules/Ninja/CanAddUserRule.php index e568fa13298f..d8955f4629a0 100644 --- a/app/Http/ValidationRules/Ninja/CanAddUserRule.php +++ b/app/Http/ValidationRules/Ninja/CanAddUserRule.php @@ -11,6 +11,7 @@ namespace App\Http\ValidationRules\Ninja; +use App\Models\CompanyUser; use Illuminate\Contracts\Validation\Rule; /** @@ -30,6 +31,12 @@ class CanAddUserRule implements Rule */ public function passes($attribute, $value) { + // $count = CompanyUser::query() + // ->where('account_id', auth()->user()->account_id) + // ->distinct('user_id') + // ->count(); + + // return $count < auth()->user()->company()->account->num_users; return auth()->user()->company()->account->users->count() < auth()->user()->company()->account->num_users; } From 5f4e40162b58ccf1955b28942f2a082e657cd6d5 Mon Sep 17 00:00:00 2001 From: David Bomba Date: Fri, 5 Nov 2021 20:43:25 +1100 Subject: [PATCH 5/6] working on users --- app/Http/Controllers/UserController.php | 1 + app/Http/ValidationRules/Ninja/CanAddUserRule.php | 2 +- app/Jobs/Account/CreateAccount.php | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/app/Http/Controllers/UserController.php b/app/Http/Controllers/UserController.php index 2b790cf3709f..a43eab22f60a 100644 --- a/app/Http/Controllers/UserController.php +++ b/app/Http/Controllers/UserController.php @@ -536,6 +536,7 @@ class UserController extends BaseController */ public function bulk() { + /* Validate restore() here and check if restoring the user will exceed their user quote (hosted only)*/ $action = request()->input('action'); $ids = request()->input('ids'); diff --git a/app/Http/ValidationRules/Ninja/CanAddUserRule.php b/app/Http/ValidationRules/Ninja/CanAddUserRule.php index d8955f4629a0..11b159fb6c6b 100644 --- a/app/Http/ValidationRules/Ninja/CanAddUserRule.php +++ b/app/Http/ValidationRules/Ninja/CanAddUserRule.php @@ -37,7 +37,7 @@ class CanAddUserRule implements Rule // ->count(); // return $count < auth()->user()->company()->account->num_users; - return auth()->user()->company()->account->users->count() < auth()->user()->company()->account->num_users; + //return auth()->user()->company()->account->users->count() < auth()->user()->company()->account->num_users; } /** diff --git a/app/Jobs/Account/CreateAccount.php b/app/Jobs/Account/CreateAccount.php index 246b323b7b47..a34f266c764d 100644 --- a/app/Jobs/Account/CreateAccount.php +++ b/app/Jobs/Account/CreateAccount.php @@ -116,7 +116,7 @@ class CreateAccount $spaa9f78->fresh(); if(Ninja::isHosted()){ -nlog("welcome"); + App::forgetInstance('translator'); $t = app('translator'); $t->replace(Ninja::transformTranslations($sp035a66->settings)); From 88dfa3601b43be12ced317a52848bc421df5e646 Mon Sep 17 00:00:00 2001 From: David Bomba Date: Sat, 6 Nov 2021 10:28:48 +1100 Subject: [PATCH 6/6] Fixes for adding and restoring users --- app/Http/Controllers/UserController.php | 3 +- app/Http/Requests/User/BulkUserRequest.php | 48 ++++++++++++++++ .../ValidationRules/Ninja/CanAddUserRule.php | 13 +++-- .../Ninja/CanRestoreUserRule.php | 56 +++++++++++++++++++ 4 files changed, 114 insertions(+), 6 deletions(-) create mode 100644 app/Http/Requests/User/BulkUserRequest.php create mode 100644 app/Http/ValidationRules/Ninja/CanRestoreUserRule.php diff --git a/app/Http/Controllers/UserController.php b/app/Http/Controllers/UserController.php index a43eab22f60a..697dd36283ce 100644 --- a/app/Http/Controllers/UserController.php +++ b/app/Http/Controllers/UserController.php @@ -19,6 +19,7 @@ use App\Factory\UserFactory; use App\Filters\UserFilters; use App\Http\Controllers\Traits\VerifiesUserEmail; use App\Http\Requests\User\AttachCompanyUserRequest; +use App\Http\Requests\User\BulkUserRequest; use App\Http\Requests\User\CreateUserRequest; use App\Http\Requests\User\DestroyUserRequest; use App\Http\Requests\User\DetachCompanyUserRequest; @@ -534,7 +535,7 @@ class UserController extends BaseController * ), * ) */ - public function bulk() + public function bulk(BulkUserRequest $request) { /* Validate restore() here and check if restoring the user will exceed their user quote (hosted only)*/ $action = request()->input('action'); diff --git a/app/Http/Requests/User/BulkUserRequest.php b/app/Http/Requests/User/BulkUserRequest.php new file mode 100644 index 000000000000..3e87d64668db --- /dev/null +++ b/app/Http/Requests/User/BulkUserRequest.php @@ -0,0 +1,48 @@ +user()->isAdmin(); + } + + public function rules() + { + + $rules = []; + + if(Ninja::isHosted() && $this->action && $this->action == 'restore') + $rules['ids'] = new CanRestoreUserRule(); + + return $rules; + } + + protected function prepareForValidation() + { + $input = $this->all(); + + $this->replace($input); + } +} diff --git a/app/Http/ValidationRules/Ninja/CanAddUserRule.php b/app/Http/ValidationRules/Ninja/CanAddUserRule.php index 11b159fb6c6b..98ae76016d76 100644 --- a/app/Http/ValidationRules/Ninja/CanAddUserRule.php +++ b/app/Http/ValidationRules/Ninja/CanAddUserRule.php @@ -31,12 +31,15 @@ class CanAddUserRule implements Rule */ public function passes($attribute, $value) { - // $count = CompanyUser::query() - // ->where('account_id', auth()->user()->account_id) - // ->distinct('user_id') - // ->count(); - // return $count < auth()->user()->company()->account->num_users; + $count = CompanyUser::query() + ->with('user') + ->where('account_id', auth()->user()->account_id) + ->distinct() + ->select('user_id') + ->count(); + + return $count < auth()->user()->company()->account->num_users; //return auth()->user()->company()->account->users->count() < auth()->user()->company()->account->num_users; } diff --git a/app/Http/ValidationRules/Ninja/CanRestoreUserRule.php b/app/Http/ValidationRules/Ninja/CanRestoreUserRule.php new file mode 100644 index 000000000000..45bf5ec7f351 --- /dev/null +++ b/app/Http/ValidationRules/Ninja/CanRestoreUserRule.php @@ -0,0 +1,56 @@ +with(['company_user' => function ($query){ + return $query->whereNull('company_user.deleted_at'); + }]) + ->where('account_id', 1) + ->distinct() + ->select('users.id') + ->count(); + + return $count < auth()->user()->company()->account->num_users; + //return auth()->user()->company()->account->users->count() < auth()->user()->company()->account->num_users; + } + + /** + * @return string + */ + public function message() + { + return ctrans('texts.limit_users', ['limit' => auth()->user()->company()->account->num_users]); + } +}