From 33c51091b80b8b0871b9d813819b0c765a58bedd Mon Sep 17 00:00:00 2001 From: Hillel Coren Date: Sun, 30 Apr 2017 16:09:17 +0300 Subject: [PATCH] Add invitations to check data --- app/Console/Commands/CheckData.php | 32 +++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/app/Console/Commands/CheckData.php b/app/Console/Commands/CheckData.php index f96e64b218b1..f57c17cae355 100644 --- a/app/Console/Commands/CheckData.php +++ b/app/Console/Commands/CheckData.php @@ -10,6 +10,7 @@ use Mail; use Symfony\Component\Console\Input\InputOption; use Utils; use App\Models\Contact; +use App\Models\Invitation; /* @@ -64,14 +65,15 @@ class CheckData extends Command $this->logMessage(date('Y-m-d') . ' Running CheckData...'); if (! $this->option('client_id')) { - $this->checkPaidToDate(); $this->checkBlankInvoiceHistory(); + $this->checkPaidToDate(); } $this->checkBalances(); $this->checkContacts(); if (! $this->option('client_id')) { + $this->checkInvitations(); $this->checkFailedJobs(); $this->checkAccountData(); } @@ -179,6 +181,34 @@ class CheckData extends Command $this->logMessage($count . ' activities with blank invoice backup'); } + private function checkInvitations() + { + $invoices = DB::table('invoices') + ->leftJoin('invitations', 'invitations.invoice_id', '=', 'invoices.id') + ->groupBy('invoices.id', 'invoices.user_id', 'invoices.account_id', 'invoices.client_id') + ->havingRaw('count(invitations.id) = 0') + ->get(['invoices.id', 'invoices.user_id', 'invoices.account_id', 'invoices.client_id']); + + $this->logMessage(count($invoices) . ' invoices without any invitations'); + + if (count($invoices) > 0) { + $this->isValid = false; + } + + if ($this->option('fix') == 'true') { + foreach ($invoices as $invoice) { + $invitation = new Invitation(); + $invitation->account_id = $invoice->account_id; + $invitation->user_id = $invoice->user_id; + $invitation->invoice_id = $invoice->id; + $invitation->contact_id = Contact::whereClientId($invoice->client_id)->whereIsPrimary(true)->first()->id; + $invitation->invitation_key = strtolower(str_random(RANDOM_KEY_LENGTH)); + $invitation->public_id = Invitation::whereAccountId($invoice->account_id)->withTrashed()->max('public_id') + 1; + $invitation->save(); + } + } + } + private function checkAccountData() { $tables = [