Merge branch 'v2' into v2-fix-setup-issues

This commit is contained in:
Benjamin Beganović 2020-09-07 00:15:45 +02:00 committed by GitHub
commit 0bf39c739d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1157 changed files with 80401 additions and 81261 deletions

View File

@ -16,7 +16,7 @@ DB_PASSWORD=ninja
DB_CONNECTION=db-ninja-01 DB_CONNECTION=db-ninja-01
DB_DATABASE1=db-ninja-01 DB_DATABASE1=db-ninja-01
DB_DATABASE2=db-ninja-02 DB_DATABASE2=db-ninja-02
MAIL_DRIVER=log MAIL_MAILER=log
MAIL_PORT=587 MAIL_PORT=587
MAIL_ENCRYPTION=tls MAIL_ENCRYPTION=tls
MAIL_HOST= MAIL_HOST=

View File

@ -33,7 +33,7 @@ REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null REDIS_PASSWORD=null
REDIS_PORT=6379 REDIS_PORT=6379
MAIL_DRIVER=smtp MAIL_MAILER=smtp
MAIL_HOST=smtp.mailtrap.io MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525 MAIL_PORT=2525
MAIL_USERNAME=null MAIL_USERNAME=null

View File

@ -14,7 +14,7 @@ DB_CONNECTION=db-ninja-01
DB_DATABASE1=ninja01 DB_DATABASE1=ninja01
DB_DATABASE2=ninja02 DB_DATABASE2=ninja02
MAIL_DRIVER=log MAIL_MAILER=log
TRAVIS=true TRAVIS=true
API_SECRET=password API_SECRET=password
TEST_USERNAME=user@example.com TEST_USERNAME=user@example.com

View File

@ -70,13 +70,12 @@ class CheckData extends Command
public function handle() public function handle()
{ {
$this->logMessage(date('Y-m-d h:i:s') . ' Running CheckData...'); $this->logMessage(date('Y-m-d h:i:s').' Running CheckData...');
if ($database = $this->option('database')) { if ($database = $this->option('database')) {
config(['database.default' => $database]); config(['database.default' => $database]);
} }
$this->checkInvoiceBalances(); $this->checkInvoiceBalances();
$this->checkInvoicePayments(); $this->checkInvoicePayments();
$this->checkPaidToDates(); $this->checkPaidToDates();
@ -93,25 +92,25 @@ class CheckData extends Command
$this->checkFailedJobs(); $this->checkFailedJobs();
} }
$this->logMessage('Done: ' . strtoupper($this->isValid ? Account::RESULT_SUCCESS : Account::RESULT_FAILURE)); $this->logMessage('Done: '.strtoupper($this->isValid ? Account::RESULT_SUCCESS : Account::RESULT_FAILURE));
$errorEmail = config('ninja.error_email'); $errorEmail = config('ninja.error_email');
if ($errorEmail) { if ($errorEmail) {
Mail::raw($this->log, function ($message) use ($errorEmail, $database) { Mail::raw($this->log, function ($message) use ($errorEmail, $database) {
$message->to($errorEmail) $message->to($errorEmail)
->from(config('ninja.error_email')) ->from(config('ninja.error_email'))
->subject("Check-Data: " . strtoupper($this->isValid ? Account::RESULT_SUCCESS : Account::RESULT_FAILURE) . " [{$database}]"); ->subject('Check-Data: '.strtoupper($this->isValid ? Account::RESULT_SUCCESS : Account::RESULT_FAILURE)." [{$database}]");
}); });
} elseif (! $this->isValid) { } elseif (! $this->isValid) {
throw new Exception("Check data failed!!\n" . $this->log); throw new Exception("Check data failed!!\n".$this->log);
} }
} }
private function logMessage($str) private function logMessage($str)
{ {
$str = date('Y-m-d h:i:s') . ' ' . $str; $str = date('Y-m-d h:i:s').' '.$str;
$this->info($str); $this->info($str);
$this->log .= $str . "\n"; $this->log .= $str."\n";
} }
private function checkOAuth() private function checkOAuth()
@ -123,7 +122,7 @@ class CheckData extends Command
->havingRaw('count(users.id) > 1') ->havingRaw('count(users.id) > 1')
->get(['users.oauth_user_id']); ->get(['users.oauth_user_id']);
$this->logMessage($users->count() . ' users with duplicate oauth ids'); $this->logMessage($users->count().' users with duplicate oauth ids');
if ($users->count() > 0) { if ($users->count() > 0) {
$this->isValid = false; $this->isValid = false;
@ -132,7 +131,7 @@ class CheckData extends Command
if ($this->option('fix') == 'true') { if ($this->option('fix') == 'true') {
foreach ($users as $user) { foreach ($users as $user) {
$first = true; $first = true;
$this->logMessage('checking ' . $user->oauth_user_id); $this->logMessage('checking '.$user->oauth_user_id);
$matches = DB::table('users') $matches = DB::table('users')
->where('oauth_user_id', '=', $user->oauth_user_id) ->where('oauth_user_id', '=', $user->oauth_user_id)
->orderBy('id') ->orderBy('id')
@ -140,11 +139,11 @@ class CheckData extends Command
foreach ($matches as $match) { foreach ($matches as $match) {
if ($first) { if ($first) {
$this->logMessage('skipping ' . $match->id); $this->logMessage('skipping '.$match->id);
$first = false; $first = false;
continue; continue;
} }
$this->logMessage('updating ' . $match->id); $this->logMessage('updating '.$match->id);
DB::table('users') DB::table('users')
->where('id', '=', $match->id) ->where('id', '=', $match->id)
@ -165,7 +164,7 @@ class CheckData extends Command
->whereNull('contact_key') ->whereNull('contact_key')
->orderBy('id') ->orderBy('id')
->get(['id']); ->get(['id']);
$this->logMessage($contacts->count() . ' contacts without a contact_key'); $this->logMessage($contacts->count().' contacts without a contact_key');
if ($contacts->count() > 0) { if ($contacts->count() > 0) {
$this->isValid = false; $this->isValid = false;
@ -184,7 +183,7 @@ class CheckData extends Command
// check for missing contacts // check for missing contacts
$clients = DB::table('clients') $clients = DB::table('clients')
->leftJoin('client_contacts', function($join) { ->leftJoin('client_contacts', function ($join) {
$join->on('client_contacts.client_id', '=', 'clients.id') $join->on('client_contacts.client_id', '=', 'clients.id')
->whereNull('client_contacts.deleted_at'); ->whereNull('client_contacts.deleted_at');
}) })
@ -196,7 +195,7 @@ class CheckData extends Command
} }
$clients = $clients->get(['clients.id', 'clients.user_id', 'clients.company_id']); $clients = $clients->get(['clients.id', 'clients.user_id', 'clients.company_id']);
$this->logMessage($clients->count() . ' clients without any contacts'); $this->logMessage($clients->count().' clients without any contacts');
if ($clients->count() > 0) { if ($clients->count() > 0) {
$this->isValid = false; $this->isValid = false;
@ -217,7 +216,7 @@ class CheckData extends Command
// check for more than one primary contact // check for more than one primary contact
$clients = DB::table('clients') $clients = DB::table('clients')
->leftJoin('client_contacts', function($join) { ->leftJoin('client_contacts', function ($join) {
$join->on('client_contacts.client_id', '=', 'clients.id') $join->on('client_contacts.client_id', '=', 'clients.id')
->where('client_contacts.is_primary', '=', true) ->where('client_contacts.is_primary', '=', true)
->whereNull('client_contacts.deleted_at'); ->whereNull('client_contacts.deleted_at');
@ -230,7 +229,7 @@ class CheckData extends Command
} }
$clients = $clients->get(['clients.id', DB::raw('count(client_contacts.id)')]); $clients = $clients->get(['clients.id', DB::raw('count(client_contacts.id)')]);
$this->logMessage($clients->count() . ' clients without a single primary contact'); $this->logMessage($clients->count().' clients without a single primary contact');
if ($clients->count() > 0) { if ($clients->count() > 0) {
$this->isValid = false; $this->isValid = false;
@ -250,7 +249,7 @@ class CheckData extends Command
$this->isValid = false; $this->isValid = false;
} }
$this->logMessage($count . ' failed jobs'); $this->logMessage($count.' failed jobs');
} }
private function checkInvitations() private function checkInvitations()
@ -264,7 +263,7 @@ class CheckData extends Command
->havingRaw('count(invoice_invitations.id) = 0') ->havingRaw('count(invoice_invitations.id) = 0')
->get(['invoices.id', 'invoices.user_id', 'invoices.company_id', 'invoices.client_id']); ->get(['invoices.id', 'invoices.user_id', 'invoices.company_id', 'invoices.client_id']);
$this->logMessage($invoices->count() . ' invoices without any invitations'); $this->logMessage($invoices->count().' invoices without any invitations');
if ($invoices->count() > 0) { if ($invoices->count() > 0) {
$this->isValid = false; $this->isValid = false;
@ -285,134 +284,108 @@ class CheckData extends Command
private function checkInvoiceBalances() private function checkInvoiceBalances()
{ {
$wrong_balances = 0; $wrong_balances = 0;
$wrong_paid_to_dates = 0; $wrong_paid_to_dates = 0;
foreach(Client::cursor() as $client) foreach (Client::cursor() as $client) {
{
$invoice_balance = $client->invoices->where('is_deleted', false)->where('status_id', '>', 1)->sum('balance'); $invoice_balance = $client->invoices->where('is_deleted', false)->where('status_id', '>', 1)->sum('balance');
$ledger = CompanyLedger::where('client_id', $client->id)->orderBy('id', 'DESC')->first(); $ledger = CompanyLedger::where('client_id', $client->id)->orderBy('id', 'DESC')->first();
if($ledger && number_format($invoice_balance, 4) != number_format($client->balance, 4)) if ($ledger && number_format($invoice_balance, 4) != number_format($client->balance, 4)) {
{
$wrong_balances++; $wrong_balances++;
$this->logMessage($client->present()->name . " - " . $client->id . " - balances do not match Invoice Balance = {$invoice_balance} Client Balance = {$client->balance} Ledger Balance = {$ledger->balance}"); $this->logMessage($client->present()->name.' - '.$client->id." - balances do not match Invoice Balance = {$invoice_balance} Client Balance = {$client->balance} Ledger Balance = {$ledger->balance}");
$this->isValid = false; $this->isValid = false;
} }
}
} $this->logMessage("{$wrong_balances} clients with incorrect balances");
$this->logMessage("{$wrong_balances} clients with incorrect balances");
} }
private function checkPaidToDates() private function checkPaidToDates()
{ {
$wrong_paid_to_dates = 0; $wrong_paid_to_dates = 0;
Client::withTrashed()->cursor()->each(function ($client) use($wrong_paid_to_dates){ Client::withTrashed()->cursor()->each(function ($client) use ($wrong_paid_to_dates) {
$total_invoice_payments = 0;
$total_invoice_payments = 0; foreach ($client->invoices as $invoice) {
foreach($client->invoices as $invoice)
{
$total_amount = $invoice->payments->sum('pivot.amount'); $total_amount = $invoice->payments->sum('pivot.amount');
$total_refund = $invoice->payments->sum('pivot.refunded'); $total_refund = $invoice->payments->sum('pivot.refunded');
$total_invoice_payments += ($total_amount - $total_refund); $total_invoice_payments += ($total_amount - $total_refund);
} }
if(round($total_invoice_payments,2) != round($client->paid_to_date,2)) { if (round($total_invoice_payments, 2) != round($client->paid_to_date, 2)) {
$wrong_paid_to_dates++; $wrong_paid_to_dates++;
$this->logMessage($client->present()->name . " - " . $client->id . " - Paid to date does not match Client Paid To Date = {$client->paid_to_date} - Invoice Payments = {$total_invoice_payments}"); $this->logMessage($client->present()->name.' - '.$client->id." - Paid to date does not match Client Paid To Date = {$client->paid_to_date} - Invoice Payments = {$total_invoice_payments}");
$this->isValid = false; $this->isValid = false;
} }
}); });
$this->logMessage("{$wrong_paid_to_dates} clients with incorrect paid to dates"); $this->logMessage("{$wrong_paid_to_dates} clients with incorrect paid to dates");
} }
private function checkInvoicePayments() private function checkInvoicePayments()
{ {
$wrong_balances = 0; $wrong_balances = 0;
$wrong_paid_to_dates = 0; $wrong_paid_to_dates = 0;
//todo reversing an invoice breaks the check data at this point; //todo reversing an invoice breaks the check data at this point;
Client::cursor()->each(function ($client) use($wrong_balances){
$client->invoices->where('is_deleted', false)->each(function ($invoice) use($wrong_balances, $client){
Client::cursor()->each(function ($client) use ($wrong_balances) {
$client->invoices->where('is_deleted', false)->each(function ($invoice) use ($wrong_balances, $client) {
$total_amount = $invoice->payments->sum('pivot.amount'); $total_amount = $invoice->payments->sum('pivot.amount');
$total_refund = $invoice->payments->sum('pivot.refunded'); $total_refund = $invoice->payments->sum('pivot.refunded');
$total_credit = $invoice->credits->sum('amount'); $total_credit = $invoice->credits->sum('amount');
$total_paid = $total_amount - $total_refund; $total_paid = $total_amount - $total_refund;
if($total_paid != ($invoice->amount - $invoice->balance - $total_credit)) { if ($total_paid != ($invoice->amount - $invoice->balance - $total_credit)) {
$wrong_balances++; $wrong_balances++;
$this->logMessage($client->present()->name . " - " . $client->id . " - balances do not match Invoice Amount = {$invoice->amount} - Invoice Balance = {$invoice->balance} Total paid = {$total_paid}"); $this->logMessage($client->present()->name.' - '.$client->id." - balances do not match Invoice Amount = {$invoice->amount} - Invoice Balance = {$invoice->balance} Total paid = {$total_paid}");
$this->isValid = false; $this->isValid = false;
} }
}); });
}); });
$this->logMessage("{$wrong_balances} clients with incorrect invoice balances"); $this->logMessage("{$wrong_balances} clients with incorrect invoice balances");
} }
private function checkClientBalances() private function checkClientBalances()
{ {
$wrong_balances = 0; $wrong_balances = 0;
$wrong_paid_to_dates = 0; $wrong_paid_to_dates = 0;
foreach(Client::cursor() as $client) foreach (Client::cursor() as $client) {
{
$invoice_balance = $client->invoices->sum('balance'); $invoice_balance = $client->invoices->sum('balance');
$invoice_amounts = $client->invoices->sum('amount') - $invoice_balance; $invoice_amounts = $client->invoices->sum('amount') - $invoice_balance;
$credit_amounts = 0; $credit_amounts = 0;
foreach($client->invoices as $invoice) foreach ($client->invoices as $invoice) {
{
$credit_amounts += $invoice->credits->sum('amount'); $credit_amounts += $invoice->credits->sum('amount');
}; }
/*To handle invoice reversals, we need to "ADD BACK" the credit amounts here*/ /*To handle invoice reversals, we need to "ADD BACK" the credit amounts here*/
$client_paid_to_date = $client->paid_to_date + $credit_amounts; $client_paid_to_date = $client->paid_to_date + $credit_amounts;
$ledger = CompanyLedger::where('client_id', $client->id)->orderBy('id', 'DESC')->first(); $ledger = CompanyLedger::where('client_id', $client->id)->orderBy('id', 'DESC')->first();
if($ledger && (string)$invoice_amounts != (string)$client_paid_to_date) if ($ledger && (string) $invoice_amounts != (string) $client_paid_to_date) {
{
$wrong_paid_to_dates++; $wrong_paid_to_dates++;
$this->logMessage($client->present()->name . " - " . $client->id . " - client paid to dates do not match {$invoice_amounts} - " .rtrim($client_paid_to_date, "0")); $this->logMessage($client->present()->name.' - '.$client->id." - client paid to dates do not match {$invoice_amounts} - ".rtrim($client_paid_to_date, '0'));
$this->isValid = false; $this->isValid = false;
} }
}
} $this->logMessage("{$wrong_paid_to_dates} clients with incorrect paid_to_dates");
$this->logMessage("{$wrong_paid_to_dates} clients with incorrect paid_to_dates");
} }
private function checkLogoFiles() private function checkLogoFiles()
@ -460,7 +433,6 @@ class CheckData extends Command
]; ];
} }
private function checkCompanyData() private function checkCompanyData()
{ {
$tables = [ $tables = [
@ -497,29 +469,24 @@ class CheckData extends Command
if ($records->count()) { if ($records->count()) {
$this->isValid = false; $this->isValid = false;
$this->logMessage($records->count() . " {$table} records with incorrect {$entityType} company id"); $this->logMessage($records->count()." {$table} records with incorrect {$entityType} company id");
} }
} }
} }
// foreach(User::cursor() as $user) { // foreach(User::cursor() as $user) {
// $records = Company::where('account_id',) // $records = Company::where('account_id',)
// } // }
} }
public function pluralizeEntityType($type) public function pluralizeEntityType($type)
{ {
if ($type === 'company') { if ($type === 'company') {
return 'companies'; return 'companies';
} }
return $type . 's'; return $type.'s';
} }
} }

View File

@ -81,7 +81,6 @@ class CreateTestData extends Command
$this->createLargeAccount(); $this->createLargeAccount();
} }
private function createSmallAccount() private function createSmallAccount()
{ {
$this->info('Creating Small Account and Company'); $this->info('Creating Small Account and Company');
@ -92,20 +91,19 @@ class CreateTestData extends Command
'slack_webhook_url' => config('ninja.notification.slack'), 'slack_webhook_url' => config('ninja.notification.slack'),
]); ]);
$account->default_company_id = $company->id; $account->default_company_id = $company->id;
$account->save(); $account->save();
$user = User::whereEmail('small@example.com')->first(); $user = User::whereEmail('small@example.com')->first();
if (!$user) { if (! $user) {
$user = factory(\App\Models\User::class)->create([ $user = factory(\App\Models\User::class)->create([
'account_id' => $account->id, 'account_id' => $account->id,
'email' => 'small@example.com', 'email' => 'small@example.com',
'confirmation_code' => $this->createDbHash(config('database.default')) 'confirmation_code' => $this->createDbHash(config('database.default')),
]); ]);
} }
$company_token = new CompanyToken; $company_token = new CompanyToken;
$company_token->user_id = $user->id; $company_token->user_id = $user->id;
$company_token->company_id = $company->id; $company_token->company_id = $company->id;
@ -131,17 +129,16 @@ class CreateTestData extends Command
'company_id' => $company->id, 'company_id' => $company->id,
]); ]);
$this->info('Creating '.$this->count. ' clients'); $this->info('Creating '.$this->count.' clients');
for ($x=0; $x<$this->count; $x++) { for ($x = 0; $x < $this->count; $x++) {
$z = $x+1; $z = $x + 1;
$this->info("Creating client # ".$z); $this->info('Creating client # '.$z);
$this->createClient($company, $user); $this->createClient($company, $user);
} }
for($x=0; $x<$this->count; $x++) for ($x = 0; $x < $this->count; $x++) {
{
$client = $company->clients->random(); $client = $company->clients->random();
$this->info('creating invoice for client #'.$client->id); $this->info('creating invoice for client #'.$client->id);
@ -177,7 +174,6 @@ class CreateTestData extends Command
$this->info('creating project for client #'.$client->id); $this->info('creating project for client #'.$client->id);
$this->createProject($client); $this->createProject($client);
} }
} }
private function createMediumAccount() private function createMediumAccount()
@ -195,11 +191,11 @@ class CreateTestData extends Command
$user = User::whereEmail('medium@example.com')->first(); $user = User::whereEmail('medium@example.com')->first();
if (!$user) { if (! $user) {
$user = factory(\App\Models\User::class)->create([ $user = factory(\App\Models\User::class)->create([
'account_id' => $account->id, 'account_id' => $account->id,
'email' => 'medium@example.com', 'email' => 'medium@example.com',
'confirmation_code' => $this->createDbHash(config('database.default')) 'confirmation_code' => $this->createDbHash(config('database.default')),
]); ]);
} }
@ -222,25 +218,23 @@ class CreateTestData extends Command
'settings' => null, 'settings' => null,
]); ]);
factory(\App\Models\Product::class, 50)->create([ factory(\App\Models\Product::class, 50)->create([
'user_id' => $user->id, 'user_id' => $user->id,
'company_id' => $company->id, 'company_id' => $company->id,
]); ]);
$this->count = $this->count*10; $this->count = $this->count * 10;
$this->info('Creating '.$this->count. ' clients'); $this->info('Creating '.$this->count.' clients');
for ($x=0; $x<$this->count; $x++) { for ($x = 0; $x < $this->count; $x++) {
$z = $x+1; $z = $x + 1;
$this->info("Creating client # ".$z); $this->info('Creating client # '.$z);
$this->createClient($company, $user); $this->createClient($company, $user);
} }
for($x=0; $x<$this->count*100; $x++) for ($x = 0; $x < $this->count * 100; $x++) {
{
$client = $company->clients->random(); $client = $company->clients->random();
$this->info('creating invoice for client #'.$client->id); $this->info('creating invoice for client #'.$client->id);
@ -294,11 +288,11 @@ class CreateTestData extends Command
$user = User::whereEmail('large@example.com')->first(); $user = User::whereEmail('large@example.com')->first();
if (!$user) { if (! $user) {
$user = factory(\App\Models\User::class)->create([ $user = factory(\App\Models\User::class)->create([
'account_id' => $account->id, 'account_id' => $account->id,
'email' => 'large@example.com', 'email' => 'large@example.com',
'confirmation_code' => $this->createDbHash(config('database.default')) 'confirmation_code' => $this->createDbHash(config('database.default')),
]); ]);
} }
@ -321,26 +315,23 @@ class CreateTestData extends Command
'settings' => null, 'settings' => null,
]); ]);
factory(\App\Models\Product::class, 15000)->create([ factory(\App\Models\Product::class, 15000)->create([
'user_id' => $user->id, 'user_id' => $user->id,
'company_id' => $company->id, 'company_id' => $company->id,
]); ]);
$this->count = $this->count*100; $this->count = $this->count * 100;
$this->info('Creating '.$this->count. ' clients'); $this->info('Creating '.$this->count.' clients');
for ($x = 0; $x < $this->count * 500; $x++) {
for ($x=0; $x<$this->count*500; $x++) { $z = $x + 1;
$z = $x+1; $this->info('Creating client # '.$z);
$this->info("Creating client # ".$z);
$this->createClient($company, $user); $this->createClient($company, $user);
} }
for($x=0; $x<$this->count; $x++) for ($x = 0; $x < $this->count; $x++) {
{
$client = $company->clients->random(); $client = $company->clients->random();
$this->info('creating invoice for client #'.$client->id); $this->info('creating invoice for client #'.$client->id);
@ -382,37 +373,36 @@ class CreateTestData extends Command
{ {
// dispatch(function () use ($company, $user) { // dispatch(function () use ($company, $user) {
// }); // });
$client = factory(\App\Models\Client::class)->create([ $client = factory(\App\Models\Client::class)->create([
'user_id' => $user->id, 'user_id' => $user->id,
'company_id' => $company->id 'company_id' => $company->id,
]); ]);
factory(\App\Models\ClientContact::class, 1)->create([ factory(\App\Models\ClientContact::class, 1)->create([
'user_id' => $user->id, 'user_id' => $user->id,
'client_id' => $client->id, 'client_id' => $client->id,
'company_id' => $company->id, 'company_id' => $company->id,
'is_primary' => 1 'is_primary' => 1,
]); ]);
factory(\App\Models\ClientContact::class, rand(1, 5))->create([ factory(\App\Models\ClientContact::class, rand(1, 5))->create([
'user_id' => $user->id, 'user_id' => $user->id,
'client_id' => $client->id, 'client_id' => $client->id,
'company_id' => $company->id 'company_id' => $company->id,
]); ]);
$client->id_number = $this->getNextClientNumber($client); $client->id_number = $this->getNextClientNumber($client);
$settings = $client->settings; $settings = $client->settings;
$settings->currency_id = (string)rand(1,79); $settings->currency_id = (string) rand(1, 79);
$client->settings = $settings; $client->settings = $settings;
$country = Country::all()->random(); $country = Country::all()->random();
$client->country_id = $country->id; $client->country_id = $country->id;
$client->save(); $client->save();
} }
private function createExpense($client) private function createExpense($client)
@ -420,7 +410,7 @@ class CreateTestData extends Command
factory(\App\Models\Expense::class, rand(1, 5))->create([ factory(\App\Models\Expense::class, rand(1, 5))->create([
'user_id' => $client->user->id, 'user_id' => $client->user->id,
'client_id' => $client->id, 'client_id' => $client->id,
'company_id' => $client->company->id 'company_id' => $client->company->id,
]); ]);
} }
@ -428,22 +418,21 @@ class CreateTestData extends Command
{ {
$vendor = factory(\App\Models\Vendor::class)->create([ $vendor = factory(\App\Models\Vendor::class)->create([
'user_id' => $client->user->id, 'user_id' => $client->user->id,
'company_id' => $client->company->id 'company_id' => $client->company->id,
]); ]);
factory(\App\Models\VendorContact::class, 1)->create([ factory(\App\Models\VendorContact::class, 1)->create([
'user_id' => $client->user->id, 'user_id' => $client->user->id,
'vendor_id' => $vendor->id, 'vendor_id' => $vendor->id,
'company_id' => $client->company->id, 'company_id' => $client->company->id,
'is_primary' => 1 'is_primary' => 1,
]); ]);
factory(\App\Models\VendorContact::class, rand(1, 5))->create([ factory(\App\Models\VendorContact::class, rand(1, 5))->create([
'user_id' => $client->user->id, 'user_id' => $client->user->id,
'vendor_id' => $vendor->id, 'vendor_id' => $vendor->id,
'company_id' => $client->company->id, 'company_id' => $client->company->id,
'is_primary' => 0 'is_primary' => 0,
]); ]);
} }
@ -451,7 +440,7 @@ class CreateTestData extends Command
{ {
$vendor = factory(\App\Models\Task::class)->create([ $vendor = factory(\App\Models\Task::class)->create([
'user_id' => $client->user->id, 'user_id' => $client->user->id,
'company_id' => $client->company->id 'company_id' => $client->company->id,
]); ]);
} }
@ -459,7 +448,7 @@ class CreateTestData extends Command
{ {
$vendor = factory(\App\Models\Project::class)->create([ $vendor = factory(\App\Models\Project::class)->create([
'user_id' => $client->user->id, 'user_id' => $client->user->id,
'company_id' => $client->company->id 'company_id' => $client->company->id,
]); ]);
} }
@ -471,7 +460,7 @@ class CreateTestData extends Command
$faker = \Faker\Factory::create(); $faker = \Faker\Factory::create();
$invoice = InvoiceFactory::create($client->company->id, $client->user->id);//stub the company and user_id $invoice = InvoiceFactory::create($client->company->id, $client->user->id); //stub the company and user_id
$invoice->client_id = $client->id; $invoice->client_id = $client->id;
// $invoice->date = $faker->date(); // $invoice->date = $faker->date();
$dateable = Carbon::now()->subDays(rand(0, 90)); $dateable = Carbon::now()->subDays(rand(0, 90));
@ -511,9 +500,7 @@ class CreateTestData extends Command
$this->invoice_repo->markSent($invoice); $this->invoice_repo->markSent($invoice);
if (rand(0, 1)) { if (rand(0, 1)) {
$invoice = $invoice->service()->markPaid()->save(); $invoice = $invoice->service()->markPaid()->save();
} }
//@todo this slow things down, but gives us PDFs of the invoices for inspection whilst debugging. //@todo this slow things down, but gives us PDFs of the invoices for inspection whilst debugging.
event(new InvoiceWasCreated($invoice, $invoice->company, Ninja::eventVars())); event(new InvoiceWasCreated($invoice, $invoice->company, Ninja::eventVars()));
@ -572,10 +559,10 @@ class CreateTestData extends Command
$faker = \Faker\Factory::create(); $faker = \Faker\Factory::create();
//$quote = QuoteFactory::create($client->company->id, $client->user->id);//stub the company and user_id //$quote = QuoteFactory::create($client->company->id, $client->user->id);//stub the company and user_id
$quote =factory(\App\Models\Quote::class)->create(['user_id' => $client->user->id, 'company_id' => $client->company->id, 'client_id' => $client->id]); $quote = factory(\App\Models\Quote::class)->create(['user_id' => $client->user->id, 'company_id' => $client->company->id, 'client_id' => $client->id]);
$quote->date = $faker->date(); $quote->date = $faker->date();
$quote->client_id = $client->id; $quote->client_id = $client->id;
$quote->setRelation('client', $client); $quote->setRelation('client', $client);
$quote->line_items = $this->buildLineItems(rand(1, 10)); $quote->line_items = $this->buildLineItems(rand(1, 10));
@ -613,7 +600,7 @@ class CreateTestData extends Command
{ {
$line_items = []; $line_items = [];
for ($x=0; $x<$count; $x++) { for ($x = 0; $x < $count; $x++) {
$item = InvoiceItemFactory::create(); $item = InvoiceItemFactory::create();
$item->quantity = 1; $item->quantity = 1;
//$item->cost = 10; //$item->cost = 10;
@ -635,7 +622,7 @@ class CreateTestData extends Command
$product = Product::all()->random(); $product = Product::all()->random();
$item->cost = (float)$product->cost; $item->cost = (float) $product->cost;
$item->product_key = $product->product_key; $item->product_key = $product->product_key;
$item->notes = $product->notes; $item->notes = $product->notes;
$item->custom_value1 = $product->custom_value1; $item->custom_value1 = $product->custom_value1;
@ -643,8 +630,6 @@ class CreateTestData extends Command
$item->custom_value3 = $product->custom_value3; $item->custom_value3 = $product->custom_value3;
$item->custom_value4 = $product->custom_value4; $item->custom_value4 = $product->custom_value4;
$line_items[] = $item; $line_items[] = $item;
} }

View File

@ -21,8 +21,8 @@ use Carbon\Carbon;
use Composer\Composer; use Composer\Composer;
use Composer\Console\Application; use Composer\Console\Application;
use Composer\Factory; use Composer\Factory;
use Composer\IO\NullIO;
use Composer\Installer; use Composer\Installer;
use Composer\IO\NullIO;
use Illuminate\Console\Command; use Illuminate\Console\Command;
use Illuminate\Support\Facades\Artisan; use Illuminate\Support\Facades\Artisan;
use Illuminate\Support\Facades\Cache; use Illuminate\Support\Facades\Cache;
@ -53,7 +53,7 @@ class DemoMode extends Command
protected $description = 'Setup demo mode'; protected $description = 'Setup demo mode';
protected $invoice_repo; protected $invoice_repo;
public function __construct(InvoiceRepository $invoice_repo) public function __construct(InvoiceRepository $invoice_repo)
{ {
parent::__construct(); parent::__construct();
@ -71,7 +71,7 @@ class DemoMode extends Command
set_time_limit(0); set_time_limit(0);
$cached_tables = config('ninja.cached_tables'); $cached_tables = config('ninja.cached_tables');
foreach ($cached_tables as $name => $class) { foreach ($cached_tables as $name => $class) {
if (! Cache::has($name)) { if (! Cache::has($name)) {
// check that the table exists in case the migration is pending // check that the table exists in case the migration is pending
@ -94,25 +94,20 @@ class DemoMode extends Command
} }
} }
$this->info('Migrating');
$this->info("Migrating");
Artisan::call('migrate:fresh --force'); Artisan::call('migrate:fresh --force');
$this->info("Seeding"); $this->info('Seeding');
Artisan::call('db:seed --force'); Artisan::call('db:seed --force');
$this->info("Seeding Random Data"); $this->info('Seeding Random Data');
$this->createSmallAccount(); $this->createSmallAccount();
VersionCheck::dispatchNow(); VersionCheck::dispatchNow();
CompanySizeCheck::dispatchNow(); CompanySizeCheck::dispatchNow();
} }
private function createSmallAccount() private function createSmallAccount()
{ {
$faker = \Faker\Factory::create(); $faker = \Faker\Factory::create();
@ -127,10 +122,10 @@ class DemoMode extends Command
'slack_webhook_url' => config('ninja.notification.slack'), 'slack_webhook_url' => config('ninja.notification.slack'),
'enabled_modules' => 32767, 'enabled_modules' => 32767,
'company_key' => 'KEY', 'company_key' => 'KEY',
'enable_shop_api' => true 'enable_shop_api' => true,
]); ]);
$settings = $company->settings; $settings = $company->settings;
$settings->name = $faker->company; $settings->name = $faker->company;
$settings->address1 = $faker->buildingNumber; $settings->address1 = $faker->buildingNumber;
@ -139,25 +134,25 @@ class DemoMode extends Command
$settings->state = $faker->state; $settings->state = $faker->state;
$settings->postal_code = $faker->postcode; $settings->postal_code = $faker->postcode;
$settings->website = $faker->url; $settings->website = $faker->url;
$settings->vat_number = (string)$faker->numberBetween(123456789, 987654321); $settings->vat_number = (string) $faker->numberBetween(123456789, 987654321);
$settings->phone = (string)$faker->phoneNumber; $settings->phone = (string) $faker->phoneNumber;
$company->settings = $settings; $company->settings = $settings;
$company->save(); $company->save();
$account->default_company_id = $company->id; $account->default_company_id = $company->id;
$account->save(); $account->save();
$user = User::whereEmail('small@example.com')->first(); $user = User::whereEmail('small@example.com')->first();
if (!$user) { if (! $user) {
$user = factory(\App\Models\User::class)->create([ $user = factory(\App\Models\User::class)->create([
'account_id' => $account->id, 'account_id' => $account->id,
'email' => 'small@example.com', 'email' => 'small@example.com',
'confirmation_code' => $this->createDbHash(config('database.default')) 'confirmation_code' => $this->createDbHash(config('database.default')),
]); ]);
} }
$company_token = new CompanyToken; $company_token = new CompanyToken;
$company_token->user_id = $user->id; $company_token->user_id = $user->id;
$company_token->company_id = $company->id; $company_token->company_id = $company->id;
@ -165,7 +160,7 @@ class DemoMode extends Command
$company_token->name = 'test token'; $company_token->name = 'test token';
$company_token->token = Str::random(64); $company_token->token = Str::random(64);
$company_token->is_system = true; $company_token->is_system = true;
$company_token->save(); $company_token->save();
$user->companies()->attach($company->id, [ $user->companies()->attach($company->id, [
@ -180,13 +175,12 @@ class DemoMode extends Command
$u2 = User::where('email', 'demo@invoiceninja.com')->first(); $u2 = User::where('email', 'demo@invoiceninja.com')->first();
if(!$u2){ if (! $u2) {
$u2 = factory(\App\Models\User::class)->create([ $u2 = factory(\App\Models\User::class)->create([
'email' => 'demo@invoiceninja.com', 'email' => 'demo@invoiceninja.com',
'password' => Hash::make('demo'), 'password' => Hash::make('demo'),
'account_id' => $account->id, 'account_id' => $account->id,
'confirmation_code' => $this->createDbHash(config('database.default')) 'confirmation_code' => $this->createDbHash(config('database.default')),
]); ]);
$company_token = new CompanyToken; $company_token = new CompanyToken;
@ -213,43 +207,41 @@ class DemoMode extends Command
'company_id' => $company->id, 'company_id' => $company->id,
]); ]);
$this->info('Creating '.$this->count. ' clients'); $this->info('Creating '.$this->count.' clients');
for ($x=0; $x<$this->count; $x++) { for ($x = 0; $x < $this->count; $x++) {
$z = $x+1; $z = $x + 1;
$this->info("Creating client # ".$z); $this->info('Creating client # '.$z);
$this->createClient($company, $user, $u2->id); $this->createClient($company, $user, $u2->id);
} }
for($x=0; $x<$this->count; $x++) for ($x = 0; $x < $this->count; $x++) {
{
$client = $company->clients->random(); $client = $company->clients->random();
$this->info('creating entities for client #'.$client->id); $this->info('creating entities for client #'.$client->id);
$this->createInvoice($client, $u2->id); $this->createInvoice($client, $u2->id);
// for($y=0; $y<($this->count); $y++){ // for($y=0; $y<($this->count); $y++){
// $this->info("creating invoice #{$y} for client #".$client->id); // $this->info("creating invoice #{$y} for client #".$client->id);
// } // }
$client = $company->clients->random(); $client = $company->clients->random();
$this->createCredit($client, $u2->id); $this->createCredit($client, $u2->id);
// for($y=0; $y<($this->count); $y++){ // for($y=0; $y<($this->count); $y++){
// $this->info("creating credit #{$y} for client #".$client->id); // $this->info("creating credit #{$y} for client #".$client->id);
// } // }
$client = $company->clients->random(); $client = $company->clients->random();
$this->createQuote($client, $u2->id); $this->createQuote($client, $u2->id);
// for($y=0; $y<($this->count); $y++){ // for($y=0; $y<($this->count); $y++){
// $this->info("creating quote #{$y} for client #".$client->id); // $this->info("creating quote #{$y} for client #".$client->id);
// } // }
$client = $company->clients->random(); $client = $company->clients->random();
$this->createExpense($client, $u2->id); $this->createExpense($client, $u2->id);
//$this->info("creating expense for client #".$client->id); //$this->info("creating expense for client #".$client->id);
@ -268,45 +260,44 @@ class DemoMode extends Command
// $this->info("creating project for client #".$client->id); // $this->info("creating project for client #".$client->id);
} }
} }
private function createClient($company, $user, $assigned_user_id = null) private function createClient($company, $user, $assigned_user_id = null)
{ {
// dispatch(function () use ($company, $user) { // dispatch(function () use ($company, $user) {
// }); // });
$client = factory(\App\Models\Client::class)->create([ $client = factory(\App\Models\Client::class)->create([
'user_id' => $user->id, 'user_id' => $user->id,
'company_id' => $company->id 'company_id' => $company->id,
]); ]);
factory(\App\Models\ClientContact::class)->create([ factory(\App\Models\ClientContact::class)->create([
'user_id' => $user->id, 'user_id' => $user->id,
'client_id' => $client->id, 'client_id' => $client->id,
'company_id' => $company->id, 'company_id' => $company->id,
'is_primary' => 1 'is_primary' => 1,
]); ]);
factory(\App\Models\ClientContact::class, rand(1, 5))->create([ factory(\App\Models\ClientContact::class, rand(1, 5))->create([
'user_id' => $user->id, 'user_id' => $user->id,
'client_id' => $client->id, 'client_id' => $client->id,
'company_id' => $company->id 'company_id' => $company->id,
]); ]);
$client->id_number = $this->getNextClientNumber($client); $client->id_number = $this->getNextClientNumber($client);
$settings = $client->settings; $settings = $client->settings;
$settings->currency_id = (string)rand(1,3); $settings->currency_id = (string) rand(1, 3);
$client->settings = $settings; $client->settings = $settings;
if(rand(0,1)) if (rand(0, 1)) {
$client->assigned_user_id = $assigned_user_id; $client->assigned_user_id = $assigned_user_id;
}
$client->country_id = array_rand([36,392,840,124,276,826]); $client->country_id = array_rand([36, 392, 840, 124, 276, 826]);
$client->save(); $client->save();
} }
private function createExpense($client) private function createExpense($client)
@ -314,7 +305,7 @@ class DemoMode extends Command
factory(\App\Models\Expense::class, rand(1, 5))->create([ factory(\App\Models\Expense::class, rand(1, 5))->create([
'user_id' => $client->user_id, 'user_id' => $client->user_id,
'client_id' => $client->id, 'client_id' => $client->id,
'company_id' => $client->company_id 'company_id' => $client->company_id,
]); ]);
} }
@ -322,22 +313,21 @@ class DemoMode extends Command
{ {
$vendor = factory(\App\Models\Vendor::class)->create([ $vendor = factory(\App\Models\Vendor::class)->create([
'user_id' => $client->user_id, 'user_id' => $client->user_id,
'company_id' => $client->company_id 'company_id' => $client->company_id,
]); ]);
factory(\App\Models\VendorContact::class)->create([ factory(\App\Models\VendorContact::class)->create([
'user_id' => $client->user->id, 'user_id' => $client->user->id,
'vendor_id' => $vendor->id, 'vendor_id' => $vendor->id,
'company_id' => $client->company_id, 'company_id' => $client->company_id,
'is_primary' => 1 'is_primary' => 1,
]); ]);
factory(\App\Models\VendorContact::class, rand(1, 5))->create([ factory(\App\Models\VendorContact::class, rand(1, 5))->create([
'user_id' => $client->user->id, 'user_id' => $client->user->id,
'vendor_id' => $vendor->id, 'vendor_id' => $vendor->id,
'company_id' => $client->company_id, 'company_id' => $client->company_id,
'is_primary' => 0 'is_primary' => 0,
]); ]);
} }
@ -345,7 +335,7 @@ class DemoMode extends Command
{ {
$vendor = factory(\App\Models\Task::class)->create([ $vendor = factory(\App\Models\Task::class)->create([
'user_id' => $client->user->id, 'user_id' => $client->user->id,
'company_id' => $client->company_id 'company_id' => $client->company_id,
]); ]);
} }
@ -353,7 +343,7 @@ class DemoMode extends Command
{ {
$vendor = factory(\App\Models\Project::class)->create([ $vendor = factory(\App\Models\Project::class)->create([
'user_id' => $client->user->id, 'user_id' => $client->user->id,
'company_id' => $client->company_id 'company_id' => $client->company_id,
]); ]);
} }
@ -365,13 +355,14 @@ class DemoMode extends Command
$faker = \Faker\Factory::create(); $faker = \Faker\Factory::create();
$invoice = InvoiceFactory::create($client->company->id, $client->user->id);//stub the company and user_id $invoice = InvoiceFactory::create($client->company->id, $client->user->id); //stub the company and user_id
$invoice->client_id = $client->id; $invoice->client_id = $client->id;
if((bool)rand(0,1)) if ((bool) rand(0, 1)) {
$dateable = Carbon::now()->subDays(rand(0, 90)); $dateable = Carbon::now()->subDays(rand(0, 90));
else } else {
$dateable = Carbon::now()->addDays(rand(0, 90)); $dateable = Carbon::now()->addDays(rand(0, 90));
}
$invoice->date = $dateable; $invoice->date = $dateable;
@ -393,8 +384,8 @@ class DemoMode extends Command
$invoice->tax_rate3 = 5; $invoice->tax_rate3 = 5;
} }
// $invoice->custom_value1 = $faker->date; // $invoice->custom_value1 = $faker->date;
// $invoice->custom_value2 = rand(0, 1) ? 'yes' : 'no'; // $invoice->custom_value2 = rand(0, 1) ? 'yes' : 'no';
$invoice->save(); $invoice->save();
@ -403,20 +394,20 @@ class DemoMode extends Command
$invoice = $invoice_calc->getInvoice(); $invoice = $invoice_calc->getInvoice();
if(rand(0,1)) if (rand(0, 1)) {
$invoice->assigned_user_id = $assigned_user_id; $invoice->assigned_user_id = $assigned_user_id;
}
$invoice->save(); $invoice->save();
$invoice->service()->createInvitations()->markSent(); $invoice->service()->createInvitations()->markSent();
$this->invoice_repo->markSent($invoice); $this->invoice_repo->markSent($invoice);
if ((bool)rand(0, 2)) { if ((bool) rand(0, 2)) {
$invoice = $invoice->service()->markPaid()->save(); $invoice = $invoice->service()->markPaid()->save();
$invoice->payments->each(function ($payment){ $invoice->payments->each(function ($payment) {
$payment->date = now()->addDays(rand(-30,30)); $payment->date = now()->addDays(rand(-30, 30));
$payment->save(); $payment->save();
}); });
} }
@ -435,10 +426,11 @@ class DemoMode extends Command
$credit = factory(\App\Models\Credit::class)->create(['user_id' => $client->user->id, 'company_id' => $client->company->id, 'client_id' => $client->id]); $credit = factory(\App\Models\Credit::class)->create(['user_id' => $client->user->id, 'company_id' => $client->company->id, 'client_id' => $client->id]);
if((bool)rand(0,1)) if ((bool) rand(0, 1)) {
$dateable = Carbon::now()->subDays(rand(0, 90)); $dateable = Carbon::now()->subDays(rand(0, 90));
else } else {
$dateable = Carbon::now()->addDays(rand(0, 90)); $dateable = Carbon::now()->addDays(rand(0, 90));
}
$credit->date = $dateable; $credit->date = $dateable;
@ -467,8 +459,9 @@ class DemoMode extends Command
$credit = $invoice_calc->getCredit(); $credit = $invoice_calc->getCredit();
if(rand(0,1)) if (rand(0, 1)) {
$credit->assigned_user_id = $assigned_user_id; $credit->assigned_user_id = $assigned_user_id;
}
$credit->save(); $credit->save();
$credit->service()->markSent()->save(); $credit->service()->markSent()->save();
@ -477,16 +470,14 @@ class DemoMode extends Command
private function createQuote($client, $assigned_user_id = null) private function createQuote($client, $assigned_user_id = null)
{ {
$faker = \Faker\Factory::create(); $faker = \Faker\Factory::create();
$quote =factory(\App\Models\Quote::class)->create(['user_id' => $client->user->id, 'company_id' => $client->company_id, 'client_id' => $client->id]); $quote = factory(\App\Models\Quote::class)->create(['user_id' => $client->user->id, 'company_id' => $client->company_id, 'client_id' => $client->id]);
if((bool)rand(0,1)){ if ((bool) rand(0, 1)) {
$dateable = Carbon::now()->subDays(rand(1, 30)); $dateable = Carbon::now()->subDays(rand(1, 30));
$dateable_due = $dateable->addDays(rand(1, 30)); $dateable_due = $dateable->addDays(rand(1, 30));
} } else {
else{
$dateable = Carbon::now()->addDays(rand(1, 30)); $dateable = Carbon::now()->addDays(rand(1, 30));
$dateable_due = $dateable->addDays(rand(-10, 30)); $dateable_due = $dateable->addDays(rand(-10, 30));
} }
@ -495,7 +486,7 @@ class DemoMode extends Command
$quote->due_date = $dateable_due; $quote->due_date = $dateable_due;
$quote->client_id = $client->id; $quote->client_id = $client->id;
$quote->setRelation('client', $client); $quote->setRelation('client', $client);
$quote->line_items = $this->buildLineItems(rand(1, 10)); $quote->line_items = $this->buildLineItems(rand(1, 10));
@ -523,9 +514,10 @@ class DemoMode extends Command
$quote = $quote_calc->getQuote(); $quote = $quote_calc->getQuote();
if(rand(0,1)) if (rand(0, 1)) {
$quote->assigned_user_id = $assigned_user_id; $quote->assigned_user_id = $assigned_user_id;
}
$quote->save(); $quote->save();
$quote->service()->markSent()->save(); $quote->service()->markSent()->save();
@ -536,7 +528,7 @@ class DemoMode extends Command
{ {
$line_items = []; $line_items = [];
for ($x=0; $x<$count; $x++) { for ($x = 0; $x < $count; $x++) {
$item = InvoiceItemFactory::create(); $item = InvoiceItemFactory::create();
$item->quantity = 1; $item->quantity = 1;
//$item->cost = 10; //$item->cost = 10;
@ -558,7 +550,7 @@ class DemoMode extends Command
$product = Product::all()->random(); $product = Product::all()->random();
$item->cost = (float)$product->cost; $item->cost = (float) $product->cost;
$item->product_key = $product->product_key; $item->product_key = $product->product_key;
$item->notes = $product->notes; $item->notes = $product->notes;
$item->custom_value1 = $product->custom_value1; $item->custom_value1 = $product->custom_value1;
@ -566,8 +558,6 @@ class DemoMode extends Command
$item->custom_value3 = $product->custom_value3; $item->custom_value3 = $product->custom_value3;
$item->custom_value4 = $product->custom_value4; $item->custom_value4 = $product->custom_value4;
$line_items[] = $item; $line_items[] = $item;
} }

View File

@ -58,7 +58,7 @@ class ImportMigrations extends Command
foreach ($directory as $file) { foreach ($directory as $file) {
if ($file->getExtension() === 'zip') { if ($file->getExtension() === 'zip') {
$this->info('Started processing: ' . $file->getBasename() . ' at ' . now()); $this->info('Started processing: '.$file->getBasename().' at '.now());
StartMigration::dispatch($file->getRealPath(), $this->getUser(), $this->getUser()->companies()->first()); StartMigration::dispatch($file->getRealPath(), $this->getUser(), $this->getUser()->companies()->first());
} }
} }
@ -72,7 +72,7 @@ class ImportMigrations extends Command
$user = factory(\App\Models\User::class)->create([ $user = factory(\App\Models\User::class)->create([
'account_id' => $account->id, 'account_id' => $account->id,
'email' => $this->faker->email, 'email' => $this->faker->email,
'confirmation_code' => $this->createDbHash(config('database.default')) 'confirmation_code' => $this->createDbHash(config('database.default')),
]); ]);
$company_token = CompanyToken::create([ $company_token = CompanyToken::create([
@ -107,8 +107,8 @@ class ImportMigrations extends Command
'account_id' => $account->id, 'account_id' => $account->id,
]); ]);
if(!$account->default_company_id){ if (! $account->default_company_id) {
$account->default_company_id = $company->id; $account->default_company_id = $company->id;
$account->save(); $account->save();
} }

View File

@ -3,17 +3,16 @@
namespace App\Console\Commands; namespace App\Console\Commands;
use Composer\Composer; use Composer\Composer;
use Composer\Console\Application;
use Composer\Factory; use Composer\Factory;
use Composer\IO\NullIO;
use Composer\Installer; use Composer\Installer;
use Composer\IO\NullIO;
use Illuminate\Console\Command; use Illuminate\Console\Command;
use Illuminate\Support\Facades\Artisan; use Illuminate\Support\Facades\Artisan;
use Symfony\Component\Console\Input\ArrayInput; use Symfony\Component\Console\Input\ArrayInput;
use Composer\Console\Application;
class PostUpdate extends Command class PostUpdate extends Command
{ {
protected $name = 'ninja:post-update'; protected $name = 'ninja:post-update';
/** /**
* The name and signature of the console command. * The name and signature of the console command.
@ -38,10 +37,10 @@ class PostUpdate extends Command
{ {
set_time_limit(0); set_time_limit(0);
info("running post update"); info('running post update');
try { try {
Artisan::call('migrate',['--force' => true]); Artisan::call('migrate', ['--force' => true]);
} catch (Exception $e) { } catch (Exception $e) {
\Log::error("I wasn't able to migrate the data."); \Log::error("I wasn't able to migrate the data.");
} }
@ -52,49 +51,49 @@ class PostUpdate extends Command
\Log::error("I wasn't able to optimize."); \Log::error("I wasn't able to optimize.");
} }
$composer_data = [
$composer_data = array(
'url' => 'https://getcomposer.org/composer.phar', 'url' => 'https://getcomposer.org/composer.phar',
'dir' => __DIR__.'/.code', 'dir' => __DIR__.'/.code',
'bin' => __DIR__.'/.code/composer.phar', 'bin' => __DIR__.'/.code/composer.phar',
'json' => __DIR__.'/.code/composer.json', 'json' => __DIR__.'/.code/composer.json',
'conf' => array( 'conf' => [
"autoload" => array( 'autoload' => [
"psr-4" => array( 'psr-4' => [
"" => "local/" '' => 'local/',
) ],
) ],
) ],
); ];
if(!is_dir($composer_data['dir'])) if (! is_dir($composer_data['dir'])) {
mkdir($composer_data['dir'],0777,true); mkdir($composer_data['dir'], 0777, true);
}
if(!is_dir("{$composer_data['dir']}/local")) if (! is_dir("{$composer_data['dir']}/local")) {
mkdir("{$composer_data['dir']}/local",0777,true); mkdir("{$composer_data['dir']}/local", 0777, true);
}
copy($composer_data['url'],$composer_data['bin']); copy($composer_data['url'], $composer_data['bin']);
require_once "phar://{$composer_data['bin']}/src/bootstrap.php"; require_once "phar://{$composer_data['bin']}/src/bootstrap.php";
$conf_json = json_encode($composer_data['conf'],JSON_PRETTY_PRINT|JSON_UNESCAPED_SLASHES|JSON_UNESCAPED_UNICODE); $conf_json = json_encode($composer_data['conf'], JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE);
file_put_contents($composer_data['json'],$conf_json); file_put_contents($composer_data['json'], $conf_json);
chdir($composer_data['dir']); chdir($composer_data['dir']);
putenv("COMPOSER_HOME={$composer_data['dir']}"); putenv("COMPOSER_HOME={$composer_data['dir']}");
putenv("OSTYPE=OS400"); putenv('OSTYPE=OS400');
$app = new \Composer\Console\Application(); $app = new \Composer\Console\Application();
$factory = new \Composer\Factory(); $factory = new \Composer\Factory();
$output = $factory->createOutput(); $output = $factory->createOutput();
$input = new \Symfony\Component\Console\Input\ArrayInput(array( $input = new \Symfony\Component\Console\Input\ArrayInput([
'command' => 'install', 'command' => 'install',
)); ]);
$input->setInteractive(false); $input->setInteractive(false);
echo "<pre>"; echo '<pre>';
$cmdret = $app->doRun($input,$output); $cmdret = $app->doRun($input, $output);
echo "end!"; echo 'end!';
\Log::error(print_r($cmdret,1));
\Log::error(print_r($cmdret, 1));
} }
} }

View File

@ -70,8 +70,7 @@ class SendTestEmails extends Command
$user = User::whereEmail('user@example.com')->first(); $user = User::whereEmail('user@example.com')->first();
if (! $user) {
if (!$user) {
$account = factory(\App\Models\Account::class)->create(); $account = factory(\App\Models\Account::class)->create();
$user = factory(\App\Models\User::class)->create([ $user = factory(\App\Models\User::class)->create([
@ -82,8 +81,6 @@ class SendTestEmails extends Command
'last_name' => 'Doe', 'last_name' => 'Doe',
]); ]);
$company = factory(\App\Models\Company::class)->create([ $company = factory(\App\Models\Company::class)->create([
'account_id' => $account->id, 'account_id' => $account->id,
]); ]);
@ -103,12 +100,9 @@ class SendTestEmails extends Command
$account = $company->account; $account = $company->account;
} }
$client = Client::all()->first(); $client = Client::all()->first();
if (! $client) {
if (!$client) {
$client = ClientFactory::create($company->id, $user->id); $client = ClientFactory::create($company->id, $user->id);
$client->save(); $client->save();

View File

@ -1,6 +1,6 @@
<?php <?php
/** /**
* Invoice Ninja (https://invoiceninja.com) * Invoice Ninja (https://invoiceninja.com).
* *
* @link https://github.com/invoiceninja/invoiceninja source repository * @link https://github.com/invoiceninja/invoiceninja source repository
* *
@ -37,13 +37,11 @@ class CreateTestCreditJob implements ShouldQueue
protected $client; protected $client;
/** /**
* Create a new job instance. * Create a new job instance.
* *
* @return void * @return void
*/ */
public function __construct(Client $client) public function __construct(Client $client)
{ {
$this->client = $client; $this->client = $client;
@ -96,12 +94,11 @@ class CreateTestCreditJob implements ShouldQueue
event(new CreateCreditInvitation($credit, $credit->company, Ninja::eventVars())); event(new CreateCreditInvitation($credit, $credit->company, Ninja::eventVars()));
} }
private function buildLineItems($count = 1) private function buildLineItems($count = 1)
{ {
$line_items = []; $line_items = [];
for ($x=0; $x<$count; $x++) { for ($x = 0; $x < $count; $x++) {
$item = InvoiceItemFactory::create(); $item = InvoiceItemFactory::create();
$item->quantity = 1; $item->quantity = 1;
//$item->cost = 10; //$item->cost = 10;
@ -123,7 +120,7 @@ class CreateTestCreditJob implements ShouldQueue
$product = Product::all()->random(); $product = Product::all()->random();
$item->cost = (float)$product->cost; $item->cost = (float) $product->cost;
$item->product_key = $product->product_key; $item->product_key = $product->product_key;
$item->notes = $product->notes; $item->notes = $product->notes;
$item->custom_value1 = $product->custom_value1; $item->custom_value1 = $product->custom_value1;
@ -131,8 +128,6 @@ class CreateTestCreditJob implements ShouldQueue
$item->custom_value3 = $product->custom_value3; $item->custom_value3 = $product->custom_value3;
$item->custom_value4 = $product->custom_value4; $item->custom_value4 = $product->custom_value4;
$line_items[] = $item; $line_items[] = $item;
} }

View File

@ -1,6 +1,6 @@
<?php <?php
/** /**
* Invoice Ninja (https://invoiceninja.com) * Invoice Ninja (https://invoiceninja.com).
* *
* @link https://github.com/invoiceninja/invoiceninja source repository * @link https://github.com/invoiceninja/invoiceninja source repository
* *
@ -36,13 +36,11 @@ class CreateTestInvoiceJob implements ShouldQueue
protected $client; protected $client;
/** /**
* Create a new job instance. * Create a new job instance.
* *
* @return void * @return void
*/ */
public function __construct(Client $client) public function __construct(Client $client)
{ {
$this->client = $client; $this->client = $client;
@ -57,7 +55,7 @@ class CreateTestInvoiceJob implements ShouldQueue
{ {
$faker = \Faker\Factory::create(); $faker = \Faker\Factory::create();
$invoice = InvoiceFactory::create($this->client->company->id, $this->client->user->id);//stub the company and user_id $invoice = InvoiceFactory::create($this->client->company->id, $this->client->user->id); //stub the company and user_id
$invoice->client_id = $this->client->id; $invoice->client_id = $this->client->id;
// $invoice->date = $faker->date(); // $invoice->date = $faker->date();
$dateable = Carbon::now()->subDays(rand(0, 90)); $dateable = Carbon::now()->subDays(rand(0, 90));
@ -97,7 +95,6 @@ class CreateTestInvoiceJob implements ShouldQueue
//$this->invoice_repo->markSent($invoice); //$this->invoice_repo->markSent($invoice);
if (rand(0, 1)) { if (rand(0, 1)) {
$payment = PaymentFactory::create($this->client->company->id, $this->client->user->id); $payment = PaymentFactory::create($this->client->company->id, $this->client->user->id);
$payment->date = $dateable; $payment->date = $dateable;
@ -121,12 +118,11 @@ class CreateTestInvoiceJob implements ShouldQueue
event(new InvoiceWasCreated($invoice, $invoice->company, Ninja::eventVars())); event(new InvoiceWasCreated($invoice, $invoice->company, Ninja::eventVars()));
} }
private function buildLineItems($count = 1) private function buildLineItems($count = 1)
{ {
$line_items = []; $line_items = [];
for ($x=0; $x<$count; $x++) { for ($x = 0; $x < $count; $x++) {
$item = InvoiceItemFactory::create(); $item = InvoiceItemFactory::create();
$item->quantity = 1; $item->quantity = 1;
//$item->cost = 10; //$item->cost = 10;
@ -148,7 +144,7 @@ class CreateTestInvoiceJob implements ShouldQueue
$product = Product::all()->random(); $product = Product::all()->random();
$item->cost = (float)$product->cost; $item->cost = (float) $product->cost;
$item->product_key = $product->product_key; $item->product_key = $product->product_key;
$item->notes = $product->notes; $item->notes = $product->notes;
$item->custom_value1 = $product->custom_value1; $item->custom_value1 = $product->custom_value1;
@ -156,8 +152,6 @@ class CreateTestInvoiceJob implements ShouldQueue
$item->custom_value3 = $product->custom_value3; $item->custom_value3 = $product->custom_value3;
$item->custom_value4 = $product->custom_value4; $item->custom_value4 = $product->custom_value4;
$line_items[] = $item; $line_items[] = $item;
} }

View File

@ -1,6 +1,6 @@
<?php <?php
/** /**
* Invoice Ninja (https://invoiceninja.com) * Invoice Ninja (https://invoiceninja.com).
* *
* @link https://github.com/invoiceninja/invoiceninja source repository * @link https://github.com/invoiceninja/invoiceninja source repository
* *
@ -36,13 +36,11 @@ class CreateTestQuoteJob implements ShouldQueue
protected $client; protected $client;
/** /**
* Create a new job instance. * Create a new job instance.
* *
* @return void * @return void
*/ */
public function __construct(Client $client) public function __construct(Client $client)
{ {
$this->client = $client; $this->client = $client;
@ -57,7 +55,7 @@ class CreateTestQuoteJob implements ShouldQueue
{ {
$faker = \Faker\Factory::create(); $faker = \Faker\Factory::create();
$quote =factory(\App\Models\Quote::class)->create(['user_id' => $this->client->user->id, 'company_id' => $this->client->company->id, 'client_id' => $this->client->id]); $quote = factory(\App\Models\Quote::class)->create(['user_id' => $this->client->user->id, 'company_id' => $this->client->company->id, 'client_id' => $this->client->id]);
$quote->date = $faker->date(); $quote->date = $faker->date();
$quote->line_items = $this->buildLineItems(rand(1, 10)); $quote->line_items = $this->buildLineItems(rand(1, 10));
@ -89,13 +87,11 @@ class CreateTestQuoteJob implements ShouldQueue
CreateQuoteInvitations::dispatch($quote, $quote->company); CreateQuoteInvitations::dispatch($quote, $quote->company);
} }
private function buildLineItems($count = 1) private function buildLineItems($count = 1)
{ {
$line_items = []; $line_items = [];
for ($x=0; $x<$count; $x++) { for ($x = 0; $x < $count; $x++) {
$item = InvoiceItemFactory::create(); $item = InvoiceItemFactory::create();
$item->quantity = 1; $item->quantity = 1;
//$item->cost = 10; //$item->cost = 10;
@ -117,7 +113,7 @@ class CreateTestQuoteJob implements ShouldQueue
$product = Product::all()->random(); $product = Product::all()->random();
$item->cost = (float)$product->cost; $item->cost = (float) $product->cost;
$item->product_key = $product->product_key; $item->product_key = $product->product_key;
$item->notes = $product->notes; $item->notes = $product->notes;
$item->custom_value1 = $product->custom_value1; $item->custom_value1 = $product->custom_value1;
@ -125,8 +121,6 @@ class CreateTestQuoteJob implements ShouldQueue
$item->custom_value3 = $product->custom_value3; $item->custom_value3 = $product->custom_value3;
$item->custom_value4 = $product->custom_value4; $item->custom_value4 = $product->custom_value4;
$line_items[] = $item; $line_items[] = $item;
} }

View File

@ -1,6 +1,6 @@
<?php <?php
/** /**
* Invoice Ninja (https://invoiceninja.com) * Invoice Ninja (https://invoiceninja.com).
* *
* @link https://github.com/invoiceninja/invoiceninja source repository * @link https://github.com/invoiceninja/invoiceninja source repository
* *
@ -43,7 +43,7 @@ class Kernel extends ConsoleKernel
*/ */
protected function schedule(Schedule $schedule) protected function schedule(Schedule $schedule)
{ {
//$schedule->job(new RecurringInvoicesCron)->hourly(); //$schedule->job(new RecurringInvoicesCron)->hourly();
$schedule->job(new VersionCheck)->daily(); $schedule->job(new VersionCheck)->daily();
@ -54,9 +54,9 @@ class Kernel extends ConsoleKernel
$schedule->job(new CompanySizeCheck)->daily(); $schedule->job(new CompanySizeCheck)->daily();
$schedule->job(new UpdateExchangeRates)->daily(); $schedule->job(new UpdateExchangeRates)->daily();
/* Run hosted specific jobs */ /* Run hosted specific jobs */
if(Ninja::isHosted()) { if (Ninja::isHosted()) {
$schedule->job(new AdjustEmailQuota())->daily(); $schedule->job(new AdjustEmailQuota())->daily();
$schedule->job(new SendFailedEmails())->daily(); $schedule->job(new SendFailedEmails())->daily();
} }

View File

@ -4,39 +4,37 @@ namespace App\DataMapper\Analytics;
class LoginFailure class LoginFailure
{ {
/**
* The type of Sample.
*
* Monotonically incrementing counter
*
* - counter
*
* @var string
*/
public $type = 'counter';
/** /**
* The type of Sample * The name of the counter.
* * @var string
* Monotonically incrementing counter */
* public $name = 'login.failure';
* - counter
*
* @var string
*/
public $type = 'counter';
/** /**
* The name of the counter * The datetime of the counter measurement.
* @var string *
*/ * date("Y-m-d H:i:s")
public $name = 'login.failure'; *
* @var DateTime
*/
public $datetime;
/** /**
* The datetime of the counter measurement * The increment amount... should always be
* * set to 0.
* date("Y-m-d H:i:s") *
* * @var int
* @var DateTime */
*/ public $metric = 0;
public $datetime; }
/**
* The increment amount... should always be
* set to 0
*
* @var integer
*/
public $metric = 0;
}

View File

@ -4,39 +4,37 @@ namespace App\DataMapper\Analytics;
class LoginSuccess class LoginSuccess
{ {
/**
* The type of Sample.
*
* Monotonically incrementing counter
*
* - counter
*
* @var string
*/
public $type = 'counter';
/** /**
* The type of Sample * The name of the counter.
* * @var string
* Monotonically incrementing counter */
* public $name = 'login.success';
* - counter
*
* @var string
*/
public $type = 'counter';
/** /**
* The name of the counter * The datetime of the counter measurement.
* @var string *
*/ * date("Y-m-d H:i:s")
public $name = 'login.success'; *
* @var DateTime
*/
public $datetime;
/** /**
* The datetime of the counter measurement * The increment amount... should always be
* * set to 0.
* date("Y-m-d H:i:s") *
* * @var int
* @var DateTime */
*/ public $metric = 0;
public $datetime; }
/**
* The increment amount... should always be
* set to 0
*
* @var integer
*/
public $metric = 0;
}

View File

@ -1,6 +1,6 @@
<?php <?php
/** /**
* Invoice Ninja (https://invoiceninja.com) * Invoice Ninja (https://invoiceninja.com).
* *
* @link https://github.com/invoiceninja/invoiceninja source repository * @link https://github.com/invoiceninja/invoiceninja source repository
* *
@ -12,7 +12,7 @@
namespace App\DataMapper; namespace App\DataMapper;
/** /**
* ClientSettings * ClientSettings.
*/ */
class BaseSettings class BaseSettings
{ {
@ -22,7 +22,7 @@ class BaseSettings
$obj->{$key} = $value; $obj->{$key} = $value;
} }
} }
public static function setCasts($obj, $casts) public static function setCasts($obj, $casts)
{ {
foreach ($casts as $key => $value) { foreach ($casts as $key => $value) {
@ -46,7 +46,7 @@ class BaseSettings
return is_null($value) ? '' : (string) $value; return is_null($value) ? '' : (string) $value;
case 'bool': case 'bool':
case 'boolean': case 'boolean':
return (bool)($value); return (bool) ($value);
case 'object': case 'object':
return json_decode($value); return json_decode($value);
case 'array': case 'array':

View File

@ -1,6 +1,6 @@
<?php <?php
/** /**
* Invoice Ninja (https://invoiceninja.com) * Invoice Ninja (https://invoiceninja.com).
* *
* @link https://github.com/invoiceninja/invoiceninja source repository * @link https://github.com/invoiceninja/invoiceninja source repository
* *
@ -17,7 +17,7 @@ use App\Models\Client;
use App\Utils\TranslationHelper; use App\Utils\TranslationHelper;
/** /**
* ClientSettings * ClientSettings.
* *
* Client settings are built as a superset of Company Settings * Client settings are built as a superset of Company Settings
* *
@ -25,13 +25,11 @@ use App\Utils\TranslationHelper;
* *
* Client settings are passed down to the entity level where they can be further customized and then saved * Client settings are passed down to the entity level where they can be further customized and then saved
* into the settings column of the entity, so there is no need to create additional entity level settings handlers. * into the settings column of the entity, so there is no need to create additional entity level settings handlers.
*
*/ */
class ClientSettings extends BaseSettings class ClientSettings extends BaseSettings
{ {
/** /**
* Settings which which are unique to client settings * Settings which which are unique to client settings.
*/ */
public $industry_id; public $industry_id;
public $size_id; public $size_id;
@ -40,11 +38,11 @@ class ClientSettings extends BaseSettings
'industry_id' => 'string', 'industry_id' => 'string',
'size_id' => 'string', 'size_id' => 'string',
]; ];
/** /**
* Cast object values and return entire class * Cast object values and return entire class
* prevents missing properties from not being returned * prevents missing properties from not being returned
* and always ensure an up to date class is returned * and always ensure an up to date class is returned.
* *
* @return \stdClass * @return \stdClass
*/ */
@ -54,16 +52,14 @@ class ClientSettings extends BaseSettings
} }
/** /**
* * Default Client Settings scaffold.
* Default Client Settings scaffold
* *
* @return \stdClass * @return \stdClass
*
*/ */
public static function defaults() : \stdClass public static function defaults() : \stdClass
{ {
$data = (object)[ $data = (object) [
'entity' => (string)Client::class, 'entity' => (string) Client::class,
'industry_id' => '', 'industry_id' => '',
'size_id' => '', 'size_id' => '',
]; ];
@ -71,9 +67,8 @@ class ClientSettings extends BaseSettings
return self::setCasts($data, self::$casts); return self::setCasts($data, self::$casts);
} }
/** /**
* Merges settings from Company to Client * Merges settings from Company to Client.
* *
* @param \stdClass $company_settings * @param \stdClass $company_settings
* @param \stdClass $client_settings * @param \stdClass $client_settings
@ -81,21 +76,21 @@ class ClientSettings extends BaseSettings
*/ */
public static function buildClientSettings($company_settings, $client_settings) public static function buildClientSettings($company_settings, $client_settings)
{ {
if (!$client_settings) { if (! $client_settings) {
return $company_settings; return $company_settings;
} }
foreach ($company_settings as $key => $value) { foreach ($company_settings as $key => $value) {
/* pseudo code /* pseudo code
if the property exists and is a string BUT has no length, treat it as TRUE if the property exists and is a string BUT has no length, treat it as TRUE
*/ */
if (((property_exists($client_settings, $key) && is_string($client_settings->{$key}) && (iconv_strlen($client_settings->{$key}) <1))) if (((property_exists($client_settings, $key) && is_string($client_settings->{$key}) && (iconv_strlen($client_settings->{$key}) < 1)))
|| !isset($client_settings->{$key}) || ! isset($client_settings->{$key})
&& property_exists($company_settings, $key)) { && property_exists($company_settings, $key)) {
$client_settings->{$key} = $company_settings->{$key}; $client_settings->{$key} = $company_settings->{$key};
} }
} }
return $client_settings; return $client_settings;
} }
} }

View File

@ -1,6 +1,6 @@
<?php <?php
/** /**
* Invoice Ninja (https://invoiceninja.com) * Invoice Ninja (https://invoiceninja.com).
* *
* @link https://github.com/invoiceninja/invoiceninja source repository * @link https://github.com/invoiceninja/invoiceninja source repository
* *
@ -15,65 +15,64 @@ use App\DataMapper\CompanySettings;
use App\Utils\Traits\MakesHash; use App\Utils\Traits\MakesHash;
/** /**
* CompanySettings * CompanySettings.
*/ */
class CompanySettings extends BaseSettings class CompanySettings extends BaseSettings
{ {
use MakesHash; use MakesHash;
/*Group settings based on functionality*/ /*Group settings based on functionality*/
/*Invoice*/ /*Invoice*/
public $auto_archive_invoice = false; public $auto_archive_invoice = false;
public $lock_invoices = 'off'; //off,when_sent,when_paid public $lock_invoices = 'off'; //off,when_sent,when_paid
public $enable_client_portal_tasks = false; public $enable_client_portal_tasks = false;
public $enable_client_portal_password = false; public $enable_client_portal_password = false;
public $enable_client_portal = true; //implemented public $enable_client_portal = true; //implemented
public $enable_client_portal_dashboard = true; //implemented public $enable_client_portal_dashboard = true; //implemented
public $signature_on_pdf = false; public $signature_on_pdf = false;
public $document_email_attachment = false; public $document_email_attachment = false;
//public $send_portal_password = false; //public $send_portal_password = false;
public $portal_design_id = '1'; public $portal_design_id = '1';
public $timezone_id = ''; public $timezone_id = '';
public $date_format_id = ''; public $date_format_id = '';
public $military_time = false; public $military_time = false;
public $language_id = ''; public $language_id = '';
public $show_currency_code = false; public $show_currency_code = false;
public $company_gateway_ids = ''; public $company_gateway_ids = '';
public $currency_id = '1'; public $currency_id = '1';
public $custom_value1 = ''; public $custom_value1 = '';
public $custom_value2 = ''; public $custom_value2 = '';
public $custom_value3 = ''; public $custom_value3 = '';
public $custom_value4 = ''; public $custom_value4 = '';
public $default_task_rate = 0; public $default_task_rate = 0;
public $payment_terms = ""; public $payment_terms = '';
public $send_reminders = false; public $send_reminders = false;
public $custom_message_dashboard = ''; public $custom_message_dashboard = '';
public $custom_message_unpaid_invoice = ''; public $custom_message_unpaid_invoice = '';
public $custom_message_paid_invoice = ''; public $custom_message_paid_invoice = '';
public $custom_message_unapproved_quote = ''; public $custom_message_unapproved_quote = '';
public $auto_archive_quote = false; public $auto_archive_quote = false;
public $auto_convert_quote = true; public $auto_convert_quote = true;
public $auto_email_invoice = true; public $auto_email_invoice = true;
public $inclusive_taxes = false; public $inclusive_taxes = false;
public $quote_footer = ''; public $quote_footer = '';
public $translations; public $translations;
public $counter_number_applied = 'when_saved';// when_saved , when_sent public $counter_number_applied = 'when_saved'; // when_saved , when_sent
public $quote_number_applied = 'when_saved';// when_saved , when_sent public $quote_number_applied = 'when_saved'; // when_saved , when_sent
/* Counters */ /* Counters */
public $invoice_number_pattern = ''; public $invoice_number_pattern = '';
@ -104,71 +103,71 @@ class CompanySettings extends BaseSettings
public $payment_number_counter = 1; public $payment_number_counter = 1;
public $shared_invoice_quote_counter = false; public $shared_invoice_quote_counter = false;
public $recurring_number_prefix = 'R'; public $recurring_number_prefix = 'R';
public $reset_counter_frequency_id = '0'; public $reset_counter_frequency_id = '0';
public $reset_counter_date = ''; public $reset_counter_date = '';
public $counter_padding = 4; public $counter_padding = 4;
public $auto_bill = 'off'; //off,always,optin,optout public $auto_bill = 'off'; //off,always,optin,optout
public $design = 'views/pdf/design1.blade.php'; public $design = 'views/pdf/design1.blade.php';
public $invoice_terms = ''; public $invoice_terms = '';
public $quote_terms = ''; public $quote_terms = '';
public $invoice_taxes = 0; public $invoice_taxes = 0;
// public $enabled_item_tax_rates = 0; // public $enabled_item_tax_rates = 0;
public $invoice_design_id = 'VolejRejNm'; public $invoice_design_id = 'VolejRejNm';
public $quote_design_id = 'VolejRejNm'; public $quote_design_id = 'VolejRejNm';
public $credit_design_id = 'VolejRejNm'; public $credit_design_id = 'VolejRejNm';
public $invoice_footer = ''; public $invoice_footer = '';
public $credit_footer = ''; public $credit_footer = '';
public $credit_terms = ''; public $credit_terms = '';
public $invoice_labels = ''; public $invoice_labels = '';
public $tax_name1 = ''; public $tax_name1 = '';
public $tax_rate1 = 0; public $tax_rate1 = 0;
public $tax_name2 = ''; public $tax_name2 = '';
public $tax_rate2 = 0; public $tax_rate2 = 0;
public $tax_name3 = ''; public $tax_name3 = '';
public $tax_rate3 = 0; public $tax_rate3 = 0;
public $payment_type_id = '0'; public $payment_type_id = '0';
public $invoice_fields = ''; public $invoice_fields = '';
public $show_accept_invoice_terms = false; public $show_accept_invoice_terms = false;
public $show_accept_quote_terms = false; public $show_accept_quote_terms = false;
public $require_invoice_signature = false; public $require_invoice_signature = false;
public $require_quote_signature = false; public $require_quote_signature = false;
//email settings //email settings
public $email_sending_method = 'default';//enum 'default','gmail' public $email_sending_method = 'default'; //enum 'default','gmail'
public $gmail_sending_user_id = '0'; public $gmail_sending_user_id = '0';
public $reply_to_email = ''; public $reply_to_email = '';
public $bcc_email = ''; public $bcc_email = '';
public $pdf_email_attachment = false; public $pdf_email_attachment = false;
public $ubl_email_attachment = false; public $ubl_email_attachment = false;
public $email_style = 'light'; //plain, light, dark, custom public $email_style = 'light'; //plain, light, dark, custom
public $email_style_custom = ''; //the template itself public $email_style_custom = ''; //the template itself
public $email_subject_invoice = ''; public $email_subject_invoice = '';
public $email_subject_quote = ''; public $email_subject_quote = '';
public $email_subject_payment = ''; public $email_subject_payment = '';
public $email_subject_payment_partial = ''; public $email_subject_payment_partial = '';
public $email_subject_statement = ''; public $email_subject_statement = '';
public $email_template_invoice = ''; public $email_template_invoice = '';
public $email_template_quote = ''; public $email_template_quote = '';
public $email_template_payment = ''; public $email_template_payment = '';
public $email_template_payment_partial = ''; public $email_template_payment_partial = '';
public $email_template_statement = ''; public $email_template_statement = '';
public $email_subject_reminder1 = ''; public $email_subject_reminder1 = '';
public $email_subject_reminder2 = ''; public $email_subject_reminder2 = '';
public $email_subject_reminder3 = ''; public $email_subject_reminder3 = '';
public $email_subject_reminder_endless = ''; public $email_subject_reminder_endless = '';
public $email_template_reminder1 = ''; public $email_template_reminder1 = '';
public $email_template_reminder2 = ''; public $email_template_reminder2 = '';
public $email_template_reminder3 = ''; public $email_template_reminder3 = '';
public $email_template_reminder_endless = ''; public $email_template_reminder_endless = '';
public $email_signature = ''; public $email_signature = '';
public $enable_email_markup = true; public $enable_email_markup = true;
public $email_subject_custom1 = ''; public $email_subject_custom1 = '';
public $email_subject_custom2 = ''; public $email_subject_custom2 = '';
@ -186,47 +185,47 @@ class CompanySettings extends BaseSettings
public $num_days_reminder2 = 0; public $num_days_reminder2 = 0;
public $num_days_reminder3 = 0; public $num_days_reminder3 = 0;
public $schedule_reminder1 = '';// (enum: after_invoice_date, before_due_date, after_due_date) public $schedule_reminder1 = ''; // (enum: after_invoice_date, before_due_date, after_due_date)
public $schedule_reminder2 = '';// (enum: after_invoice_date, before_due_date, after_due_date) public $schedule_reminder2 = ''; // (enum: after_invoice_date, before_due_date, after_due_date)
public $schedule_reminder3 = '';// (enum: after_invoice_date, before_due_date, after_due_date) public $schedule_reminder3 = ''; // (enum: after_invoice_date, before_due_date, after_due_date)
public $reminder_send_time = 32400;//number of seconds from UTC +0 to send reminders public $reminder_send_time = 32400; //number of seconds from UTC +0 to send reminders
public $late_fee_amount1 = 0; public $late_fee_amount1 = 0;
public $late_fee_amount2 = 0; public $late_fee_amount2 = 0;
public $late_fee_amount3 = 0; public $late_fee_amount3 = 0;
public $endless_reminder_frequency_id = '0'; public $endless_reminder_frequency_id = '0';
public $late_fee_endless_amount = 0; public $late_fee_endless_amount = 0;
public $late_fee_endless_percent = 0; public $late_fee_endless_percent = 0;
public $client_online_payment_notification = true; //@todo implement in notifications public $client_online_payment_notification = true; //@todo implement in notifications
public $client_manual_payment_notification = true; //@todo implement in notifications public $client_manual_payment_notification = true; //@todo implement in notifications
/* Company Meta data that we can use to build sub companies*/ /* Company Meta data that we can use to build sub companies*/
public $name = ''; public $name = '';
public $company_logo = ''; public $company_logo = '';
public $website = ''; public $website = '';
public $address1 = ''; public $address1 = '';
public $address2 = ''; public $address2 = '';
public $city = ''; public $city = '';
public $state = ''; public $state = '';
public $postal_code = ''; public $postal_code = '';
public $phone = ''; public $phone = '';
public $email = ''; public $email = '';
public $country_id; public $country_id;
public $vat_number = ''; public $vat_number = '';
public $id_number = ''; public $id_number = '';
public $page_size = 'A4'; //Letter, Legal, Tabloid, Ledger, A0, A1, A2, A3, A4, A5, A6 public $page_size = 'A4'; //Letter, Legal, Tabloid, Ledger, A0, A1, A2, A3, A4, A5, A6
public $font_size = 9; public $font_size = 9;
public $primary_font = 'Roboto'; public $primary_font = 'Roboto';
public $secondary_font = 'Roboto'; public $secondary_font = 'Roboto';
public $hide_paid_to_date = false; public $hide_paid_to_date = false;
public $embed_documents = false; public $embed_documents = false;
public $all_pages_header = false; public $all_pages_header = false;
public $all_pages_footer = false; public $all_pages_footer = false;
public $pdf_variables = ''; public $pdf_variables = '';
public $portal_custom_head = ''; public $portal_custom_head = '';
@ -237,11 +236,10 @@ class CompanySettings extends BaseSettings
public $client_can_register = false; public $client_can_register = false;
public $client_portal_terms = ''; public $client_portal_terms = '';
public $client_portal_privacy_policy = ''; public $client_portal_privacy_policy = '';
public $client_portal_enable_uploads = false; public $client_portal_enable_uploads = false;
public $client_portal_allow_under_payment = false; public $client_portal_allow_under_payment = false;
public $client_portal_allow_over_payment = false; public $client_portal_allow_over_payment = false;
public static $casts = [ public static $casts = [
'client_portal_allow_under_payment' => 'bool', 'client_portal_allow_under_payment' => 'bool',
'client_portal_allow_over_payment' => 'bool', 'client_portal_allow_over_payment' => 'bool',
@ -414,7 +412,6 @@ class CompanySettings extends BaseSettings
'client_portal_enable_uploads' => 'bool', 'client_portal_enable_uploads' => 'bool',
]; ];
public static $free_plan_casts = [ public static $free_plan_casts = [
'currency_id' => 'string', 'currency_id' => 'string',
'company_gateway_ids' => 'string', 'company_gateway_ids' => 'string',
@ -453,7 +450,7 @@ class CompanySettings extends BaseSettings
/** /**
* Array of variables which * Array of variables which
* cannot be modified client side * cannot be modified client side.
*/ */
public static $protected_fields = [ public static $protected_fields = [
// 'credit_number_counter', // 'credit_number_counter',
@ -470,7 +467,7 @@ class CompanySettings extends BaseSettings
/** /**
* Cast object values and return entire class * Cast object values and return entire class
* prevents missing properties from not being returned * prevents missing properties from not being returned
* and always ensure an up to date class is returned * and always ensure an up to date class is returned.
* *
* @return \stdClass * @return \stdClass
*/ */
@ -480,29 +477,29 @@ class CompanySettings extends BaseSettings
} }
/** /**
* Provides class defaults on init * Provides class defaults on init.
* @return object * @return object
*/ */
public static function defaults():\stdClass public static function defaults():\stdClass
{ {
$config = json_decode(config('ninja.settings')); $config = json_decode(config('ninja.settings'));
$data = (object) get_class_vars(CompanySettings::class); $data = (object) get_class_vars(self::class);
unset($data->casts); unset($data->casts);
unset($data->protected_fields); unset($data->protected_fields);
unset($data->free_plan_casts); unset($data->free_plan_casts);
unset($data->string_casts); unset($data->string_casts);
$data->timezone_id = (string) config('ninja.i18n.timezone_id'); $data->timezone_id = (string) config('ninja.i18n.timezone_id');
$data->currency_id = (string) config('ninja.i18n.currency_id'); $data->currency_id = (string) config('ninja.i18n.currency_id');
$data->language_id = (string) config('ninja.i18n.language_id'); $data->language_id = (string) config('ninja.i18n.language_id');
$data->payment_terms = (string) config('ninja.i18n.payment_terms'); $data->payment_terms = (string) config('ninja.i18n.payment_terms');
$data->military_time = (bool) config('ninja.i18n.military_time'); $data->military_time = (bool) config('ninja.i18n.military_time');
$data->date_format_id = (string) config('ninja.i18n.date_format_id'); $data->date_format_id = (string) config('ninja.i18n.date_format_id');
$data->country_id = (string) config('ninja.i18n.country_id'); $data->country_id = (string) config('ninja.i18n.country_id');
$data->translations = (object) []; $data->translations = (object) [];
$data->pdf_variables = (object) self::getEntityVariableDefaults(); $data->pdf_variables = (object) self::getEntityVariableDefaults();
return self::setCasts($data, self::$casts); return self::setCasts($data, self::$casts);
} }
@ -516,10 +513,10 @@ class CompanySettings extends BaseSettings
*/ */
public static function setProperties($settings):\stdClass public static function setProperties($settings):\stdClass
{ {
$company_settings = (object) get_class_vars(CompanySettings::class); $company_settings = (object) get_class_vars(self::class);
foreach ($company_settings as $key => $value) { foreach ($company_settings as $key => $value) {
if (!property_exists($settings, $key)) { if (! property_exists($settings, $key)) {
$settings->{ $key} = self::castAttribute($key, $company_settings->{ $key}); $settings->{ $key} = self::castAttribute($key, $company_settings->{ $key});
} }
} }
@ -614,10 +611,10 @@ class CompanySettings extends BaseSettings
'$custom_surcharge3', '$custom_surcharge3',
'$custom_surcharge4', '$custom_surcharge4',
'$paid_to_date', '$paid_to_date',
'$client.balance' '$client.balance',
], ],
]; ];
return json_decode(json_encode($variables)); return json_decode(json_encode($variables));
} }
} }

View File

@ -1,6 +1,6 @@
<?php <?php
/** /**
* Invoice Ninja (https://invoiceninja.com) * Invoice Ninja (https://invoiceninja.com).
* *
* @link https://github.com/invoiceninja/invoiceninja source repository * @link https://github.com/invoiceninja/invoiceninja source repository
* *
@ -15,12 +15,10 @@ use App\Models\Client;
use App\Models\User; use App\Models\User;
/** /**
* Class DefaultSettings * Class DefaultSettings.
* @package App\DataMapper
*/ */
class DefaultSettings extends BaseSettings class DefaultSettings extends BaseSettings
{ {
/** /**
* @var int * @var int
*/ */
@ -33,7 +31,7 @@ class DefaultSettings extends BaseSettings
*/ */
public static function userSettings() : \stdClass public static function userSettings() : \stdClass
{ {
return (object)[ return (object) [
// class_basename(User::class) => self::userSettingsObject(), // class_basename(User::class) => self::userSettingsObject(),
]; ];
} }
@ -43,7 +41,7 @@ class DefaultSettings extends BaseSettings
*/ */
private static function userSettingsObject() : \stdClass private static function userSettingsObject() : \stdClass
{ {
return (object)[ return (object) [
// 'per_page' => self::$per_page, // 'per_page' => self::$per_page,
]; ];
} }

View File

@ -1,6 +1,6 @@
<?php <?php
/** /**
* Invoice Ninja (https://invoiceninja.com) * Invoice Ninja (https://invoiceninja.com).
* *
* @link https://github.com/invoiceninja/invoiceninja source repository * @link https://github.com/invoiceninja/invoiceninja source repository
* *
@ -12,26 +12,25 @@
namespace App\DataMapper; namespace App\DataMapper;
/** /**
* EmailSpooledForSend * EmailSpooledForSend.
* *
* Stubbed class used to store the meta data * Stubbed class used to store the meta data
* for an email that was unable to be sent * for an email that was unable to be sent
* for a reason such as: * for a reason such as:
* *
* - Quota exceeded * - Quota exceeded
* - SMTP issues * - SMTP issues
* - Upstream connectivity * - Upstream connectivity
*
*/ */
class EmailSpooledForSend class EmailSpooledForSend
{ {
public $entity_name; public $entity_name;
public $invitation_key = ''; public $invitation_key = '';
public $reminder_template = ''; public $reminder_template = '';
public $subject = ''; public $subject = '';
public $body = ''; public $body = '';
} }

View File

@ -1,6 +1,6 @@
<?php <?php
/** /**
* Invoice Ninja (https://invoiceninja.com) * Invoice Ninja (https://invoiceninja.com).
* *
* @link https://github.com/invoiceninja/invoiceninja source repository * @link https://github.com/invoiceninja/invoiceninja source repository
* *
@ -23,7 +23,7 @@ class EmailTemplateDefaults
switch ($template) { switch ($template) {
/* Template */ /* Template */
case 'email_template_invoice': case 'email_template_invoice':
return self::emailInvoiceTemplate(); return self::emailInvoiceTemplate();
break; break;
@ -62,7 +62,7 @@ class EmailTemplateDefaults
break; break;
/* Subject */ /* Subject */
case 'email_subject_invoice': case 'email_subject_invoice':
return self::emailInvoiceSubject(); return self::emailInvoiceSubject();
break; break;
@ -119,10 +119,10 @@ class EmailTemplateDefaults
'allow_unsafe_links' => false, 'allow_unsafe_links' => false,
]); ]);
$invoice_message = '<p>' . self::transformText('invoice_message') . '</p><br><br><p>$view_link</p>'; $invoice_message = '<p>'.self::transformText('invoice_message').'</p><br><br><p>$view_link</p>';
return $invoice_message; return $invoice_message;
//return $converter->convertToHtml($invoice_message); //return $converter->convertToHtml($invoice_message);
} }
public static function emailQuoteSubject() public static function emailQuoteSubject()
@ -214,9 +214,8 @@ class EmailTemplateDefaults
return Parsedown::instance()->line('Statement Templates needs texts record!'); return Parsedown::instance()->line('Statement Templates needs texts record!');
} }
private static function transformText($string) private static function transformText($string)
{ {
return str_replace(":", "$", ctrans('texts.'.$string)); return str_replace(':', '$', ctrans('texts.'.$string));
} }
} }

View File

@ -1,6 +1,6 @@
<?php <?php
/** /**
* Invoice Ninja (https://invoiceninja.com) * Invoice Ninja (https://invoiceninja.com).
* *
* @link https://github.com/invoiceninja/invoiceninja source repository * @link https://github.com/invoiceninja/invoiceninja source repository
* *

View File

@ -1,6 +1,6 @@
<?php <?php
/** /**
* Invoice Ninja (https://invoiceninja.com) * Invoice Ninja (https://invoiceninja.com).
* *
* @link https://github.com/invoiceninja/invoiceninja source repository * @link https://github.com/invoiceninja/invoiceninja source repository
* *
@ -15,76 +15,73 @@ use App\DataMapper\CompanySettings;
use App\Utils\Traits\MakesHash; use App\Utils\Traits\MakesHash;
/** /**
* FreeCompanySettings * FreeCompanySettings.
*/ */
class FreeCompanySettings extends BaseSettings class FreeCompanySettings extends BaseSettings
{ {
use MakesHash; use MakesHash;
/*Group settings based on functionality*/ /*Group settings based on functionality*/
public $credit_design_id = 'VolejRejNm'; public $credit_design_id = 'VolejRejNm';
public $client_number_pattern = ''; public $client_number_pattern = '';
public $client_number_counter = 1; public $client_number_counter = 1;
public $credit_number_pattern = ''; public $credit_number_pattern = '';
public $credit_number_counter = 1; public $credit_number_counter = 1;
public $currency_id = '1'; public $currency_id = '1';
public $custom_value1 = ''; public $custom_value1 = '';
public $custom_value2 = ''; public $custom_value2 = '';
public $custom_value3 = ''; public $custom_value3 = '';
public $custom_value4 = ''; public $custom_value4 = '';
public $date_format_id = ''; public $date_format_id = '';
// public $enabled_item_tax_rates = 0; // public $enabled_item_tax_rates = 0;
public $expense_number_pattern = ''; public $expense_number_pattern = '';
public $expense_number_counter = 1; public $expense_number_counter = 1;
public $inclusive_taxes = false; public $inclusive_taxes = false;
public $invoice_design_id = 'VolejRejNm'; public $invoice_design_id = 'VolejRejNm';
public $invoice_number_pattern = ''; public $invoice_number_pattern = '';
public $invoice_number_counter = 1; public $invoice_number_counter = 1;
public $invoice_taxes = 0; public $invoice_taxes = 0;
public $language_id = ''; public $language_id = '';
public $military_time = false; public $military_time = false;
public $payment_number_pattern = ''; public $payment_number_pattern = '';
public $payment_number_counter = 1; public $payment_number_counter = 1;
public $payment_terms = ""; public $payment_terms = '';
public $payment_type_id = '0'; public $payment_type_id = '0';
public $portal_design_id = '1'; public $portal_design_id = '1';
public $quote_design_id = 'VolejRejNm'; public $quote_design_id = 'VolejRejNm';
public $quote_number_pattern = ''; public $quote_number_pattern = '';
public $quote_number_counter = 1; public $quote_number_counter = 1;
public $timezone_id = ''; public $timezone_id = '';
public $show_currency_code = false; public $show_currency_code = false;
public $company_gateway_ids = ''; public $company_gateway_ids = '';
public $task_number_pattern = ''; public $task_number_pattern = '';
public $task_number_counter = 1; public $task_number_counter = 1;
public $tax_name1 = ''; public $tax_name1 = '';
public $tax_rate1 = 0; public $tax_rate1 = 0;
public $tax_name2 = ''; public $tax_name2 = '';
public $tax_rate2 = 0; public $tax_rate2 = 0;
public $tax_name3 = ''; public $tax_name3 = '';
public $tax_rate3 = 0; public $tax_rate3 = 0;
public $ticket_number_pattern = ''; public $ticket_number_pattern = '';
public $ticket_number_counter = 1; public $ticket_number_counter = 1;
public $translations; public $translations;
public $vendor_number_pattern = ''; public $vendor_number_pattern = '';
public $vendor_number_counter = 1; public $vendor_number_counter = 1;
/* Company Meta data that we can use to build sub companies*/ /* Company Meta data that we can use to build sub companies*/
public $address1 = ''; public $address1 = '';
public $address2 = ''; public $address2 = '';
public $city = ''; public $city = '';
public $company_logo = ''; public $company_logo = '';
public $country_id; public $country_id;
public $email = ''; public $email = '';
public $id_number = ''; public $id_number = '';
public $name = ''; public $name = '';
public $phone = ''; public $phone = '';
public $postal_code = ''; public $postal_code = '';
public $state = ''; public $state = '';
public $vat_number = ''; public $vat_number = '';
public $website = ''; public $website = '';
public static $casts = [ public static $casts = [
'portal_design_id' => 'string', 'portal_design_id' => 'string',
@ -141,7 +138,7 @@ class FreeCompanySettings extends BaseSettings
/** /**
* Cast object values and return entire class * Cast object values and return entire class
* prevents missing properties from not being returned * prevents missing properties from not being returned
* and always ensure an up to date class is returned * and always ensure an up to date class is returned.
* *
* @return \stdClass * @return \stdClass
*/ */
@ -150,7 +147,7 @@ class FreeCompanySettings extends BaseSettings
} }
/** /**
* Provides class defaults on init * Provides class defaults on init.
* @return object * @return object
*/ */
public static function defaults():\stdClass public static function defaults():\stdClass
@ -162,18 +159,16 @@ class FreeCompanySettings extends BaseSettings
unset($data->casts); unset($data->casts);
unset($data->protected_fields); unset($data->protected_fields);
$data->timezone_id = (string) config('ninja.i18n.timezone_id'); $data->timezone_id = (string) config('ninja.i18n.timezone_id');
$data->currency_id = (string) config('ninja.i18n.currency_id'); $data->currency_id = (string) config('ninja.i18n.currency_id');
$data->language_id = (string) config('ninja.i18n.language_id'); $data->language_id = (string) config('ninja.i18n.language_id');
$data->payment_terms = (int) config('ninja.i18n.payment_terms'); $data->payment_terms = (int) config('ninja.i18n.payment_terms');
$data->military_time = (bool) config('ninja.i18n.military_time'); $data->military_time = (bool) config('ninja.i18n.military_time');
$data->date_format_id = (string) config('ninja.i18n.date_format_id'); $data->date_format_id = (string) config('ninja.i18n.date_format_id');
$data->country_id = (string) config('ninja.i18n.country_id'); $data->country_id = (string) config('ninja.i18n.country_id');
$data->translations = (object) []; $data->translations = (object) [];
$data->pdf_variables = (object) self::getEntityVariableDefaults(); $data->pdf_variables = (object) self::getEntityVariableDefaults();
return self::setCasts($data, self::$casts); return self::setCasts($data, self::$casts);
} }
} }

View File

@ -1,6 +1,6 @@
<?php <?php
/** /**
* Invoice Ninja (https://invoiceninja.com) * Invoice Ninja (https://invoiceninja.com).
* *
* @link https://github.com/invoiceninja/invoiceninja source repository * @link https://github.com/invoiceninja/invoiceninja source repository
* *

View File

@ -1,6 +1,6 @@
<?php <?php
/** /**
* Invoice Ninja (https://invoiceninja.com) * Invoice Ninja (https://invoiceninja.com).
* *
* @link https://github.com/invoiceninja/invoiceninja source repository * @link https://github.com/invoiceninja/invoiceninja source repository
* *

View File

@ -1,6 +1,6 @@
<?php <?php
/** /**
* Invoice Ninja (https://invoiceninja.com) * Invoice Ninja (https://invoiceninja.com).
* *
* @link https://github.com/invoiceninja/invoiceninja source repository * @link https://github.com/invoiceninja/invoiceninja source repository
* *

View File

@ -1,6 +1,6 @@
<?php <?php
/** /**
* Invoice Ninja (https://invoiceninja.com) * Invoice Ninja (https://invoiceninja.com).
* *
* @link https://github.com/invoiceninja/invoiceninja source repository * @link https://github.com/invoiceninja/invoiceninja source repository
* *
@ -14,14 +14,14 @@ namespace App\Designs;
abstract class AbstractDesign abstract class AbstractDesign
{ {
abstract public function includes(); abstract public function includes();
abstract public function header(); abstract public function header();
abstract public function body(); abstract public function body();
abstract public function product(); abstract public function product();
abstract public function task(); abstract public function task();
abstract public function footer(); abstract public function footer();
} }

View File

@ -1,6 +1,6 @@
<?php <?php
/** /**
* Invoice Ninja (https://invoiceninja.com) * Invoice Ninja (https://invoiceninja.com).
* *
* @link https://github.com/invoiceninja/invoiceninja source repository * @link https://github.com/invoiceninja/invoiceninja source repository
* *

View File

@ -1,6 +1,6 @@
<?php <?php
/** /**
* Invoice Ninja (https://invoiceninja.com) * Invoice Ninja (https://invoiceninja.com).
* *
* @link https://github.com/invoiceninja/invoiceninja source repository * @link https://github.com/invoiceninja/invoiceninja source repository
* *

View File

@ -1,6 +1,6 @@
<?php <?php
/** /**
* Invoice Ninja (https://invoiceninja.com) * Invoice Ninja (https://invoiceninja.com).
* *
* @link https://github.com/invoiceninja/invoiceninja source repository * @link https://github.com/invoiceninja/invoiceninja source repository
* *
@ -17,7 +17,6 @@ class Clean extends AbstractDesign
{ {
} }
public function includes() public function includes()
{ {
return '<title>$number</title> return '<title>$number</title>
@ -39,7 +38,6 @@ class Clean extends AbstractDesign
</style>'; </style>';
} }
public function header() public function header()
{ {
return '<div class="px-12 my-10"> return '<div class="px-12 my-10">

View File

@ -1,6 +1,6 @@
<?php <?php
/** /**
* Invoice Ninja (https://invoiceninja.com) * Invoice Ninja (https://invoiceninja.com).
* *
* @link https://github.com/invoiceninja/invoiceninja source repository * @link https://github.com/invoiceninja/invoiceninja source repository
* *
@ -20,7 +20,6 @@ class Creative extends AbstractDesign
{ {
} }
public function includes() public function includes()
{ {
return '<title>$number</title> return '<title>$number</title>
@ -42,7 +41,6 @@ $custom_css
</style>'; </style>';
} }
public function header() public function header()
{ {
return '<div class="m-12"> return '<div class="m-12">
@ -114,7 +112,6 @@ $custom_css
return ''; return '';
} }
public function product() public function product()
{ {
return ''; return '';

View File

@ -1,6 +1,6 @@
<?php <?php
/** /**
* Invoice Ninja (https://invoiceninja.com) * Invoice Ninja (https://invoiceninja.com).
* *
* @link https://github.com/invoiceninja/invoiceninja source repository * @link https://github.com/invoiceninja/invoiceninja source repository
* *
@ -18,13 +18,13 @@ class Custom
public $header; public $header;
public $body; public $body;
public $product; public $product;
public $task; public $task;
public $footer; public $footer;
public $name; public $name;
public function __construct($design) public function __construct($design)
@ -34,11 +34,11 @@ class Custom
$this->includes = $design->design->includes; $this->includes = $design->design->includes;
$this->header = $design->design->header; $this->header = $design->design->header;
$this->body = $design->design->body; $this->body = $design->design->body;
$this->product = $design->design->product; $this->product = $design->design->product;
$this->task = $design->design->task; $this->task = $design->design->task;
$this->footer = $design->design->footer; $this->footer = $design->design->footer;

View File

@ -1,6 +1,6 @@
<?php <?php
/** /**
* Invoice Ninja (https://invoiceninja.com) * Invoice Ninja (https://invoiceninja.com).
* *
* @link https://github.com/invoiceninja/invoiceninja source repository * @link https://github.com/invoiceninja/invoiceninja source repository
* *
@ -64,10 +64,10 @@ class Designer
/** /**
* Returns the design * Returns the design
* formatted HTML * formatted HTML.
* @return string The HTML design built * @return string The HTML design built
*/ */
public function build():Designer public function build():self
{ {
$this->setHtml() $this->setHtml()
->exportVariables() ->exportVariables()
@ -104,13 +104,12 @@ class Designer
<div class="flex items-center justify-between m-12"> <div class="flex items-center justify-between m-12">
%s <!-- Placeholder for signature --> %s <!-- Placeholder for signature -->
%s <!-- Placehoder for Invoice Ninja logo --> %s <!-- Placehoder for Invoice Ninja logo -->
</div>' </div>';
;
$signature = '<img class="h-40" src="$contact.signature" />'; $signature = '<img class="h-40" src="$contact.signature" />';
$logo = '<div></div>'; $logo = '<div></div>';
if (!$this->entity->user->account->isPaid()) { if (! $this->entity->user->account->isPaid()) {
$logo = '<img class="h-32" src="$app_url/images/created-by-invoiceninja-new.png" />'; $logo = '<img class="h-32" src="$app_url/images/created-by-invoiceninja-new.png" />';
} }
@ -129,7 +128,7 @@ class Designer
public function setHtml() public function setHtml()
{ {
$this->html = ''; $this->html = '';
return $this; return $this;
} }
@ -158,12 +157,12 @@ class Designer
{ {
//$s = microtime(true); //$s = microtime(true);
$company = $this->entity->company; $company = $this->entity->company;
$this->exported_variables['$custom_css'] = $this->entity->generateCustomCSS(); $this->exported_variables['$custom_css'] = $this->entity->generateCustomCSS();
$this->exported_variables['$app_url'] = $this->entity->generateAppUrl(); $this->exported_variables['$app_url'] = $this->entity->generateAppUrl();
$this->exported_variables['$client_details'] = $this->processVariables($this->input_variables['client_details'], $this->clientDetails($company)); $this->exported_variables['$client_details'] = $this->processVariables($this->input_variables['client_details'], $this->clientDetails($company));
$this->exported_variables['$company_details'] = $this->processVariables($this->input_variables['company_details'], $this->companyDetails($company)); $this->exported_variables['$company_details'] = $this->processVariables($this->input_variables['company_details'], $this->companyDetails($company));
$this->exported_variables['$company_address'] = $this->processVariables($this->input_variables['company_address'], $this->companyAddress($company)); $this->exported_variables['$company_address'] = $this->processVariables($this->input_variables['company_address'], $this->companyAddress($company));
if ($this->entity_string == 'invoice') { if ($this->entity_string == 'invoice') {
//$this->exported_variables['$entity_labels'] = $this->processLabels($this->input_variables['invoice_details'], $this->invoiceDetails($company)); //$this->exported_variables['$entity_labels'] = $this->processLabels($this->input_variables['invoice_details'], $this->invoiceDetails($company));
@ -178,11 +177,10 @@ class Designer
$this->exported_variables['$entity_details'] = $this->processVariables($this->input_variables['invoice_details'], $this->quoteDetails($company)); $this->exported_variables['$entity_details'] = $this->processVariables($this->input_variables['invoice_details'], $this->quoteDetails($company));
} }
$this->exported_variables['$product_table_header'] = $this->entity->buildTableHeader($this->input_variables['product_columns']);
$this->exported_variables['$product_table_header']= $this->entity->buildTableHeader($this->input_variables['product_columns']); $this->exported_variables['$product_table_body'] = $this->entity->buildTableBody($this->input_variables['product_columns'], $this->design->product, '$product');
$this->exported_variables['$product_table_body'] = $this->entity->buildTableBody($this->input_variables['product_columns'], $this->design->product, '$product'); $this->exported_variables['$task_table_header'] = $this->entity->buildTableHeader($this->input_variables['task_columns']);
$this->exported_variables['$task_table_header'] = $this->entity->buildTableHeader($this->input_variables['task_columns']); $this->exported_variables['$task_table_body'] = $this->entity->buildTableBody($this->input_variables['task_columns'], $this->design->task, '$task');
$this->exported_variables['$task_table_body'] = $this->entity->buildTableBody($this->input_variables['task_columns'], $this->design->task, '$task');
if (strlen($this->exported_variables['$task_table_body']) == 0) { if (strlen($this->exported_variables['$task_table_body']) == 0) {
$this->exported_variables['$task_table_header'] = ''; $this->exported_variables['$task_table_header'] = '';
@ -191,6 +189,7 @@ class Designer
if (strlen($this->exported_variables['$product_table_body']) == 0) { if (strlen($this->exported_variables['$product_table_body']) == 0) {
$this->exported_variables['$product_table_header'] = ''; $this->exported_variables['$product_table_header'] = '';
} }
return $this; return $this;
} }
@ -214,7 +213,7 @@ class Designer
foreach (array_keys($input_variables) as $value) { foreach (array_keys($input_variables) as $value) {
if (array_key_exists($value, $variables)) { if (array_key_exists($value, $variables)) {
//$tmp = str_replace("</span>", "_label</span>", $variables[$value]); //$tmp = str_replace("</span>", "_label</span>", $variables[$value]);
$tmp = strtr($variables[$value], "</span>", "_label</span>"); $tmp = strtr($variables[$value], '</span>', '_label</span>');
$output .= $tmp; $output .= $tmp;
} }
} }
@ -357,12 +356,12 @@ class Designer
{ {
$custom_fields = $company->custom_fields; $custom_fields = $company->custom_fields;
if (!$custom_fields) { if (! $custom_fields) {
return $data; return $data;
} }
foreach (self::$custom_fields as $cf) { foreach (self::$custom_fields as $cf) {
if (!property_exists($custom_fields, $cf) || (strlen($custom_fields->{$cf}) == 0)) { if (! property_exists($custom_fields, $cf) || (strlen($custom_fields->{$cf}) == 0)) {
unset($data[$cf]); unset($data[$cf]);
} }
} }

View File

@ -1,6 +1,6 @@
<?php <?php
/** /**
* Invoice Ninja (https://invoiceninja.com) * Invoice Ninja (https://invoiceninja.com).
* *
* @link https://github.com/invoiceninja/invoiceninja source repository * @link https://github.com/invoiceninja/invoiceninja source repository
* *
@ -17,7 +17,6 @@ class Elegant extends AbstractDesign
{ {
} }
public function includes() public function includes()
{ {
return '<title>$number</title> return '<title>$number</title>
@ -39,7 +38,6 @@ class Elegant extends AbstractDesign
</style>'; </style>';
} }
public function header() public function header()
{ {
return '<div class="m-10"> return '<div class="m-10">

View File

@ -1,6 +1,6 @@
<?php <?php
/** /**
* Invoice Ninja (https://invoiceninja.com) * Invoice Ninja (https://invoiceninja.com).
* *
* @link https://github.com/invoiceninja/invoiceninja source repository * @link https://github.com/invoiceninja/invoiceninja source repository
* *
@ -17,7 +17,6 @@ class Hipster extends AbstractDesign
{ {
} }
public function includes() public function includes()
{ {
return '<title>$number</title> return '<title>$number</title>
@ -40,7 +39,6 @@ $custom_css
</style>'; </style>';
} }
public function header() public function header()
{ {
return '<div class="px-12 py-16"> return '<div class="px-12 py-16">

View File

@ -1,6 +1,6 @@
<?php <?php
/** /**
* Invoice Ninja (https://invoiceninja.com) * Invoice Ninja (https://invoiceninja.com).
* *
* @link https://github.com/invoiceninja/invoiceninja source repository * @link https://github.com/invoiceninja/invoiceninja source repository
* *
@ -17,7 +17,6 @@ class Modern extends AbstractDesign
{ {
} }
public function includes() public function includes()
{ {
return '<title>$number</title> return '<title>$number</title>
@ -36,7 +35,6 @@ $custom_css
<body>'; <body>';
} }
public function header() public function header()
{ {
return ' return '

View File

@ -1,6 +1,6 @@
<?php <?php
/** /**
* Invoice Ninja (https://invoiceninja.com) * Invoice Ninja (https://invoiceninja.com).
* *
* @link https://github.com/invoiceninja/invoiceninja source repository * @link https://github.com/invoiceninja/invoiceninja source repository
* *
@ -17,7 +17,6 @@ class Photo extends AbstractDesign
{ {
} }
public function includes() public function includes()
{ {
return '<title>$number</title> return '<title>$number</title>
@ -43,8 +42,6 @@ $custom_css
</style>'; </style>';
} }
public function header() public function header()
{ {
return '<div class="px-16 py-10"> return '<div class="px-16 py-10">

View File

@ -1,6 +1,6 @@
<?php <?php
/** /**
* Invoice Ninja (https://invoiceninja.com) * Invoice Ninja (https://invoiceninja.com).
* *
* @link https://github.com/invoiceninja/invoiceninja source repository * @link https://github.com/invoiceninja/invoiceninja source repository
* *
@ -17,7 +17,6 @@ class Plain extends AbstractDesign
{ {
} }
public function includes() public function includes()
{ {
return '<title>$number</title> return '<title>$number</title>

View File

@ -1,6 +1,6 @@
<?php <?php
/** /**
* Invoice Ninja (https://invoiceninja.com) * Invoice Ninja (https://invoiceninja.com).
* *
* @link https://github.com/invoiceninja/invoiceninja source repository * @link https://github.com/invoiceninja/invoiceninja source repository
* *
@ -17,7 +17,6 @@ class Playful extends AbstractDesign
{ {
} }
public function includes() public function includes()
{ {
return '<title>$number</title> return '<title>$number</title>
@ -39,7 +38,6 @@ $custom_css
</style>'; </style>';
} }
public function header() public function header()
{ {
return '<div class="my-12 mx-16"> return '<div class="my-12 mx-16">

View File

@ -1,6 +1,6 @@
<?php <?php
/** /**
* Invoice Ninja (https://invoiceninja.com) * Invoice Ninja (https://invoiceninja.com).
* *
* @link https://github.com/invoiceninja/invoiceninja source repository * @link https://github.com/invoiceninja/invoiceninja source repository
* *
@ -12,16 +12,15 @@
namespace App\Events\Account; namespace App\Events\Account;
use Illuminate\Broadcasting\Channel; use Illuminate\Broadcasting\Channel;
use Illuminate\Queue\SerializesModels;
use Illuminate\Broadcasting\PrivateChannel;
use Illuminate\Broadcasting\PresenceChannel;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Broadcasting\InteractsWithSockets; use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Broadcasting\PresenceChannel;
use Illuminate\Broadcasting\PrivateChannel;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast; use Illuminate\Contracts\Broadcasting\ShouldBroadcast;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Queue\SerializesModels;
/** /**
* Class AccountCreated * Class AccountCreated.
* @package App\Events\Account
*/ */
class AccountCreated class AccountCreated
{ {
@ -35,6 +34,7 @@ class AccountCreated
public $company; public $company;
public $event_vars; public $event_vars;
/** /**
* Create a new event instance. * Create a new event instance.
* *

View File

@ -1,6 +1,6 @@
<?php <?php
/** /**
* Invoice Ninja (https://invoiceninja.com) * Invoice Ninja (https://invoiceninja.com).
* *
* @link https://github.com/invoiceninja/invoiceninja source repository * @link https://github.com/invoiceninja/invoiceninja source repository
* *
@ -47,7 +47,6 @@ class ClientWasArchived
$this->client = $client; $this->client = $client;
$this->company = $company; $this->company = $company;
$this->event_vars = $event_vars; $this->event_vars = $event_vars;
} }
/** /**

View File

@ -1,6 +1,6 @@
<?php <?php
/** /**
* Invoice Ninja (https://invoiceninja.com) * Invoice Ninja (https://invoiceninja.com).
* *
* @link https://github.com/invoiceninja/invoiceninja source repository * @link https://github.com/invoiceninja/invoiceninja source repository
* *
@ -41,6 +41,5 @@ class ClientWasCreated
$this->client = $client; $this->client = $client;
$this->company = $company; $this->company = $company;
$this->event_vars = $event_vars; $this->event_vars = $event_vars;
} }
} }

View File

@ -1,6 +1,6 @@
<?php <?php
/** /**
* Invoice Ninja (https://invoiceninja.com) * Invoice Ninja (https://invoiceninja.com).
* *
* @link https://github.com/invoiceninja/invoiceninja source repository * @link https://github.com/invoiceninja/invoiceninja source repository
* *
@ -40,6 +40,5 @@ class ClientWasDeleted
$this->client = $client; $this->client = $client;
$this->company = $company; $this->company = $company;
$this->event_vars = $event_vars; $this->event_vars = $event_vars;
} }
} }

View File

@ -1,6 +1,6 @@
<?php <?php
/** /**
* Invoice Ninja (https://invoiceninja.com) * Invoice Ninja (https://invoiceninja.com).
* *
* @link https://github.com/invoiceninja/invoiceninja source repository * @link https://github.com/invoiceninja/invoiceninja source repository
* *
@ -40,6 +40,5 @@ class ClientWasRestored
$this->client = $client; $this->client = $client;
$this->company = $company; $this->company = $company;
$this->event_vars = $event_vars; $this->event_vars = $event_vars;
} }
} }

View File

@ -1,6 +1,6 @@
<?php <?php
/** /**
* Invoice Ninja (https://invoiceninja.com) * Invoice Ninja (https://invoiceninja.com).
* *
* @link https://github.com/invoiceninja/invoiceninja source repository * @link https://github.com/invoiceninja/invoiceninja source repository
* *
@ -40,6 +40,5 @@ class ClientWasUpdated
$this->client = $client; $this->client = $client;
$this->company = $company; $this->company = $company;
$this->event_vars = $event_vars; $this->event_vars = $event_vars;
} }
} }

View File

@ -1,6 +1,6 @@
<?php <?php
/** /**
* Invoice Ninja (https://invoiceninja.com) * Invoice Ninja (https://invoiceninja.com).
* *
* @link https://github.com/invoiceninja/invoiceninja source repository * @link https://github.com/invoiceninja/invoiceninja source repository
* *

View File

@ -1,6 +1,6 @@
<?php <?php
/** /**
* Invoice Ninja (https://invoiceninja.com) * Invoice Ninja (https://invoiceninja.com).
* *
* @link https://github.com/invoiceninja/invoiceninja source repository * @link https://github.com/invoiceninja/invoiceninja source repository
* *
@ -21,21 +21,21 @@ use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Queue\SerializesModels; use Illuminate\Queue\SerializesModels;
/** /**
* Class UserLoggedIn * Class UserLoggedIn.
* @package App\Events\User
*/ */
class ContactLoggedIn class ContactLoggedIn
{ {
use Dispatchable, InteractsWithSockets, SerializesModels; use Dispatchable, InteractsWithSockets, SerializesModels;
/** /**
* @var $client_contact * @var
*/ */
public $client_contact; public $client_contact;
public $company; public $company;
public $event_vars; public $event_vars;
/** /**
* Create a new event instance. * Create a new event instance.
* *

View File

@ -1,6 +1,6 @@
<?php <?php
/** /**
* Invoice Ninja (https://invoiceninja.com) * Invoice Ninja (https://invoiceninja.com).
* *
* @link https://github.com/invoiceninja/invoiceninja source repository * @link https://github.com/invoiceninja/invoiceninja source repository
* *
@ -9,7 +9,6 @@
* @license https://opensource.org/licenses/AAL * @license https://opensource.org/licenses/AAL
*/ */
namespace App\Events\Credit; namespace App\Events\Credit;
use App\Models\Company; use App\Models\Company;
@ -25,8 +24,9 @@ class CreditWasArchived
public $credit; public $credit;
public $company; public $company;
public $event_vars; public $event_vars;
/** /**
* Create a new event instance. * Create a new event instance.
* *

View File

@ -1,6 +1,6 @@
<?php <?php
/** /**
* Invoice Ninja (https://invoiceninja.com) * Invoice Ninja (https://invoiceninja.com).
* *
* @link https://github.com/invoiceninja/invoiceninja source repository * @link https://github.com/invoiceninja/invoiceninja source repository
* *
@ -9,7 +9,6 @@
* @license https://opensource.org/licenses/AAL * @license https://opensource.org/licenses/AAL
*/ */
namespace App\Events\Credit; namespace App\Events\Credit;
use App\Models\Company; use App\Models\Company;
@ -25,8 +24,9 @@ class CreditWasCreated
public $credit; public $credit;
public $company; public $company;
public $event_vars; public $event_vars;
/** /**
* Create a new event instance. * Create a new event instance.
* *

View File

@ -1,6 +1,6 @@
<?php <?php
/** /**
* Invoice Ninja (https://invoiceninja.com) * Invoice Ninja (https://invoiceninja.com).
* *
* @link https://github.com/invoiceninja/invoiceninja source repository * @link https://github.com/invoiceninja/invoiceninja source repository
* *
@ -9,7 +9,6 @@
* @license https://opensource.org/licenses/AAL * @license https://opensource.org/licenses/AAL
*/ */
namespace App\Events\Credit; namespace App\Events\Credit;
use App\Models\Company; use App\Models\Company;
@ -25,8 +24,9 @@ class CreditWasDeleted
public $credit; public $credit;
public $company; public $company;
public $event_vars; public $event_vars;
/** /**
* Create a new event instance. * Create a new event instance.
* *

View File

@ -1,6 +1,6 @@
<?php <?php
/** /**
* Invoice Ninja (https://invoiceninja.com) * Invoice Ninja (https://invoiceninja.com).
* *
* @link https://github.com/invoiceninja/invoiceninja source repository * @link https://github.com/invoiceninja/invoiceninja source repository
* *
@ -23,8 +23,9 @@ class CreditWasEmailed
public $credit; public $credit;
public $company; public $company;
public $event_vars; public $event_vars;
/** /**
* Create a new event instance. * Create a new event instance.
* *

View File

@ -1,6 +1,6 @@
<?php <?php
/** /**
* Invoice Ninja (https://invoiceninja.com) * Invoice Ninja (https://invoiceninja.com).
* *
* @link https://github.com/invoiceninja/invoiceninja source repository * @link https://github.com/invoiceninja/invoiceninja source repository
* *
@ -23,15 +23,15 @@ class CreditWasEmailedAndFailed
public $credit; public $credit;
public $errors; public $errors;
public $company; public $company;
public $event_vars; public $event_vars;
public function __construct(Credit $credit, $company, array $errors, array $event_vars) public function __construct(Credit $credit, $company, array $errors, array $event_vars)
{ {
$this->credit = $credit; $this->credit = $credit;
$this->company = $company; $this->company = $company;
$this->errors = $errors; $this->errors = $errors;

View File

@ -1,6 +1,6 @@
<?php <?php
/** /**
* Invoice Ninja (https://invoiceninja.com) * Invoice Ninja (https://invoiceninja.com).
* *
* @link https://github.com/invoiceninja/invoiceninja source repository * @link https://github.com/invoiceninja/invoiceninja source repository
* *
@ -27,8 +27,9 @@ class CreditWasMarkedSent
public $credit; public $credit;
public $company; public $company;
public $event_vars; public $event_vars;
/** /**
* Create a new event instance. * Create a new event instance.
* *

View File

@ -1,6 +1,6 @@
<?php <?php
/** /**
* Invoice Ninja (https://invoiceninja.com) * Invoice Ninja (https://invoiceninja.com).
* *
* @link https://github.com/invoiceninja/invoiceninja source repository * @link https://github.com/invoiceninja/invoiceninja source repository
* *
@ -40,6 +40,5 @@ class CreditWasRestored
$this->credit = $credit; $this->credit = $credit;
$this->company = $company; $this->company = $company;
$this->event_vars = $event_vars; $this->event_vars = $event_vars;
} }
} }

View File

@ -1,6 +1,6 @@
<?php <?php
/** /**
* Invoice Ninja (https://invoiceninja.com) * Invoice Ninja (https://invoiceninja.com).
* *
* @link https://github.com/invoiceninja/invoiceninja source repository * @link https://github.com/invoiceninja/invoiceninja source repository
* *
@ -24,8 +24,9 @@ class CreditWasUpdated
public $credit; public $credit;
public $company; public $company;
public $event_vars; public $event_vars;
/** /**
* Create a new event instance. * Create a new event instance.
* *

View File

@ -1,6 +1,6 @@
<?php <?php
/** /**
* Invoice Ninja (https://invoiceninja.com) * Invoice Ninja (https://invoiceninja.com).
* *
* @link https://github.com/invoiceninja/invoiceninja source repository * @link https://github.com/invoiceninja/invoiceninja source repository
* *

View File

@ -1,6 +1,6 @@
<?php <?php
/** /**
* Invoice Ninja (https://invoiceninja.com) * Invoice Ninja (https://invoiceninja.com).
* *
* @link https://github.com/invoiceninja/invoiceninja source repository * @link https://github.com/invoiceninja/invoiceninja source repository
* *
@ -36,6 +36,7 @@ class DesignWasArchived
public $company; public $company;
public $event_vars; public $event_vars;
/** /**
* Create a new event instance. * Create a new event instance.
* *

View File

@ -1,6 +1,6 @@
<?php <?php
/** /**
* Invoice Ninja (https://invoiceninja.com) * Invoice Ninja (https://invoiceninja.com).
* *
* @link https://github.com/invoiceninja/invoiceninja source repository * @link https://github.com/invoiceninja/invoiceninja source repository
* *
@ -30,6 +30,7 @@ class DesignWasCreated
public $company; public $company;
public $event_vars; public $event_vars;
/** /**
* Create a new event instance. * Create a new event instance.
* *

View File

@ -1,6 +1,6 @@
<?php <?php
/** /**
* Invoice Ninja (https://invoiceninja.com) * Invoice Ninja (https://invoiceninja.com).
* *
* @link https://github.com/invoiceninja/invoiceninja source repository * @link https://github.com/invoiceninja/invoiceninja source repository
* *
@ -30,6 +30,7 @@ class DesignWasDeleted
public $company; public $company;
public $event_vars; public $event_vars;
/** /**
* Create a new event instance. * Create a new event instance.
* *
@ -53,5 +54,4 @@ class DesignWasDeleted
{ {
return new PrivateChannel('channel-name'); return new PrivateChannel('channel-name');
} }
} }

View File

@ -1,6 +1,6 @@
<?php <?php
/** /**
* Invoice Ninja (https://invoiceninja.com) * Invoice Ninja (https://invoiceninja.com).
* *
* @link https://github.com/invoiceninja/invoiceninja source repository * @link https://github.com/invoiceninja/invoiceninja source repository
* *
@ -21,7 +21,7 @@ use Illuminate\Queue\SerializesModels;
class DesignWasRestored class DesignWasRestored
{ {
use SerializesModels; use SerializesModels;
/** /**
* @var Design * @var Design
*/ */
@ -30,6 +30,7 @@ class DesignWasRestored
public $company; public $company;
public $event_vars; public $event_vars;
/** /**
* Create a new event instance. * Create a new event instance.
* *

View File

@ -1,6 +1,6 @@
<?php <?php
/** /**
* Invoice Ninja (https://invoiceninja.com) * Invoice Ninja (https://invoiceninja.com).
* *
* @link https://github.com/invoiceninja/invoiceninja source repository * @link https://github.com/invoiceninja/invoiceninja source repository
* *
@ -30,6 +30,7 @@ class DesignWasUpdated
public $company; public $company;
public $event_vars; public $event_vars;
/** /**
* Create a new event instance. * Create a new event instance.
* *
@ -43,6 +44,7 @@ class DesignWasUpdated
$this->event_vars = $event_vars; $this->event_vars = $event_vars;
} }
/** /**
* Get the channels the event should broadcast on. * Get the channels the event should broadcast on.
* *
@ -52,5 +54,4 @@ class DesignWasUpdated
{ {
return new PrivateChannel('channel-name'); return new PrivateChannel('channel-name');
} }
} }

View File

@ -1,6 +1,6 @@
<?php <?php
/** /**
* Invoice Ninja (https://invoiceninja.com) * Invoice Ninja (https://invoiceninja.com).
* *
* @link https://github.com/invoiceninja/invoiceninja source repository * @link https://github.com/invoiceninja/invoiceninja source repository
* *

View File

@ -1,6 +1,6 @@
<?php <?php
/** /**
* Invoice Ninja (https://invoiceninja.com) * Invoice Ninja (https://invoiceninja.com).
* *
* @link https://github.com/invoiceninja/invoiceninja source repository * @link https://github.com/invoiceninja/invoiceninja source repository
* *

View File

@ -1,6 +1,6 @@
<?php <?php
/** /**
* Invoice Ninja (https://invoiceninja.com) * Invoice Ninja (https://invoiceninja.com).
* *
* @link https://github.com/invoiceninja/invoiceninja source repository * @link https://github.com/invoiceninja/invoiceninja source repository
* *

View File

@ -1,6 +1,6 @@
<?php <?php
/** /**
* Invoice Ninja (https://invoiceninja.com) * Invoice Ninja (https://invoiceninja.com).
* *
* @link https://github.com/invoiceninja/invoiceninja source repository * @link https://github.com/invoiceninja/invoiceninja source repository
* *

View File

@ -1,6 +1,6 @@
<?php <?php
/** /**
* Invoice Ninja (https://invoiceninja.com) * Invoice Ninja (https://invoiceninja.com).
* *
* @link https://github.com/invoiceninja/invoiceninja source repository * @link https://github.com/invoiceninja/invoiceninja source repository
* *

View File

@ -1,6 +1,6 @@
<?php <?php
/** /**
* Invoice Ninja (https://invoiceninja.com) * Invoice Ninja (https://invoiceninja.com).
* *
* @link https://github.com/invoiceninja/invoiceninja source repository * @link https://github.com/invoiceninja/invoiceninja source repository
* *
@ -30,6 +30,7 @@ class ExpenseWasArchived
public $company; public $company;
public $event_vars; public $event_vars;
/** /**
* Create a new event instance. * Create a new event instance.
* *

View File

@ -1,6 +1,6 @@
<?php <?php
/** /**
* Invoice Ninja (https://invoiceninja.com) * Invoice Ninja (https://invoiceninja.com).
* *
* @link https://github.com/invoiceninja/invoiceninja source repository * @link https://github.com/invoiceninja/invoiceninja source repository
* *
@ -30,6 +30,7 @@ class ExpenseWasCreated
public $company; public $company;
public $event_vars; public $event_vars;
/** /**
* Create a new event instance. * Create a new event instance.
* *

View File

@ -1,6 +1,6 @@
<?php <?php
/** /**
* Invoice Ninja (https://invoiceninja.com) * Invoice Ninja (https://invoiceninja.com).
* *
* @link https://github.com/invoiceninja/invoiceninja source repository * @link https://github.com/invoiceninja/invoiceninja source repository
* *
@ -30,6 +30,7 @@ class ExpenseWasDeleted
public $company; public $company;
public $event_vars; public $event_vars;
/** /**
* Create a new event instance. * Create a new event instance.
* *

View File

@ -1,6 +1,6 @@
<?php <?php
/** /**
* Invoice Ninja (https://invoiceninja.com) * Invoice Ninja (https://invoiceninja.com).
* *
* @link https://github.com/invoiceninja/invoiceninja source repository * @link https://github.com/invoiceninja/invoiceninja source repository
* *
@ -30,6 +30,7 @@ class ExpenseWasRestored
public $company; public $company;
public $event_vars; public $event_vars;
/** /**
* Create a new event instance. * Create a new event instance.
* *

View File

@ -1,6 +1,6 @@
<?php <?php
/** /**
* Invoice Ninja (https://invoiceninja.com) * Invoice Ninja (https://invoiceninja.com).
* *
* @link https://github.com/invoiceninja/invoiceninja source repository * @link https://github.com/invoiceninja/invoiceninja source repository
* *
@ -30,6 +30,7 @@ class ExpenseWasUpdated
public $company; public $company;
public $event_vars; public $event_vars;
/** /**
* Create a new event instance. * Create a new event instance.
* *

View File

@ -1,6 +1,6 @@
<?php <?php
/** /**
* Invoice Ninja (https://invoiceninja.com) * Invoice Ninja (https://invoiceninja.com).
* *
* @link https://github.com/invoiceninja/invoiceninja source repository * @link https://github.com/invoiceninja/invoiceninja source repository
* *
@ -30,6 +30,7 @@ class InvoiceWasArchived
public $company; public $company;
public $event_vars; public $event_vars;
/** /**
* Create a new event instance. * Create a new event instance.
* *

View File

@ -1,6 +1,6 @@
<?php <?php
/** /**
* Invoice Ninja (https://invoiceninja.com) * Invoice Ninja (https://invoiceninja.com).
* *
* @link https://github.com/invoiceninja/invoiceninja source repository * @link https://github.com/invoiceninja/invoiceninja source repository
* *
@ -30,6 +30,7 @@ class InvoiceWasCancelled
public $company; public $company;
public $event_vars; public $event_vars;
/** /**
* Create a new event instance. * Create a new event instance.
* *

View File

@ -1,6 +1,6 @@
<?php <?php
/** /**
* Invoice Ninja (https://invoiceninja.com) * Invoice Ninja (https://invoiceninja.com).
* *
* @link https://github.com/invoiceninja/invoiceninja source repository * @link https://github.com/invoiceninja/invoiceninja source repository
* *
@ -30,6 +30,7 @@ class InvoiceWasCreated
public $company; public $company;
public $event_vars; public $event_vars;
/** /**
* Create a new event instance. * Create a new event instance.
* *

View File

@ -1,6 +1,6 @@
<?php <?php
/** /**
* Invoice Ninja (https://invoiceninja.com) * Invoice Ninja (https://invoiceninja.com).
* *
* @link https://github.com/invoiceninja/invoiceninja source repository * @link https://github.com/invoiceninja/invoiceninja source repository
* *
@ -30,6 +30,7 @@ class InvoiceWasDeleted
public $company; public $company;
public $event_vars; public $event_vars;
/** /**
* Create a new event instance. * Create a new event instance.
* *

View File

@ -1,6 +1,6 @@
<?php <?php
/** /**
* Invoice Ninja (https://invoiceninja.com) * Invoice Ninja (https://invoiceninja.com).
* *
* @link https://github.com/invoiceninja/invoiceninja source repository * @link https://github.com/invoiceninja/invoiceninja source repository
* *
@ -30,6 +30,7 @@ class InvoiceWasEmailed
public $company; public $company;
public $event_vars; public $event_vars;
/** /**
* Create a new event instance. * Create a new event instance.
* *

View File

@ -1,6 +1,6 @@
<?php <?php
/** /**
* Invoice Ninja (https://invoiceninja.com) * Invoice Ninja (https://invoiceninja.com).
* *
* @link https://github.com/invoiceninja/invoiceninja source repository * @link https://github.com/invoiceninja/invoiceninja source repository
* *
@ -35,6 +35,7 @@ class InvoiceWasEmailedAndFailed
public $company; public $company;
public $event_vars; public $event_vars;
/** /**
* Create a new event instance. * Create a new event instance.
* *
@ -43,9 +44,9 @@ class InvoiceWasEmailedAndFailed
public function __construct(Invoice $invoice, Company $company, string $errors, array $event_vars) public function __construct(Invoice $invoice, Company $company, string $errors, array $event_vars)
{ {
$this->invoice = $invoice; $this->invoice = $invoice;
$this->company = $company; $this->company = $company;
$this->errors = $errors; $this->errors = $errors;
$this->event_vars = $event_vars; $this->event_vars = $event_vars;

View File

@ -1,6 +1,6 @@
<?php <?php
/** /**
* Invoice Ninja (https://invoiceninja.com) * Invoice Ninja (https://invoiceninja.com).
* *
* @link https://github.com/invoiceninja/invoiceninja source repository * @link https://github.com/invoiceninja/invoiceninja source repository
* *
@ -30,6 +30,7 @@ class InvoiceWasMarkedSent
public $company; public $company;
public $event_vars; public $event_vars;
/** /**
* Create a new event instance. * Create a new event instance.
* *

View File

@ -1,6 +1,6 @@
<?php <?php
/** /**
* Invoice Ninja (https://invoiceninja.com) * Invoice Ninja (https://invoiceninja.com).
* *
* @link https://github.com/invoiceninja/invoiceninja source repository * @link https://github.com/invoiceninja/invoiceninja source repository
* *
@ -30,6 +30,7 @@ class InvoiceWasPaid
public $company; public $company;
public $event_vars; public $event_vars;
/** /**
* Create a new event instance. * Create a new event instance.
* *

View File

@ -1,6 +1,6 @@
<?php <?php
/** /**
* Invoice Ninja (https://invoiceninja.com) * Invoice Ninja (https://invoiceninja.com).
* *
* @link https://github.com/invoiceninja/invoiceninja source repository * @link https://github.com/invoiceninja/invoiceninja source repository
* *
@ -26,12 +26,13 @@ class InvoiceWasRestored
* @var Invoice * @var Invoice
*/ */
public $invoice; public $invoice;
public $fromDeleted; public $fromDeleted;
public $company; public $company;
public $event_vars; public $event_vars;
/** /**
* Create a new event instance. * Create a new event instance.
* *

View File

@ -1,6 +1,6 @@
<?php <?php
/** /**
* Invoice Ninja (https://invoiceninja.com) * Invoice Ninja (https://invoiceninja.com).
* *
* @link https://github.com/invoiceninja/invoiceninja source repository * @link https://github.com/invoiceninja/invoiceninja source repository
* *
@ -30,6 +30,7 @@ class InvoiceWasReversed
public $company; public $company;
public $event_vars; public $event_vars;
/** /**
* Create a new event instance. * Create a new event instance.
* *

View File

@ -1,6 +1,6 @@
<?php <?php
/** /**
* Invoice Ninja (https://invoiceninja.com) * Invoice Ninja (https://invoiceninja.com).
* *
* @link https://github.com/invoiceninja/invoiceninja source repository * @link https://github.com/invoiceninja/invoiceninja source repository
* *
@ -32,6 +32,7 @@ class InvoiceWasUpdated
public $company; public $company;
public $event_vars; public $event_vars;
/** /**
* Create a new event instance. * Create a new event instance.
* *

View File

@ -1,6 +1,6 @@
<?php <?php
/** /**
* Invoice Ninja (https://invoiceninja.com) * Invoice Ninja (https://invoiceninja.com).
* *
* @link https://github.com/invoiceninja/invoiceninja source repository * @link https://github.com/invoiceninja/invoiceninja source repository
* *
@ -30,6 +30,7 @@ class InvoiceWasViewed
public $company; public $company;
public $event_vars; public $event_vars;
/** /**
* Create a new event instance. * Create a new event instance.
* *

View File

@ -1,6 +1,6 @@
<?php <?php
/** /**
* Invoice Ninja (https://invoiceninja.com) * Invoice Ninja (https://invoiceninja.com).
* *
* @link https://github.com/invoiceninja/invoiceninja source repository * @link https://github.com/invoiceninja/invoiceninja source repository
* *
@ -31,6 +31,7 @@ class InvitationWasViewed
public $company; public $company;
public $event_vars; public $event_vars;
/** /**
* Create a new event instance. * Create a new event instance.
* *

View File

@ -1,6 +1,6 @@
<?php <?php
/** /**
* Invoice Ninja (https://invoiceninja.com) * Invoice Ninja (https://invoiceninja.com).
* *
* @link https://github.com/invoiceninja/invoiceninja source repository * @link https://github.com/invoiceninja/invoiceninja source repository
* *
@ -31,8 +31,9 @@ class MethodDeleted
private $payment_method; private $payment_method;
public $company; public $company;
public $event_vars; public $event_vars;
/** /**
* Create a new event instance. * Create a new event instance.
* *
@ -42,7 +43,7 @@ class MethodDeleted
{ {
$this->payment_method = $payment_method; $this->payment_method = $payment_method;
$this->company = $company; $this->company = $company;
$this->event_vars = $event_vars; $this->event_vars = $event_vars;
} }
/** /**

View File

@ -1,6 +1,6 @@
<?php <?php
/** /**
* Invoice Ninja (https://invoiceninja.com) * Invoice Ninja (https://invoiceninja.com).
* *
* @link https://github.com/invoiceninja/invoiceninja source repository * @link https://github.com/invoiceninja/invoiceninja source repository
* *
@ -30,6 +30,7 @@ class PaymentCompleted
public $company; public $company;
public $event_vars; public $event_vars;
/** /**
* Create a new event instance. * Create a new event instance.
* *

View File

@ -1,6 +1,6 @@
<?php <?php
/** /**
* Invoice Ninja (https://invoiceninja.com) * Invoice Ninja (https://invoiceninja.com).
* *
* @link https://github.com/invoiceninja/invoiceninja source repository * @link https://github.com/invoiceninja/invoiceninja source repository
* *
@ -22,7 +22,6 @@ class PaymentFailed
{ {
use SerializesModels; use SerializesModels;
/** /**
* @var Payment * @var Payment
*/ */
@ -31,6 +30,7 @@ class PaymentFailed
public $company; public $company;
public $event_vars; public $event_vars;
/** /**
* Create a new event instance. * Create a new event instance.
* *

View File

@ -1,6 +1,6 @@
<?php <?php
/** /**
* Invoice Ninja (https://invoiceninja.com) * Invoice Ninja (https://invoiceninja.com).
* *
* @link https://github.com/invoiceninja/invoiceninja source repository * @link https://github.com/invoiceninja/invoiceninja source repository
* *
@ -22,7 +22,6 @@ class PaymentWasArchived
{ {
use SerializesModels; use SerializesModels;
/** /**
* @var Payment * @var Payment
*/ */
@ -31,6 +30,7 @@ class PaymentWasArchived
public $company; public $company;
public $event_vars; public $event_vars;
/** /**
* Create a new event instance. * Create a new event instance.
* *

View File

@ -1,6 +1,6 @@
<?php <?php
/** /**
* Invoice Ninja (https://invoiceninja.com) * Invoice Ninja (https://invoiceninja.com).
* *
* @link https://github.com/invoiceninja/invoiceninja source repository * @link https://github.com/invoiceninja/invoiceninja source repository
* *
@ -30,6 +30,7 @@ class PaymentWasCreated
public $company; public $company;
public $event_vars; public $event_vars;
/** /**
* Create a new event instance. * Create a new event instance.
* *

View File

@ -1,6 +1,6 @@
<?php <?php
/** /**
* Invoice Ninja (https://invoiceninja.com) * Invoice Ninja (https://invoiceninja.com).
* *
* @link https://github.com/invoiceninja/invoiceninja source repository * @link https://github.com/invoiceninja/invoiceninja source repository
* *
@ -22,7 +22,6 @@ class PaymentWasDeleted
{ {
use SerializesModels; use SerializesModels;
/** /**
* @var Payment * @var Payment
*/ */
@ -31,6 +30,7 @@ class PaymentWasDeleted
public $company; public $company;
public $event_vars; public $event_vars;
/** /**
* Create a new event instance. * Create a new event instance.
* *

View File

@ -1,6 +1,6 @@
<?php <?php
/** /**
* Invoice Ninja (https://invoiceninja.com) * Invoice Ninja (https://invoiceninja.com).
* *
* @link https://github.com/invoiceninja/invoiceninja source repository * @link https://github.com/invoiceninja/invoiceninja source repository
* *
@ -22,7 +22,6 @@ class PaymentWasEmailed
{ {
use SerializesModels; use SerializesModels;
/** /**
* @var Payment * @var Payment
*/ */
@ -31,6 +30,7 @@ class PaymentWasEmailed
public $company; public $company;
public $event_vars; public $event_vars;
/** /**
* Create a new event instance. * Create a new event instance.
* *

View File

@ -1,6 +1,6 @@
<?php <?php
/** /**
* Invoice Ninja (https://invoiceninja.com) * Invoice Ninja (https://invoiceninja.com).
* *
* @link https://github.com/invoiceninja/invoiceninja source repository * @link https://github.com/invoiceninja/invoiceninja source repository
* *
@ -31,6 +31,7 @@ class PaymentWasEmailedAndFailed
public $company; public $company;
public $event_vars; public $event_vars;
/** /**
* PaymentWasEmailedAndFailed constructor. * PaymentWasEmailedAndFailed constructor.
* @param Payment $payment * @param Payment $payment

View File

@ -1,6 +1,6 @@
<?php <?php
/** /**
* Invoice Ninja (https://invoiceninja.com) * Invoice Ninja (https://invoiceninja.com).
* *
* @link https://github.com/invoiceninja/invoiceninja source repository * @link https://github.com/invoiceninja/invoiceninja source repository
* *
@ -32,6 +32,7 @@ class PaymentWasRefunded
public $company; public $company;
public $event_vars; public $event_vars;
/** /**
* Create a new event instance. * Create a new event instance.
* *

View File

@ -1,6 +1,6 @@
<?php <?php
/** /**
* Invoice Ninja (https://invoiceninja.com) * Invoice Ninja (https://invoiceninja.com).
* *
* @link https://github.com/invoiceninja/invoiceninja source repository * @link https://github.com/invoiceninja/invoiceninja source repository
* *
@ -29,6 +29,7 @@ class PaymentWasRestored
public $fromDeleted; public $fromDeleted;
public $company; public $company;
public $event_vars; public $event_vars;
/** /**
* Create a new event instance. * Create a new event instance.
* *

View File

@ -1,6 +1,6 @@
<?php <?php
/** /**
* Invoice Ninja (https://invoiceninja.com) * Invoice Ninja (https://invoiceninja.com).
* *
* @link https://github.com/invoiceninja/invoiceninja source repository * @link https://github.com/invoiceninja/invoiceninja source repository
* *
@ -22,7 +22,6 @@ class PaymentWasUpdated
{ {
use SerializesModels; use SerializesModels;
/** /**
* @var Payment * @var Payment
*/ */
@ -31,6 +30,7 @@ class PaymentWasUpdated
public $company; public $company;
public $event_vars; public $event_vars;
/** /**
* Create a new event instance. * Create a new event instance.
* *

View File

@ -1,6 +1,6 @@
<?php <?php
/** /**
* Invoice Ninja (https://invoiceninja.com) * Invoice Ninja (https://invoiceninja.com).
* *
* @link https://github.com/invoiceninja/invoiceninja source repository * @link https://github.com/invoiceninja/invoiceninja source repository
* *
@ -22,7 +22,6 @@ class PaymentWasVoided
{ {
use SerializesModels; use SerializesModels;
/** /**
* @var Payment * @var Payment
*/ */
@ -31,6 +30,7 @@ class PaymentWasVoided
public $company; public $company;
public $event_vars; public $event_vars;
/** /**
* Create a new event instance. * Create a new event instance.
* *

View File

@ -1,6 +1,6 @@
<?php <?php
/** /**
* Invoice Ninja (https://invoiceninja.com) * Invoice Ninja (https://invoiceninja.com).
* *
* @link https://github.com/invoiceninja/invoiceninja source repository * @link https://github.com/invoiceninja/invoiceninja source repository
* *
@ -26,6 +26,7 @@ class ProductWasArchived
public $company; public $company;
public $event_vars; public $event_vars;
/** /**
* Create a new event instance. * Create a new event instance.
* *

View File

@ -1,6 +1,6 @@
<?php <?php
/** /**
* Invoice Ninja (https://invoiceninja.com) * Invoice Ninja (https://invoiceninja.com).
* *
* @link https://github.com/invoiceninja/invoiceninja source repository * @link https://github.com/invoiceninja/invoiceninja source repository
* *
@ -29,12 +29,13 @@ class ProductWasCreated
public $company; public $company;
public $event_vars; public $event_vars;
/** /**
* Create a new event instance. * Create a new event instance.
* *
* @return void * @return void
*/ */
public function __construct(Product $product, $input = null, Company $company, array $event_vars) public function __construct(Product $product, $input, Company $company, array $event_vars)
{ {
$this->product = $product; $this->product = $product;
$this->input = $input; $this->input = $input;

View File

@ -1,6 +1,6 @@
<?php <?php
/** /**
* Invoice Ninja (https://invoiceninja.com) * Invoice Ninja (https://invoiceninja.com).
* *
* @link https://github.com/invoiceninja/invoiceninja source repository * @link https://github.com/invoiceninja/invoiceninja source repository
* *
@ -27,6 +27,7 @@ class ProductWasDeleted
public $company; public $company;
public $event_vars; public $event_vars;
/** /**
* Create a new event instance. * Create a new event instance.
* *

View File

@ -1,6 +1,6 @@
<?php <?php
/** /**
* Invoice Ninja (https://invoiceninja.com) * Invoice Ninja (https://invoiceninja.com).
* *
* @link https://github.com/invoiceninja/invoiceninja source repository * @link https://github.com/invoiceninja/invoiceninja source repository
* *
@ -26,6 +26,7 @@ class ProductWasUpdated
public $company; public $company;
public $event_vars; public $event_vars;
/** /**
* Create a new event instance. * Create a new event instance.
* *

Some files were not shown because too many files have changed in this diff Show More