mirror of
https://github.com/invoiceninja/invoiceninja.git
synced 2025-07-09 03:14:30 -04:00
Merge branch 'release-3.1.0'
This commit is contained in:
commit
93ba0cb201
@ -54,6 +54,12 @@ FCM_API_TOKEN=
|
|||||||
GOOGLE_MAPS_ENABLED=true
|
GOOGLE_MAPS_ENABLED=true
|
||||||
#GOOGLE_MAPS_API_KEY=
|
#GOOGLE_MAPS_API_KEY=
|
||||||
|
|
||||||
|
# Create a cookie to stay logged in
|
||||||
|
#REMEMBER_ME_ENABLED=true
|
||||||
|
|
||||||
|
# The app automatically logs the user out after this number of seconds
|
||||||
|
#AUTO_LOGOUT_SECONDS=28800
|
||||||
|
|
||||||
#S3_KEY=
|
#S3_KEY=
|
||||||
#S3_SECRET=
|
#S3_SECRET=
|
||||||
#S3_REGION=
|
#S3_REGION=
|
||||||
@ -88,5 +94,6 @@ WEPAY_APP_FEE_MULTIPLIER=0.002
|
|||||||
WEPAY_APP_FEE_FIXED=0
|
WEPAY_APP_FEE_FIXED=0
|
||||||
WEPAY_THEME='{"name":"Invoice Ninja","primary_color":"0b4d78","secondary_color":"0b4d78","background_color":"f8f8f8","button_color":"33b753"}' # See https://www.wepay.com/developer/reference/structures#theme
|
WEPAY_THEME='{"name":"Invoice Ninja","primary_color":"0b4d78","secondary_color":"0b4d78","background_color":"f8f8f8","button_color":"33b753"}' # See https://www.wepay.com/developer/reference/structures#theme
|
||||||
|
|
||||||
|
|
||||||
BLUEVINE_PARTNER_UNIQUE_ID=
|
BLUEVINE_PARTNER_UNIQUE_ID=
|
||||||
BLUEVINE_PARTNER_TOKEN=
|
BLUEVINE_PARTNER_TOKEN=
|
||||||
|
98
.php_cs.dist
Normal file
98
.php_cs.dist
Normal file
@ -0,0 +1,98 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
$finder = PhpCsFixer\Finder::create()
|
||||||
|
->notPath('bootstrap/cache')
|
||||||
|
->notPath('storage')
|
||||||
|
->notPath('vendor')
|
||||||
|
->in(__DIR__)
|
||||||
|
->name('*.php')
|
||||||
|
->notName('*.blade.php')
|
||||||
|
->ignoreDotFiles(true)
|
||||||
|
->ignoreVCS(true);
|
||||||
|
|
||||||
|
return PhpCsFixer\Config::create()
|
||||||
|
->setRules([
|
||||||
|
'@PSR2' => true,
|
||||||
|
'binary_operator_spaces' => true,
|
||||||
|
'blank_line_after_namespace' => true,
|
||||||
|
'blank_line_after_opening_tag' => true,
|
||||||
|
'blank_line_before_return' => true,
|
||||||
|
'braces' => true,
|
||||||
|
'cast_spaces' => true,
|
||||||
|
'class_definition' => true,
|
||||||
|
'elseif' => true,
|
||||||
|
'encoding' => true,
|
||||||
|
'full_opening_tag' => true,
|
||||||
|
'function_declaration' => true,
|
||||||
|
'function_typehint_space' => true,
|
||||||
|
'hash_to_slash_comment' => true,
|
||||||
|
'heredoc_to_nowdoc' => true,
|
||||||
|
'include' => true,
|
||||||
|
'linebreak_after_opening_tag' => true,
|
||||||
|
'lowercase_cast' => true,
|
||||||
|
'lowercase_constants' => true,
|
||||||
|
'lowercase_keywords' => true,
|
||||||
|
'method_argument_space' => true,
|
||||||
|
'method_separation' => true,
|
||||||
|
'native_function_casing' => true,
|
||||||
|
'new_with_braces' => true,
|
||||||
|
'no_alias_functions' => true,
|
||||||
|
'no_blank_lines_after_class_opening' => true,
|
||||||
|
'no_blank_lines_after_phpdoc' => true,
|
||||||
|
'no_closing_tag' => true,
|
||||||
|
'no_empty_phpdoc' => true,
|
||||||
|
'no_extra_consecutive_blank_lines' => true,
|
||||||
|
'no_leading_import_slash' => true,
|
||||||
|
'no_leading_namespace_whitespace' => true,
|
||||||
|
'no_multiline_whitespace_around_double_arrow' => true,
|
||||||
|
'no_multiline_whitespace_before_semicolons' => true,
|
||||||
|
'no_short_bool_cast' => true,
|
||||||
|
'no_singleline_whitespace_before_semicolons' => true,
|
||||||
|
'no_spaces_after_function_name' => true,
|
||||||
|
'no_spaces_inside_parenthesis' => true,
|
||||||
|
'no_trailing_comma_in_list_call' => true,
|
||||||
|
'no_trailing_comma_in_singleline_array' => true,
|
||||||
|
'no_trailing_whitespace' => true,
|
||||||
|
'no_trailing_whitespace_in_comment' => true,
|
||||||
|
'no_unneeded_control_parentheses' => true,
|
||||||
|
'no_unreachable_default_argument_value' => true,
|
||||||
|
'no_unused_imports' => true,
|
||||||
|
'no_useless_return' => true,
|
||||||
|
'no_whitespace_before_comma_in_array' => true,
|
||||||
|
'not_operator_with_successor_space' => true,
|
||||||
|
'object_operator_without_whitespace' => true,
|
||||||
|
'ordered_imports' => true,
|
||||||
|
'phpdoc_add_missing_param_annotation' => true,
|
||||||
|
'phpdoc_align' => true,
|
||||||
|
'phpdoc_indent' => true,
|
||||||
|
'phpdoc_inline_tag' => true,
|
||||||
|
'phpdoc_no_access' => true,
|
||||||
|
'phpdoc_no_package' => true,
|
||||||
|
'phpdoc_order' => true,
|
||||||
|
'phpdoc_scalar' => true,
|
||||||
|
'phpdoc_separation' => true,
|
||||||
|
'phpdoc_summary' => true,
|
||||||
|
'phpdoc_to_comment' => true,
|
||||||
|
'phpdoc_trim' => true,
|
||||||
|
'phpdoc_types' => true,
|
||||||
|
'phpdoc_var_without_name' => true,
|
||||||
|
'self_accessor' => true,
|
||||||
|
'short_scalar_cast' => true,
|
||||||
|
'single_blank_line_at_eof' => true,
|
||||||
|
'single_blank_line_before_namespace' => true,
|
||||||
|
'single_import_per_statement' => true,
|
||||||
|
'single_line_after_imports' => true,
|
||||||
|
'single_quote' => true,
|
||||||
|
'space_after_semicolon' => true,
|
||||||
|
'standardize_not_equals' => true,
|
||||||
|
'switch_case_semicolon_to_colon' => true,
|
||||||
|
'switch_case_space' => true,
|
||||||
|
'ternary_operator_spaces' => true,
|
||||||
|
'trailing_comma_in_multiline_array' => true,
|
||||||
|
'trim_array_spaces' => true,
|
||||||
|
'unary_operator_spaces' => true,
|
||||||
|
'visibility_required' => true,
|
||||||
|
'whitespace_after_comma_in_array' => true,
|
||||||
|
'array_syntax' => array('syntax' => 'short'),
|
||||||
|
])
|
||||||
|
->setFinder($finder);
|
@ -49,6 +49,7 @@ before_script:
|
|||||||
- php artisan key:generate --no-interaction
|
- php artisan key:generate --no-interaction
|
||||||
- sed -i 's/APP_ENV=production/APP_ENV=development/g' .env
|
- sed -i 's/APP_ENV=production/APP_ENV=development/g' .env
|
||||||
- sed -i 's/APP_DEBUG=false/APP_DEBUG=true/g' .env
|
- sed -i 's/APP_DEBUG=false/APP_DEBUG=true/g' .env
|
||||||
|
- sed -i 's/MAIL_DRIVER=smtp/MAIL_DRIVER=log/g' .env
|
||||||
- sed -i '$a NINJA_DEV=true' .env
|
- sed -i '$a NINJA_DEV=true' .env
|
||||||
- sed -i '$a TRAVIS=true' .env
|
- sed -i '$a TRAVIS=true' .env
|
||||||
# create the database and user
|
# create the database and user
|
||||||
|
2
LICENSE
2
LICENSE
@ -1,4 +1,4 @@
|
|||||||
Copyright (c) 2016 by Hillel Coren
|
Copyright (c) 2017 by Hillel Coren
|
||||||
Invoice Ninja * https://www.invoiceninja.com
|
Invoice Ninja * https://www.invoiceninja.com
|
||||||
"CREATE. SEND. GET PAID"
|
"CREATE. SEND. GET PAID"
|
||||||
|
|
||||||
|
@ -61,9 +61,9 @@ The [self-host zip](https://www.invoiceninja.com/self-host/) includes all third
|
|||||||
* [Feature Roadmap](https://trello.com/b/63BbiVVe/)
|
* [Feature Roadmap](https://trello.com/b/63BbiVVe/)
|
||||||
|
|
||||||
## Development
|
## Development
|
||||||
* [Custom Module](http://docs.invoiceninja.com/en/latest/custom_modules.html) | [Watch Video](https://www.youtube.com/watch?v=8jJ-PYuq85k)
|
|
||||||
* [PHP SDK](https://github.com/invoiceninja/sdk-php)
|
|
||||||
* [API Documentation](https://www.invoiceninja.com/api-documentation/)
|
* [API Documentation](https://www.invoiceninja.com/api-documentation/)
|
||||||
|
* [PHP SDK](https://github.com/invoiceninja/sdk-php)
|
||||||
|
* [Custom Module](http://docs.invoiceninja.com/en/latest/custom_modules.html) | [Watch Video](https://www.youtube.com/watch?v=8jJ-PYuq85k)
|
||||||
|
|
||||||
## Contributing
|
## Contributing
|
||||||
All contributors are welcome!
|
All contributors are welcome!
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
<?php namespace App\Commands;
|
<?php
|
||||||
|
|
||||||
|
namespace App\Commands;
|
||||||
|
|
||||||
abstract class Command
|
abstract class Command
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,14 +1,16 @@
|
|||||||
<?php namespace App\Console\Commands;
|
<?php
|
||||||
|
|
||||||
use Illuminate\Console\Command;
|
namespace App\Console\Commands;
|
||||||
|
|
||||||
|
use App\Models\Account;
|
||||||
|
use App\Models\Invoice;
|
||||||
use App\Ninja\Mailers\ContactMailer as Mailer;
|
use App\Ninja\Mailers\ContactMailer as Mailer;
|
||||||
use App\Ninja\Repositories\AccountRepository;
|
use App\Ninja\Repositories\AccountRepository;
|
||||||
use App\Services\PaymentService;
|
use App\Services\PaymentService;
|
||||||
use App\Models\Invoice;
|
use Illuminate\Console\Command;
|
||||||
use App\Models\Account;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class ChargeRenewalInvoices
|
* Class ChargeRenewalInvoices.
|
||||||
*/
|
*/
|
||||||
class ChargeRenewalInvoices extends Command
|
class ChargeRenewalInvoices extends Command
|
||||||
{
|
{
|
||||||
@ -39,6 +41,7 @@ class ChargeRenewalInvoices extends Command
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* ChargeRenewalInvoices constructor.
|
* ChargeRenewalInvoices constructor.
|
||||||
|
*
|
||||||
* @param Mailer $mailer
|
* @param Mailer $mailer
|
||||||
* @param AccountRepository $repo
|
* @param AccountRepository $repo
|
||||||
* @param PaymentService $paymentService
|
* @param PaymentService $paymentService
|
||||||
|
@ -1,11 +1,13 @@
|
|||||||
<?php namespace App\Console\Commands;
|
<?php
|
||||||
|
|
||||||
|
namespace App\Console\Commands;
|
||||||
|
|
||||||
use DB;
|
|
||||||
use Mail;
|
|
||||||
use Utils;
|
|
||||||
use Carbon;
|
use Carbon;
|
||||||
|
use DB;
|
||||||
use Illuminate\Console\Command;
|
use Illuminate\Console\Command;
|
||||||
|
use Mail;
|
||||||
use Symfony\Component\Console\Input\InputOption;
|
use Symfony\Component\Console\Input\InputOption;
|
||||||
|
use Utils;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
||||||
@ -37,12 +39,11 @@ Options:
|
|||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class CheckData
|
* Class CheckData.
|
||||||
*/
|
*/
|
||||||
class CheckData extends Command {
|
class CheckData extends Command
|
||||||
|
{
|
||||||
/**
|
/**
|
||||||
* @var string
|
* @var string
|
||||||
*/
|
*/
|
||||||
@ -68,6 +69,7 @@ class CheckData extends Command {
|
|||||||
$this->checkBalances();
|
$this->checkBalances();
|
||||||
|
|
||||||
if (! $this->option('client_id')) {
|
if (! $this->option('client_id')) {
|
||||||
|
$this->checkFailedJobs();
|
||||||
$this->checkAccountData();
|
$this->checkAccountData();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -79,7 +81,7 @@ class CheckData extends Command {
|
|||||||
Mail::raw($this->log, function ($message) use ($errorEmail) {
|
Mail::raw($this->log, function ($message) use ($errorEmail) {
|
||||||
$message->to($errorEmail)
|
$message->to($errorEmail)
|
||||||
->from(CONTACT_EMAIL)
|
->from(CONTACT_EMAIL)
|
||||||
->subject('Check-Data');
|
->subject('Check-Data: ' . strtoupper($this->isValid ? RESULT_SUCCESS : RESULT_FAILURE));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -89,6 +91,17 @@ class CheckData extends Command {
|
|||||||
$this->log .= $str . "\n";
|
$this->log .= $str . "\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private function checkFailedJobs()
|
||||||
|
{
|
||||||
|
$count = DB::table('failed_jobs')->count();
|
||||||
|
|
||||||
|
if ($count > 0) {
|
||||||
|
$this->isValid = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->logMessage($count . ' failed jobs');
|
||||||
|
}
|
||||||
|
|
||||||
private function checkBlankInvoiceHistory()
|
private function checkBlankInvoiceHistory()
|
||||||
{
|
{
|
||||||
$count = DB::table('activities')
|
$count = DB::table('activities')
|
||||||
@ -113,33 +126,33 @@ class CheckData extends Command {
|
|||||||
ENTITY_CONTACT,
|
ENTITY_CONTACT,
|
||||||
ENTITY_PAYMENT,
|
ENTITY_PAYMENT,
|
||||||
ENTITY_INVITATION,
|
ENTITY_INVITATION,
|
||||||
ENTITY_USER
|
ENTITY_USER,
|
||||||
],
|
],
|
||||||
'invoices' => [
|
'invoices' => [
|
||||||
ENTITY_CLIENT,
|
ENTITY_CLIENT,
|
||||||
ENTITY_USER
|
ENTITY_USER,
|
||||||
],
|
],
|
||||||
'payments' => [
|
'payments' => [
|
||||||
ENTITY_INVOICE,
|
ENTITY_INVOICE,
|
||||||
ENTITY_CLIENT,
|
ENTITY_CLIENT,
|
||||||
ENTITY_USER,
|
ENTITY_USER,
|
||||||
ENTITY_INVITATION,
|
ENTITY_INVITATION,
|
||||||
ENTITY_CONTACT
|
ENTITY_CONTACT,
|
||||||
],
|
],
|
||||||
'tasks' => [
|
'tasks' => [
|
||||||
ENTITY_INVOICE,
|
ENTITY_INVOICE,
|
||||||
ENTITY_CLIENT,
|
ENTITY_CLIENT,
|
||||||
ENTITY_USER
|
ENTITY_USER,
|
||||||
],
|
],
|
||||||
'credits' => [
|
'credits' => [
|
||||||
ENTITY_CLIENT,
|
ENTITY_CLIENT,
|
||||||
ENTITY_USER
|
ENTITY_USER,
|
||||||
],
|
],
|
||||||
'expenses' => [
|
'expenses' => [
|
||||||
ENTITY_CLIENT,
|
ENTITY_CLIENT,
|
||||||
ENTITY_VENDOR,
|
ENTITY_VENDOR,
|
||||||
ENTITY_INVOICE,
|
ENTITY_INVOICE,
|
||||||
ENTITY_USER
|
ENTITY_USER,
|
||||||
],
|
],
|
||||||
'products' => [
|
'products' => [
|
||||||
ENTITY_USER,
|
ENTITY_USER,
|
||||||
@ -150,7 +163,7 @@ class CheckData extends Command {
|
|||||||
'projects' => [
|
'projects' => [
|
||||||
ENTITY_USER,
|
ENTITY_USER,
|
||||||
ENTITY_CLIENT,
|
ENTITY_CLIENT,
|
||||||
]
|
],
|
||||||
];
|
];
|
||||||
|
|
||||||
foreach ($tables as $table => $entityTypes) {
|
foreach ($tables as $table => $entityTypes) {
|
||||||
@ -249,7 +262,6 @@ class CheckData extends Command {
|
|||||||
//$this->logMessage(var_dump($activities));
|
//$this->logMessage(var_dump($activities));
|
||||||
|
|
||||||
foreach ($activities as $activity) {
|
foreach ($activities as $activity) {
|
||||||
|
|
||||||
$activityFix = false;
|
$activityFix = false;
|
||||||
|
|
||||||
if ($activity->invoice_id) {
|
if ($activity->invoice_id) {
|
||||||
@ -272,7 +284,6 @@ class CheckData extends Command {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if ($activity->activity_type_id == ACTIVITY_TYPE_CREATE_INVOICE
|
if ($activity->activity_type_id == ACTIVITY_TYPE_CREATE_INVOICE
|
||||||
|| $activity->activity_type_id == ACTIVITY_TYPE_CREATE_QUOTE) {
|
|| $activity->activity_type_id == ACTIVITY_TYPE_CREATE_QUOTE) {
|
||||||
|
|
||||||
@ -293,7 +304,7 @@ class CheckData extends Command {
|
|||||||
|
|
||||||
// **Fix for ninja invoices which didn't have the invoice_type_id value set
|
// **Fix for ninja invoices which didn't have the invoice_type_id value set
|
||||||
if ($noAdjustment && $client->account_id == 20432) {
|
if ($noAdjustment && $client->account_id == 20432) {
|
||||||
$this->logMessage("No adjustment for ninja invoice");
|
$this->logMessage('No adjustment for ninja invoice');
|
||||||
$foundProblem = true;
|
$foundProblem = true;
|
||||||
$clientFix += $invoice->amount;
|
$clientFix += $invoice->amount;
|
||||||
$activityFix = $invoice->amount;
|
$activityFix = $invoice->amount;
|
||||||
@ -361,7 +372,7 @@ class CheckData extends Command {
|
|||||||
|
|
||||||
if ($activityFix !== false || $clientFix !== false) {
|
if ($activityFix !== false || $clientFix !== false) {
|
||||||
$data = [
|
$data = [
|
||||||
'balance' => $activity->balance + $clientFix
|
'balance' => $activity->balance + $clientFix,
|
||||||
];
|
];
|
||||||
|
|
||||||
if ($activityFix !== false) {
|
if ($activityFix !== false) {
|
||||||
@ -384,8 +395,8 @@ class CheckData extends Command {
|
|||||||
$this->logMessage("** Creating 'recovered update' activity **");
|
$this->logMessage("** Creating 'recovered update' activity **");
|
||||||
if ($this->option('fix') == 'true') {
|
if ($this->option('fix') == 'true') {
|
||||||
DB::table('activities')->insert([
|
DB::table('activities')->insert([
|
||||||
'created_at' => new Carbon,
|
'created_at' => new Carbon(),
|
||||||
'updated_at' => new Carbon,
|
'updated_at' => new Carbon(),
|
||||||
'account_id' => $client->account_id,
|
'account_id' => $client->account_id,
|
||||||
'client_id' => $client->id,
|
'client_id' => $client->id,
|
||||||
'adjustment' => $client->actual_balance - $activity->balance,
|
'adjustment' => $client->actual_balance - $activity->balance,
|
||||||
@ -422,5 +433,4 @@ class CheckData extends Command {
|
|||||||
['client_id', null, InputOption::VALUE_OPTIONAL, 'Client id', null],
|
['client_id', null, InputOption::VALUE_OPTIONAL, 'Client id', null],
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,17 +1,19 @@
|
|||||||
<?php namespace App\Console\Commands;
|
<?php
|
||||||
|
|
||||||
|
namespace App\Console\Commands;
|
||||||
|
|
||||||
use Auth;
|
|
||||||
use Utils;
|
|
||||||
use Illuminate\Console\Command;
|
|
||||||
use Faker\Factory;
|
|
||||||
use App\Ninja\Repositories\ClientRepository;
|
use App\Ninja\Repositories\ClientRepository;
|
||||||
|
use App\Ninja\Repositories\ExpenseRepository;
|
||||||
use App\Ninja\Repositories\InvoiceRepository;
|
use App\Ninja\Repositories\InvoiceRepository;
|
||||||
use App\Ninja\Repositories\PaymentRepository;
|
use App\Ninja\Repositories\PaymentRepository;
|
||||||
use App\Ninja\Repositories\VendorRepository;
|
use App\Ninja\Repositories\VendorRepository;
|
||||||
use App\Ninja\Repositories\ExpenseRepository;
|
use Auth;
|
||||||
|
use Faker\Factory;
|
||||||
|
use Illuminate\Console\Command;
|
||||||
|
use Utils;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class CreateTestData
|
* Class CreateTestData.
|
||||||
*/
|
*/
|
||||||
class CreateTestData extends Command
|
class CreateTestData extends Command
|
||||||
{
|
{
|
||||||
@ -32,6 +34,7 @@ class CreateTestData extends Command
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* CreateTestData constructor.
|
* CreateTestData constructor.
|
||||||
|
*
|
||||||
* @param ClientRepository $clientRepo
|
* @param ClientRepository $clientRepo
|
||||||
* @param InvoiceRepository $invoiceRepo
|
* @param InvoiceRepository $invoiceRepo
|
||||||
* @param PaymentRepository $paymentRepo
|
* @param PaymentRepository $paymentRepo
|
||||||
@ -91,7 +94,7 @@ class CreateTestData extends Command
|
|||||||
'last_name' => $this->faker->lastName,
|
'last_name' => $this->faker->lastName,
|
||||||
'email' => $this->faker->safeEmail,
|
'email' => $this->faker->safeEmail,
|
||||||
'phone' => $this->faker->phoneNumber,
|
'phone' => $this->faker->phoneNumber,
|
||||||
]]
|
]],
|
||||||
];
|
];
|
||||||
|
|
||||||
$client = $this->clientRepo->save($data);
|
$client = $this->clientRepo->save($data);
|
||||||
@ -115,8 +118,8 @@ class CreateTestData extends Command
|
|||||||
'product_key' => $this->faker->word,
|
'product_key' => $this->faker->word,
|
||||||
'qty' => $this->faker->randomDigit + 1,
|
'qty' => $this->faker->randomDigit + 1,
|
||||||
'cost' => $this->faker->randomFloat(2, 1, 10),
|
'cost' => $this->faker->randomFloat(2, 1, 10),
|
||||||
'notes' => $this->faker->text($this->faker->numberBetween(50, 300))
|
'notes' => $this->faker->text($this->faker->numberBetween(50, 300)),
|
||||||
]]
|
]],
|
||||||
];
|
];
|
||||||
|
|
||||||
$invoice = $this->invoiceRepo->save($data);
|
$invoice = $this->invoiceRepo->save($data);
|
||||||
@ -159,7 +162,7 @@ class CreateTestData extends Command
|
|||||||
'last_name' => $this->faker->lastName,
|
'last_name' => $this->faker->lastName,
|
||||||
'email' => $this->faker->safeEmail,
|
'email' => $this->faker->safeEmail,
|
||||||
'phone' => $this->faker->phoneNumber,
|
'phone' => $this->faker->phoneNumber,
|
||||||
]]
|
]],
|
||||||
];
|
];
|
||||||
|
|
||||||
$vendor = $this->vendorRepo->save($data);
|
$vendor = $this->vendorRepo->save($data);
|
||||||
|
@ -1,10 +1,12 @@
|
|||||||
<?php namespace App\Console\Commands;
|
<?php
|
||||||
|
|
||||||
|
namespace App\Console\Commands;
|
||||||
|
|
||||||
use File;
|
use File;
|
||||||
use Illuminate\Console\Command;
|
use Illuminate\Console\Command;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class GenerateResources
|
* Class GenerateResources.
|
||||||
*/
|
*/
|
||||||
class GenerateResources extends Command
|
class GenerateResources extends Command
|
||||||
{
|
{
|
||||||
|
@ -1,13 +1,15 @@
|
|||||||
<?php namespace InvoiceNinja\Console\Commands;
|
<?php
|
||||||
|
|
||||||
|
namespace InvoiceNinja\Console\Commands;
|
||||||
|
|
||||||
use Illuminate\Console\Command;
|
use Illuminate\Console\Command;
|
||||||
use Illuminate\Foundation\Inspiring;
|
use Illuminate\Foundation\Inspiring;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class Inspire
|
* Class Inspire.
|
||||||
*/
|
*/
|
||||||
class Inspire extends Command {
|
class Inspire extends Command
|
||||||
|
{
|
||||||
/**
|
/**
|
||||||
* The console command name.
|
* The console command name.
|
||||||
*
|
*
|
||||||
@ -31,5 +33,4 @@ class Inspire extends Command {
|
|||||||
{
|
{
|
||||||
$this->comment(PHP_EOL.Inspiring::quote().PHP_EOL);
|
$this->comment(PHP_EOL.Inspiring::quote().PHP_EOL);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -2,14 +2,14 @@
|
|||||||
|
|
||||||
namespace App\Console\Commands;
|
namespace App\Console\Commands;
|
||||||
|
|
||||||
use Illuminate\Support\Str;
|
|
||||||
use Illuminate\Console\Command;
|
use Illuminate\Console\Command;
|
||||||
use Symfony\Component\Console\Input\InputArgument;
|
use Illuminate\Support\Str;
|
||||||
use Symfony\Component\Console\Input\InputOption;
|
|
||||||
|
|
||||||
use Nwidart\Modules\Commands\GeneratorCommand;
|
use Nwidart\Modules\Commands\GeneratorCommand;
|
||||||
use Nwidart\Modules\Support\Stub;
|
use Nwidart\Modules\Support\Stub;
|
||||||
|
|
||||||
use Nwidart\Modules\Traits\ModuleCommandTrait;
|
use Nwidart\Modules\Traits\ModuleCommandTrait;
|
||||||
|
use Symfony\Component\Console\Input\InputArgument;
|
||||||
|
use Symfony\Component\Console\Input\InputOption;
|
||||||
|
|
||||||
class MakeClass extends GeneratorCommand
|
class MakeClass extends GeneratorCommand
|
||||||
{
|
{
|
||||||
@ -48,20 +48,19 @@ class MakeClass extends GeneratorCommand
|
|||||||
*/
|
*/
|
||||||
protected function getOptions()
|
protected function getOptions()
|
||||||
{
|
{
|
||||||
return array(
|
return [
|
||||||
array('fields', null, InputOption::VALUE_OPTIONAL, 'The model attributes.', null),
|
['fields', null, InputOption::VALUE_OPTIONAL, 'The model attributes.', null],
|
||||||
array('filename', null, InputOption::VALUE_OPTIONAL, 'The class filename.', null),
|
['filename', null, InputOption::VALUE_OPTIONAL, 'The class filename.', null],
|
||||||
);
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public function getTemplateContents()
|
public function getTemplateContents()
|
||||||
{
|
{
|
||||||
$module = $this->laravel['modules']->findOrFail($this->getModuleName());
|
$module = $this->laravel['modules']->findOrFail($this->getModuleName());
|
||||||
$path = str_replace('/', '\\', config('modules.paths.generator.' . $this->argument('class')));
|
$path = str_replace('/', '\\', config('modules.paths.generator.' . $this->argument('class')));
|
||||||
|
|
||||||
return (new Stub('/' . $this->argument('prefix') . $this->argument('class') . '.stub', [
|
return (new Stub('/' . $this->argument('prefix') . $this->argument('class') . '.stub', [
|
||||||
'NAMESPACE' => $this->getClassNamespace($module) . "\\" . $path,
|
'NAMESPACE' => $this->getClassNamespace($module) . '\\' . $path,
|
||||||
'LOWER_NAME' => $module->getLowerName(),
|
'LOWER_NAME' => $module->getLowerName(),
|
||||||
'CLASS' => $this->getClass(),
|
'CLASS' => $this->getClass(),
|
||||||
'STUDLY_NAME' => Str::studly($module->getLowerName()),
|
'STUDLY_NAME' => Str::studly($module->getLowerName()),
|
||||||
@ -88,6 +87,7 @@ class MakeClass extends GeneratorCommand
|
|||||||
if ($this->option('filename')) {
|
if ($this->option('filename')) {
|
||||||
return $this->option('filename');
|
return $this->option('filename');
|
||||||
}
|
}
|
||||||
|
|
||||||
return studly_case($this->argument('prefix')) . studly_case($this->argument('name')) . Str::studly($this->argument('class'));
|
return studly_case($this->argument('prefix')) . studly_case($this->argument('name')) . Str::studly($this->argument('class'));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -169,6 +169,5 @@ class MakeClass extends GeneratorCommand
|
|||||||
}
|
}
|
||||||
|
|
||||||
return rtrim($str);
|
return rtrim($str);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -48,7 +48,7 @@ class MakeModule extends Command
|
|||||||
$fillable = array_map(function ($item) {
|
$fillable = array_map(function ($item) {
|
||||||
return explode(':', $item)[0];
|
return explode(':', $item)[0];
|
||||||
}, $fillable);
|
}, $fillable);
|
||||||
$fillable = join(',', $fillable);
|
$fillable = implode(',', $fillable);
|
||||||
|
|
||||||
$this->info("Creating module: {$name}...");
|
$this->info("Creating module: {$name}...");
|
||||||
|
|
||||||
@ -77,22 +77,21 @@ class MakeModule extends Command
|
|||||||
|
|
||||||
Artisan::call('module:dump');
|
Artisan::call('module:dump');
|
||||||
|
|
||||||
$this->info("Done");
|
$this->info('Done');
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function getArguments()
|
protected function getArguments()
|
||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
['name', InputArgument::REQUIRED, 'The name of the module.'],
|
['name', InputArgument::REQUIRED, 'The name of the module.'],
|
||||||
['fields', InputArgument::OPTIONAL, 'The fields of the module.']
|
['fields', InputArgument::OPTIONAL, 'The fields of the module.'],
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function getOptions()
|
protected function getOptions()
|
||||||
{
|
{
|
||||||
return array(
|
return [
|
||||||
array('migrate', null, InputOption::VALUE_OPTIONAL, 'The model attributes.', null),
|
['migrate', null, InputOption::VALUE_OPTIONAL, 'The model attributes.', null],
|
||||||
);
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,10 +1,12 @@
|
|||||||
<?php namespace App\Console\Commands;
|
<?php
|
||||||
|
|
||||||
|
namespace App\Console\Commands;
|
||||||
|
|
||||||
use DB;
|
use DB;
|
||||||
use Illuminate\Console\Command;
|
use Illuminate\Console\Command;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class PruneData
|
* Class PruneData.
|
||||||
*/
|
*/
|
||||||
class PruneData extends Command
|
class PruneData extends Command
|
||||||
{
|
{
|
||||||
|
@ -1,11 +1,13 @@
|
|||||||
<?php namespace App\Console\Commands;
|
<?php
|
||||||
|
|
||||||
|
namespace App\Console\Commands;
|
||||||
|
|
||||||
use DateTime;
|
|
||||||
use App\Models\Document;
|
use App\Models\Document;
|
||||||
|
use DateTime;
|
||||||
use Illuminate\Console\Command;
|
use Illuminate\Console\Command;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class RemoveOrphanedDocuments
|
* Class RemoveOrphanedDocuments.
|
||||||
*/
|
*/
|
||||||
class RemoveOrphanedDocuments extends Command
|
class RemoveOrphanedDocuments extends Command
|
||||||
{
|
{
|
||||||
|
@ -1,15 +1,15 @@
|
|||||||
<?php namespace App\Console\Commands;
|
<?php
|
||||||
|
|
||||||
|
namespace App\Console\Commands;
|
||||||
|
|
||||||
use Utils;
|
|
||||||
use Illuminate\Console\Command;
|
use Illuminate\Console\Command;
|
||||||
|
use Utils;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class ResetData
|
* Class ResetData.
|
||||||
*/
|
*/
|
||||||
class ResetData extends Command
|
class ResetData extends Command
|
||||||
{
|
{
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var string
|
* @var string
|
||||||
*/
|
*/
|
||||||
|
@ -64,7 +64,7 @@ class ResetInvoiceSchemaCounter extends Command
|
|||||||
|
|
||||||
if (Carbon::now()->year > $invoiceYear || $force) {
|
if (Carbon::now()->year > $invoiceYear || $force) {
|
||||||
$accounts->transform(function ($a) {
|
$accounts->transform(function ($a) {
|
||||||
/** @var Account $a */
|
/* @var Account $a */
|
||||||
$a->invoice_number_counter = 1;
|
$a->invoice_number_counter = 1;
|
||||||
$a->update();
|
$a->update();
|
||||||
});
|
});
|
||||||
|
@ -1,14 +1,16 @@
|
|||||||
<?php namespace App\Console\Commands;
|
<?php
|
||||||
|
|
||||||
use DateTime;
|
namespace App\Console\Commands;
|
||||||
use Illuminate\Console\Command;
|
|
||||||
|
use App\Models\Invoice;
|
||||||
use App\Ninja\Mailers\ContactMailer as Mailer;
|
use App\Ninja\Mailers\ContactMailer as Mailer;
|
||||||
use App\Ninja\Repositories\InvoiceRepository;
|
use App\Ninja\Repositories\InvoiceRepository;
|
||||||
use App\Services\PaymentService;
|
use App\Services\PaymentService;
|
||||||
use App\Models\Invoice;
|
use DateTime;
|
||||||
|
use Illuminate\Console\Command;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class SendRecurringInvoices
|
* Class SendRecurringInvoices.
|
||||||
*/
|
*/
|
||||||
class SendRecurringInvoices extends Command
|
class SendRecurringInvoices extends Command
|
||||||
{
|
{
|
||||||
@ -39,6 +41,7 @@ class SendRecurringInvoices extends Command
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* SendRecurringInvoices constructor.
|
* SendRecurringInvoices constructor.
|
||||||
|
*
|
||||||
* @param Mailer $mailer
|
* @param Mailer $mailer
|
||||||
* @param InvoiceRepository $invoiceRepo
|
* @param InvoiceRepository $invoiceRepo
|
||||||
* @param PaymentService $paymentService
|
* @param PaymentService $paymentService
|
||||||
|
@ -1,13 +1,15 @@
|
|||||||
<?php namespace App\Console\Commands;
|
<?php
|
||||||
|
|
||||||
|
namespace App\Console\Commands;
|
||||||
|
|
||||||
use App\Models\Invoice;
|
use App\Models\Invoice;
|
||||||
use Illuminate\Console\Command;
|
|
||||||
use App\Ninja\Mailers\ContactMailer as Mailer;
|
use App\Ninja\Mailers\ContactMailer as Mailer;
|
||||||
use App\Ninja\Repositories\AccountRepository;
|
use App\Ninja\Repositories\AccountRepository;
|
||||||
use App\Ninja\Repositories\InvoiceRepository;
|
use App\Ninja\Repositories\InvoiceRepository;
|
||||||
|
use Illuminate\Console\Command;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class SendReminders
|
* Class SendReminders.
|
||||||
*/
|
*/
|
||||||
class SendReminders extends Command
|
class SendReminders extends Command
|
||||||
{
|
{
|
||||||
@ -38,6 +40,7 @@ class SendReminders extends Command
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* SendReminders constructor.
|
* SendReminders constructor.
|
||||||
|
*
|
||||||
* @param Mailer $mailer
|
* @param Mailer $mailer
|
||||||
* @param InvoiceRepository $invoiceRepo
|
* @param InvoiceRepository $invoiceRepo
|
||||||
* @param accountRepository $accountRepo
|
* @param accountRepository $accountRepo
|
||||||
@ -77,6 +80,14 @@ class SendReminders extends Command
|
|||||||
}
|
}
|
||||||
|
|
||||||
$this->info('Done');
|
$this->info('Done');
|
||||||
|
|
||||||
|
if ($errorEmail = env('ERROR_EMAIL')) {
|
||||||
|
\Mail::raw('EOM', function ($message) use ($errorEmail) {
|
||||||
|
$message->to($errorEmail)
|
||||||
|
->from(CONTACT_EMAIL)
|
||||||
|
->subject('SendReminders: Finished successfully');
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1,13 +1,15 @@
|
|||||||
<?php namespace App\Console\Commands;
|
<?php
|
||||||
|
|
||||||
|
namespace App\Console\Commands;
|
||||||
|
|
||||||
use Utils;
|
|
||||||
use Illuminate\Console\Command;
|
|
||||||
use App\Models\Company;
|
use App\Models\Company;
|
||||||
use App\Ninja\Mailers\ContactMailer as Mailer;
|
use App\Ninja\Mailers\ContactMailer as Mailer;
|
||||||
use App\Ninja\Repositories\AccountRepository;
|
use App\Ninja\Repositories\AccountRepository;
|
||||||
|
use Illuminate\Console\Command;
|
||||||
|
use Utils;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class SendRenewalInvoices
|
* Class SendRenewalInvoices.
|
||||||
*/
|
*/
|
||||||
class SendRenewalInvoices extends Command
|
class SendRenewalInvoices extends Command
|
||||||
{
|
{
|
||||||
|
@ -1,10 +1,12 @@
|
|||||||
<?php namespace App\Console\Commands;
|
<?php
|
||||||
|
|
||||||
|
namespace App\Console\Commands;
|
||||||
|
|
||||||
use Illuminate\Console\Command;
|
|
||||||
use App\Services\BankAccountService;
|
use App\Services\BankAccountService;
|
||||||
|
use Illuminate\Console\Command;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class TestOFX
|
* Class TestOFX.
|
||||||
*/
|
*/
|
||||||
class TestOFX extends Command
|
class TestOFX extends Command
|
||||||
{
|
{
|
||||||
|
@ -1,8 +1,10 @@
|
|||||||
<?php namespace App\Console;
|
<?php
|
||||||
|
|
||||||
|
namespace App\Console;
|
||||||
|
|
||||||
use Utils;
|
|
||||||
use Illuminate\Console\Scheduling\Schedule;
|
use Illuminate\Console\Scheduling\Schedule;
|
||||||
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
|
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
|
||||||
|
use Utils;
|
||||||
|
|
||||||
class Kernel extends ConsoleKernel
|
class Kernel extends ConsoleKernel
|
||||||
{
|
{
|
||||||
@ -31,6 +33,7 @@ class Kernel extends ConsoleKernel
|
|||||||
* Define the application's command schedule.
|
* Define the application's command schedule.
|
||||||
*
|
*
|
||||||
* @param \Illuminate\Console\Scheduling\Schedule $schedule
|
* @param \Illuminate\Console\Scheduling\Schedule $schedule
|
||||||
|
*
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
protected function schedule(Schedule $schedule)
|
protected function schedule(Schedule $schedule)
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
if (!defined('APP_NAME'))
|
if (! defined('APP_NAME')) {
|
||||||
{
|
|
||||||
define('APP_NAME', env('APP_NAME', 'Invoice Ninja'));
|
define('APP_NAME', env('APP_NAME', 'Invoice Ninja'));
|
||||||
define('CONTACT_EMAIL', env('MAIL_FROM_ADDRESS', env('MAIL_USERNAME')));
|
define('CONTACT_EMAIL', env('MAIL_FROM_ADDRESS', env('MAIL_USERNAME')));
|
||||||
define('CONTACT_NAME', env('MAIL_FROM_NAME'));
|
define('CONTACT_NAME', env('MAIL_FROM_NAME'));
|
||||||
@ -129,7 +128,6 @@ if (!defined('APP_NAME'))
|
|||||||
define('ACTIVITY_TYPE_RESTORE_TASK', 46);
|
define('ACTIVITY_TYPE_RESTORE_TASK', 46);
|
||||||
define('ACTIVITY_TYPE_UPDATE_EXPENSE', 47);
|
define('ACTIVITY_TYPE_UPDATE_EXPENSE', 47);
|
||||||
|
|
||||||
|
|
||||||
define('DEFAULT_INVOICE_NUMBER', '0001');
|
define('DEFAULT_INVOICE_NUMBER', '0001');
|
||||||
define('RECENTLY_VIEWED_LIMIT', 20);
|
define('RECENTLY_VIEWED_LIMIT', 20);
|
||||||
define('LOGGED_ERROR_LIMIT', 100);
|
define('LOGGED_ERROR_LIMIT', 100);
|
||||||
@ -181,7 +179,8 @@ if (!defined('APP_NAME'))
|
|||||||
define('INVOICE_STATUS_APPROVED', 4);
|
define('INVOICE_STATUS_APPROVED', 4);
|
||||||
define('INVOICE_STATUS_PARTIAL', 5);
|
define('INVOICE_STATUS_PARTIAL', 5);
|
||||||
define('INVOICE_STATUS_PAID', 6);
|
define('INVOICE_STATUS_PAID', 6);
|
||||||
define('INVOICE_STATUS_OVERDUE', 7);
|
define('INVOICE_STATUS_OVERDUE', -1);
|
||||||
|
define('INVOICE_STATUS_UNPAID', -2);
|
||||||
|
|
||||||
define('PAYMENT_STATUS_PENDING', 1);
|
define('PAYMENT_STATUS_PENDING', 1);
|
||||||
define('PAYMENT_STATUS_VOIDED', 2);
|
define('PAYMENT_STATUS_VOIDED', 2);
|
||||||
@ -205,9 +204,10 @@ if (!defined('APP_NAME'))
|
|||||||
define('FREQUENCY_TWO_WEEKS', 2);
|
define('FREQUENCY_TWO_WEEKS', 2);
|
||||||
define('FREQUENCY_FOUR_WEEKS', 3);
|
define('FREQUENCY_FOUR_WEEKS', 3);
|
||||||
define('FREQUENCY_MONTHLY', 4);
|
define('FREQUENCY_MONTHLY', 4);
|
||||||
define('FREQUENCY_THREE_MONTHS', 5);
|
define('FREQUENCY_TWO_MONTHS', 5);
|
||||||
define('FREQUENCY_SIX_MONTHS', 6);
|
define('FREQUENCY_THREE_MONTHS', 6);
|
||||||
define('FREQUENCY_ANNUALLY', 7);
|
define('FREQUENCY_SIX_MONTHS', 7);
|
||||||
|
define('FREQUENCY_ANNUALLY', 8);
|
||||||
|
|
||||||
define('SESSION_TIMEZONE', 'timezone');
|
define('SESSION_TIMEZONE', 'timezone');
|
||||||
define('SESSION_CURRENCY', 'currency');
|
define('SESSION_CURRENCY', 'currency');
|
||||||
@ -242,7 +242,6 @@ if (!defined('APP_NAME'))
|
|||||||
define('RESULT_SUCCESS', 'success');
|
define('RESULT_SUCCESS', 'success');
|
||||||
define('RESULT_FAILURE', 'failure');
|
define('RESULT_FAILURE', 'failure');
|
||||||
|
|
||||||
|
|
||||||
define('PAYMENT_LIBRARY_OMNIPAY', 1);
|
define('PAYMENT_LIBRARY_OMNIPAY', 1);
|
||||||
define('PAYMENT_LIBRARY_PHP_PAYMENTS', 2);
|
define('PAYMENT_LIBRARY_PHP_PAYMENTS', 2);
|
||||||
|
|
||||||
@ -292,7 +291,7 @@ if (!defined('APP_NAME'))
|
|||||||
define('NINJA_APP_URL', env('NINJA_APP_URL', 'https://app.invoiceninja.com'));
|
define('NINJA_APP_URL', env('NINJA_APP_URL', 'https://app.invoiceninja.com'));
|
||||||
define('NINJA_DOCS_URL', env('NINJA_DOCS_URL', 'http://docs.invoiceninja.com/en/latest'));
|
define('NINJA_DOCS_URL', env('NINJA_DOCS_URL', 'http://docs.invoiceninja.com/en/latest'));
|
||||||
define('NINJA_DATE', '2000-01-01');
|
define('NINJA_DATE', '2000-01-01');
|
||||||
define('NINJA_VERSION', '3.0.5' . env('NINJA_VERSION_SUFFIX'));
|
define('NINJA_VERSION', '3.1.0' . env('NINJA_VERSION_SUFFIX'));
|
||||||
|
|
||||||
define('SOCIAL_LINK_FACEBOOK', env('SOCIAL_LINK_FACEBOOK', 'https://www.facebook.com/invoiceninja'));
|
define('SOCIAL_LINK_FACEBOOK', env('SOCIAL_LINK_FACEBOOK', 'https://www.facebook.com/invoiceninja'));
|
||||||
define('SOCIAL_LINK_TWITTER', env('SOCIAL_LINK_TWITTER', 'https://twitter.com/invoiceninja'));
|
define('SOCIAL_LINK_TWITTER', env('SOCIAL_LINK_TWITTER', 'https://twitter.com/invoiceninja'));
|
||||||
@ -394,6 +393,12 @@ if (!defined('APP_NAME'))
|
|||||||
define('REMINDER2', 'reminder2');
|
define('REMINDER2', 'reminder2');
|
||||||
define('REMINDER3', 'reminder3');
|
define('REMINDER3', 'reminder3');
|
||||||
|
|
||||||
|
define('RESET_FREQUENCY_DAILY', 1);
|
||||||
|
define('RESET_FREQUENCY_WEEKLY', 2);
|
||||||
|
define('RESET_FREQUENCY_MONTHLY', 3);
|
||||||
|
define('RESET_FREQUENCY_QUATERLY', 4);
|
||||||
|
define('RESET_FREQUENCY_YEARLY', 5);
|
||||||
|
|
||||||
define('REMINDER_DIRECTION_AFTER', 1);
|
define('REMINDER_DIRECTION_AFTER', 1);
|
||||||
define('REMINDER_DIRECTION_BEFORE', 2);
|
define('REMINDER_DIRECTION_BEFORE', 2);
|
||||||
|
|
||||||
@ -515,7 +520,7 @@ if (!defined('APP_NAME'))
|
|||||||
2 => ['card' => 'images/credit_cards/Test-MasterCard-Icon.png', 'text' => 'Master Card'],
|
2 => ['card' => 'images/credit_cards/Test-MasterCard-Icon.png', 'text' => 'Master Card'],
|
||||||
4 => ['card' => 'images/credit_cards/Test-AmericanExpress-Icon.png', 'text' => 'American Express'],
|
4 => ['card' => 'images/credit_cards/Test-AmericanExpress-Icon.png', 'text' => 'American Express'],
|
||||||
8 => ['card' => 'images/credit_cards/Test-Diners-Icon.png', 'text' => 'Diners'],
|
8 => ['card' => 'images/credit_cards/Test-Diners-Icon.png', 'text' => 'Diners'],
|
||||||
16 => ['card' => 'images/credit_cards/Test-Discover-Icon.png', 'text' => 'Discover']
|
16 => ['card' => 'images/credit_cards/Test-Discover-Icon.png', 'text' => 'Discover'],
|
||||||
];
|
];
|
||||||
define('CREDIT_CARDS', serialize($creditCards));
|
define('CREDIT_CARDS', serialize($creditCards));
|
||||||
|
|
||||||
@ -540,7 +545,6 @@ if (!defined('APP_NAME'))
|
|||||||
];
|
];
|
||||||
define('CACHED_TABLES', serialize($cachedTables));
|
define('CACHED_TABLES', serialize($cachedTables));
|
||||||
|
|
||||||
|
|
||||||
// TODO remove these translation functions
|
// TODO remove these translation functions
|
||||||
function uctrans($text)
|
function uctrans($text)
|
||||||
{
|
{
|
||||||
@ -557,6 +561,7 @@ if (!defined('APP_NAME'))
|
|||||||
} else {
|
} else {
|
||||||
$string = trans($text);
|
$string = trans($text);
|
||||||
$english = trans($text, [], 'en');
|
$english = trans($text, [], 'en');
|
||||||
|
|
||||||
return $string != $english ? $string : '';
|
return $string != $english ? $string : '';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,6 @@
|
|||||||
<?php namespace App\Constants;
|
<?php
|
||||||
|
|
||||||
|
namespace App\Constants;
|
||||||
|
|
||||||
class Domain
|
class Domain
|
||||||
{
|
{
|
||||||
|
@ -1,10 +1,12 @@
|
|||||||
<?php namespace App\Events;
|
<?php
|
||||||
|
|
||||||
|
namespace App\Events;
|
||||||
|
|
||||||
use App\Models\Client;
|
use App\Models\Client;
|
||||||
use Illuminate\Queue\SerializesModels;
|
use Illuminate\Queue\SerializesModels;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class ClientWasArchived
|
* Class ClientWasArchived.
|
||||||
*/
|
*/
|
||||||
class ClientWasArchived extends Event
|
class ClientWasArchived extends Event
|
||||||
{
|
{
|
||||||
|
@ -1,10 +1,12 @@
|
|||||||
<?php namespace App\Events;
|
<?php
|
||||||
|
|
||||||
|
namespace App\Events;
|
||||||
|
|
||||||
use App\Models\Client;
|
use App\Models\Client;
|
||||||
use Illuminate\Queue\SerializesModels;
|
use Illuminate\Queue\SerializesModels;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class ClientWasCreated
|
* Class ClientWasCreated.
|
||||||
*/
|
*/
|
||||||
class ClientWasCreated extends Event
|
class ClientWasCreated extends Event
|
||||||
{
|
{
|
||||||
|
@ -1,10 +1,12 @@
|
|||||||
<?php namespace App\Events;
|
<?php
|
||||||
|
|
||||||
|
namespace App\Events;
|
||||||
|
|
||||||
use App\Models\Client;
|
use App\Models\Client;
|
||||||
use Illuminate\Queue\SerializesModels;
|
use Illuminate\Queue\SerializesModels;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class ClientWasDeleted
|
* Class ClientWasDeleted.
|
||||||
*/
|
*/
|
||||||
class ClientWasDeleted extends Event
|
class ClientWasDeleted extends Event
|
||||||
{
|
{
|
||||||
|
@ -1,10 +1,12 @@
|
|||||||
<?php namespace App\Events;
|
<?php
|
||||||
|
|
||||||
|
namespace App\Events;
|
||||||
|
|
||||||
use App\Models\Client;
|
use App\Models\Client;
|
||||||
use Illuminate\Queue\SerializesModels;
|
use Illuminate\Queue\SerializesModels;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class ClientWasRestored
|
* Class ClientWasRestored.
|
||||||
*/
|
*/
|
||||||
class ClientWasRestored extends Event
|
class ClientWasRestored extends Event
|
||||||
{
|
{
|
||||||
|
@ -1,10 +1,12 @@
|
|||||||
<?php namespace App\Events;
|
<?php
|
||||||
|
|
||||||
|
namespace App\Events;
|
||||||
|
|
||||||
use App\Models\Client;
|
use App\Models\Client;
|
||||||
use Illuminate\Queue\SerializesModels;
|
use Illuminate\Queue\SerializesModels;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class ClientWasUpdated
|
* Class ClientWasUpdated.
|
||||||
*/
|
*/
|
||||||
class ClientWasUpdated extends Event
|
class ClientWasUpdated extends Event
|
||||||
{
|
{
|
||||||
|
@ -1,15 +1,15 @@
|
|||||||
<?php namespace App\Events;
|
<?php
|
||||||
|
|
||||||
|
namespace App\Events;
|
||||||
|
|
||||||
use App\Models\Credit;
|
use App\Models\Credit;
|
||||||
use Illuminate\Queue\SerializesModels;
|
use Illuminate\Queue\SerializesModels;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class CreditWasArchived
|
* Class CreditWasArchived.
|
||||||
*/
|
*/
|
||||||
class CreditWasArchived extends Event
|
class CreditWasArchived extends Event
|
||||||
{
|
{
|
||||||
|
|
||||||
use SerializesModels;
|
use SerializesModels;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -26,5 +26,4 @@ class CreditWasArchived extends Event
|
|||||||
{
|
{
|
||||||
$this->credit = $credit;
|
$this->credit = $credit;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,11 +1,12 @@
|
|||||||
<?php namespace App\Events;
|
<?php
|
||||||
|
|
||||||
|
namespace App\Events;
|
||||||
|
|
||||||
use App\Models\Credit;
|
use App\Models\Credit;
|
||||||
use Illuminate\Queue\SerializesModels;
|
use Illuminate\Queue\SerializesModels;
|
||||||
|
|
||||||
class CreditWasCreated extends Event
|
class CreditWasCreated extends Event
|
||||||
{
|
{
|
||||||
|
|
||||||
use SerializesModels;
|
use SerializesModels;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -22,5 +23,4 @@ class CreditWasCreated extends Event
|
|||||||
{
|
{
|
||||||
$this->credit = $credit;
|
$this->credit = $credit;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,13 +1,15 @@
|
|||||||
<?php namespace App\Events;
|
<?php
|
||||||
|
|
||||||
|
namespace App\Events;
|
||||||
|
|
||||||
use App\Models\Credit;
|
use App\Models\Credit;
|
||||||
use Illuminate\Queue\SerializesModels;
|
use Illuminate\Queue\SerializesModels;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class CreditWasDeleted
|
* Class CreditWasDeleted.
|
||||||
*/
|
*/
|
||||||
class CreditWasDeleted extends Event {
|
class CreditWasDeleted extends Event
|
||||||
|
{
|
||||||
use SerializesModels;
|
use SerializesModels;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -24,5 +26,4 @@ class CreditWasDeleted extends Event {
|
|||||||
{
|
{
|
||||||
$this->credit = $credit;
|
$this->credit = $credit;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,14 +1,15 @@
|
|||||||
<?php namespace App\Events;
|
<?php
|
||||||
|
|
||||||
|
namespace App\Events;
|
||||||
|
|
||||||
use App\Models\Credit;
|
use App\Models\Credit;
|
||||||
use Illuminate\Queue\SerializesModels;
|
use Illuminate\Queue\SerializesModels;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class CreditWasRestored
|
* Class CreditWasRestored.
|
||||||
*/
|
*/
|
||||||
class CreditWasRestored extends Event {
|
class CreditWasRestored extends Event
|
||||||
|
{
|
||||||
use SerializesModels;
|
use SerializesModels;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -25,5 +26,4 @@ class CreditWasRestored extends Event {
|
|||||||
{
|
{
|
||||||
$this->credit = $credit;
|
$this->credit = $credit;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,6 @@
|
|||||||
<?php namespace App\Events;
|
<?php
|
||||||
|
|
||||||
|
namespace App\Events;
|
||||||
|
|
||||||
abstract class Event
|
abstract class Event
|
||||||
{
|
{
|
||||||
|
@ -1,10 +1,12 @@
|
|||||||
<?php namespace App\Events;
|
<?php
|
||||||
|
|
||||||
|
namespace App\Events;
|
||||||
|
|
||||||
use App\Models\Expense;
|
use App\Models\Expense;
|
||||||
use Illuminate\Queue\SerializesModels;
|
use Illuminate\Queue\SerializesModels;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class ExpenseWasArchived
|
* Class ExpenseWasArchived.
|
||||||
*/
|
*/
|
||||||
class ExpenseWasArchived extends Event
|
class ExpenseWasArchived extends Event
|
||||||
{
|
{
|
||||||
@ -24,5 +26,4 @@ class ExpenseWasArchived extends Event
|
|||||||
{
|
{
|
||||||
$this->expense = $expense;
|
$this->expense = $expense;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,10 +1,12 @@
|
|||||||
<?php namespace App\Events;
|
<?php
|
||||||
|
|
||||||
|
namespace App\Events;
|
||||||
|
|
||||||
use App\Models\Expense;
|
use App\Models\Expense;
|
||||||
use Illuminate\Queue\SerializesModels;
|
use Illuminate\Queue\SerializesModels;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class ExpenseWasCreated
|
* Class ExpenseWasCreated.
|
||||||
*/
|
*/
|
||||||
class ExpenseWasCreated extends Event
|
class ExpenseWasCreated extends Event
|
||||||
{
|
{
|
||||||
|
@ -1,10 +1,12 @@
|
|||||||
<?php namespace App\Events;
|
<?php
|
||||||
|
|
||||||
|
namespace App\Events;
|
||||||
|
|
||||||
use App\Models\Expense;
|
use App\Models\Expense;
|
||||||
use Illuminate\Queue\SerializesModels;
|
use Illuminate\Queue\SerializesModels;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class ExpenseWasDeleted
|
* Class ExpenseWasDeleted.
|
||||||
*/
|
*/
|
||||||
class ExpenseWasDeleted extends Event
|
class ExpenseWasDeleted extends Event
|
||||||
{
|
{
|
||||||
@ -24,5 +26,4 @@ class ExpenseWasDeleted extends Event
|
|||||||
{
|
{
|
||||||
$this->expense = $expense;
|
$this->expense = $expense;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,11 +1,12 @@
|
|||||||
<?php namespace App\Events;
|
<?php
|
||||||
|
|
||||||
|
namespace App\Events;
|
||||||
|
|
||||||
use App\Models\Expense;
|
use App\Models\Expense;
|
||||||
use Illuminate\Queue\SerializesModels;
|
use Illuminate\Queue\SerializesModels;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class ExpenseWasRestored
|
* Class ExpenseWasRestored.
|
||||||
*/
|
*/
|
||||||
class ExpenseWasRestored extends Event
|
class ExpenseWasRestored extends Event
|
||||||
{
|
{
|
||||||
@ -25,5 +26,4 @@ class ExpenseWasRestored extends Event
|
|||||||
{
|
{
|
||||||
$this->expense = $expense;
|
$this->expense = $expense;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,10 +1,12 @@
|
|||||||
<?php namespace App\Events;
|
<?php
|
||||||
|
|
||||||
|
namespace App\Events;
|
||||||
|
|
||||||
use App\Models\Expense;
|
use App\Models\Expense;
|
||||||
use Illuminate\Queue\SerializesModels;
|
use Illuminate\Queue\SerializesModels;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class ExpenseWasUpdated
|
* Class ExpenseWasUpdated.
|
||||||
*/
|
*/
|
||||||
class ExpenseWasUpdated extends Event
|
class ExpenseWasUpdated extends Event
|
||||||
{
|
{
|
||||||
|
@ -1,15 +1,15 @@
|
|||||||
<?php namespace App\Events;
|
<?php
|
||||||
|
|
||||||
|
namespace App\Events;
|
||||||
|
|
||||||
use App\Models\Invitation;
|
use App\Models\Invitation;
|
||||||
use Illuminate\Queue\SerializesModels;
|
use Illuminate\Queue\SerializesModels;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class InvoiceInvitationWasEmailed
|
* Class InvoiceInvitationWasEmailed.
|
||||||
*/
|
*/
|
||||||
class InvoiceInvitationWasEmailed extends Event
|
class InvoiceInvitationWasEmailed extends Event
|
||||||
{
|
{
|
||||||
|
|
||||||
use SerializesModels;
|
use SerializesModels;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -18,7 +18,7 @@ class InvoiceInvitationWasEmailed extends Event
|
|||||||
public $invitation;
|
public $invitation;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var String
|
* @var string
|
||||||
*/
|
*/
|
||||||
public $notes;
|
public $notes;
|
||||||
|
|
||||||
@ -26,11 +26,11 @@ class InvoiceInvitationWasEmailed extends Event
|
|||||||
* Create a new event instance.
|
* Create a new event instance.
|
||||||
*
|
*
|
||||||
* @param Invitation $invitation
|
* @param Invitation $invitation
|
||||||
|
* @param mixed $notes
|
||||||
*/
|
*/
|
||||||
public function __construct(Invitation $invitation, $notes)
|
public function __construct(Invitation $invitation, $notes)
|
||||||
{
|
{
|
||||||
$this->invitation = $invitation;
|
$this->invitation = $invitation;
|
||||||
$this->notes = $notes;
|
$this->notes = $notes;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,14 +1,16 @@
|
|||||||
<?php namespace App\Events;
|
<?php
|
||||||
|
|
||||||
|
namespace App\Events;
|
||||||
|
|
||||||
use App\Models\Invitation;
|
use App\Models\Invitation;
|
||||||
use App\Models\Invoice;
|
use App\Models\Invoice;
|
||||||
use Illuminate\Queue\SerializesModels;
|
use Illuminate\Queue\SerializesModels;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class InvoiceInvitationWasViewed
|
* Class InvoiceInvitationWasViewed.
|
||||||
*/
|
*/
|
||||||
class InvoiceInvitationWasViewed extends Event {
|
class InvoiceInvitationWasViewed extends Event
|
||||||
|
{
|
||||||
use SerializesModels;
|
use SerializesModels;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1,10 +1,12 @@
|
|||||||
<?php namespace App\Events;
|
<?php
|
||||||
|
|
||||||
|
namespace App\Events;
|
||||||
|
|
||||||
use App\Models\Invoice;
|
use App\Models\Invoice;
|
||||||
use Illuminate\Queue\SerializesModels;
|
use Illuminate\Queue\SerializesModels;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class InvoiceWasArchived
|
* Class InvoiceWasArchived.
|
||||||
*/
|
*/
|
||||||
class InvoiceWasArchived extends Event
|
class InvoiceWasArchived extends Event
|
||||||
{
|
{
|
||||||
@ -24,5 +26,4 @@ class InvoiceWasArchived extends Event
|
|||||||
{
|
{
|
||||||
$this->invoice = $invoice;
|
$this->invoice = $invoice;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,10 +1,12 @@
|
|||||||
<?php namespace App\Events;
|
<?php
|
||||||
|
|
||||||
|
namespace App\Events;
|
||||||
|
|
||||||
use App\Models\Invoice;
|
use App\Models\Invoice;
|
||||||
use Illuminate\Queue\SerializesModels;
|
use Illuminate\Queue\SerializesModels;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class InvoiceWasCreated
|
* Class InvoiceWasCreated.
|
||||||
*/
|
*/
|
||||||
class InvoiceWasCreated extends Event
|
class InvoiceWasCreated extends Event
|
||||||
{
|
{
|
||||||
@ -24,5 +26,4 @@ class InvoiceWasCreated extends Event
|
|||||||
{
|
{
|
||||||
$this->invoice = $invoice;
|
$this->invoice = $invoice;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,10 +1,12 @@
|
|||||||
<?php namespace App\Events;
|
<?php
|
||||||
|
|
||||||
|
namespace App\Events;
|
||||||
|
|
||||||
use App\Models\Invoice;
|
use App\Models\Invoice;
|
||||||
use Illuminate\Queue\SerializesModels;
|
use Illuminate\Queue\SerializesModels;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class InvoiceWasDeleted
|
* Class InvoiceWasDeleted.
|
||||||
*/
|
*/
|
||||||
class InvoiceWasDeleted extends Event
|
class InvoiceWasDeleted extends Event
|
||||||
{
|
{
|
||||||
|
@ -1,10 +1,12 @@
|
|||||||
<?php namespace App\Events;
|
<?php
|
||||||
|
|
||||||
|
namespace App\Events;
|
||||||
|
|
||||||
use App\Models\Invoice;
|
use App\Models\Invoice;
|
||||||
use Illuminate\Queue\SerializesModels;
|
use Illuminate\Queue\SerializesModels;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class InvoiceWasEmailed
|
* Class InvoiceWasEmailed.
|
||||||
*/
|
*/
|
||||||
class InvoiceWasEmailed extends Event
|
class InvoiceWasEmailed extends Event
|
||||||
{
|
{
|
||||||
|
@ -1,11 +1,12 @@
|
|||||||
<?php namespace App\Events;
|
<?php
|
||||||
|
|
||||||
|
namespace App\Events;
|
||||||
|
|
||||||
use App\Models\Invoice;
|
use App\Models\Invoice;
|
||||||
use Illuminate\Queue\SerializesModels;
|
use Illuminate\Queue\SerializesModels;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class InvoiceWasRestored
|
* Class InvoiceWasRestored.
|
||||||
*/
|
*/
|
||||||
class InvoiceWasRestored extends Event
|
class InvoiceWasRestored extends Event
|
||||||
{
|
{
|
||||||
@ -29,5 +30,4 @@ class InvoiceWasRestored extends Event
|
|||||||
$this->invoice = $invoice;
|
$this->invoice = $invoice;
|
||||||
$this->fromDeleted = $fromDeleted;
|
$this->fromDeleted = $fromDeleted;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,10 +1,12 @@
|
|||||||
<?php namespace App\Events;
|
<?php
|
||||||
|
|
||||||
|
namespace App\Events;
|
||||||
|
|
||||||
use App\Models\Invoice;
|
use App\Models\Invoice;
|
||||||
use Illuminate\Queue\SerializesModels;
|
use Illuminate\Queue\SerializesModels;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class InvoiceWasUpdated
|
* Class InvoiceWasUpdated.
|
||||||
*/
|
*/
|
||||||
class InvoiceWasUpdated extends Event
|
class InvoiceWasUpdated extends Event
|
||||||
{
|
{
|
||||||
|
@ -1,10 +1,12 @@
|
|||||||
<?php namespace App\Events;
|
<?php
|
||||||
|
|
||||||
|
namespace App\Events;
|
||||||
|
|
||||||
use App\Models\Payment;
|
use App\Models\Payment;
|
||||||
use Illuminate\Queue\SerializesModels;
|
use Illuminate\Queue\SerializesModels;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class PaymentCompleted
|
* Class PaymentCompleted.
|
||||||
*/
|
*/
|
||||||
class PaymentCompleted extends Event
|
class PaymentCompleted extends Event
|
||||||
{
|
{
|
||||||
@ -24,5 +26,4 @@ class PaymentCompleted extends Event
|
|||||||
{
|
{
|
||||||
$this->payment = $payment;
|
$this->payment = $payment;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,10 +1,12 @@
|
|||||||
<?php namespace App\Events;
|
<?php
|
||||||
|
|
||||||
|
namespace App\Events;
|
||||||
|
|
||||||
use App\Models\Payment;
|
use App\Models\Payment;
|
||||||
use Illuminate\Queue\SerializesModels;
|
use Illuminate\Queue\SerializesModels;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class PaymentFailed
|
* Class PaymentFailed.
|
||||||
*/
|
*/
|
||||||
class PaymentFailed extends Event
|
class PaymentFailed extends Event
|
||||||
{
|
{
|
||||||
|
@ -1,10 +1,12 @@
|
|||||||
<?php namespace App\Events;
|
<?php
|
||||||
|
|
||||||
|
namespace App\Events;
|
||||||
|
|
||||||
use App\Models\Payment;
|
use App\Models\Payment;
|
||||||
use Illuminate\Queue\SerializesModels;
|
use Illuminate\Queue\SerializesModels;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class PaymentWasArchived
|
* Class PaymentWasArchived.
|
||||||
*/
|
*/
|
||||||
class PaymentWasArchived extends Event
|
class PaymentWasArchived extends Event
|
||||||
{
|
{
|
||||||
@ -24,5 +26,4 @@ class PaymentWasArchived extends Event
|
|||||||
{
|
{
|
||||||
$this->payment = $payment;
|
$this->payment = $payment;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,10 +1,12 @@
|
|||||||
<?php namespace App\Events;
|
<?php
|
||||||
|
|
||||||
|
namespace App\Events;
|
||||||
|
|
||||||
use App\Models\Payment;
|
use App\Models\Payment;
|
||||||
use Illuminate\Queue\SerializesModels;
|
use Illuminate\Queue\SerializesModels;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class PaymentWasCreated
|
* Class PaymentWasCreated.
|
||||||
*/
|
*/
|
||||||
class PaymentWasCreated extends Event
|
class PaymentWasCreated extends Event
|
||||||
{
|
{
|
||||||
|
@ -1,10 +1,12 @@
|
|||||||
<?php namespace App\Events;
|
<?php
|
||||||
|
|
||||||
|
namespace App\Events;
|
||||||
|
|
||||||
use App\Models\Payment;
|
use App\Models\Payment;
|
||||||
use Illuminate\Queue\SerializesModels;
|
use Illuminate\Queue\SerializesModels;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class PaymentWasRefunded
|
* Class PaymentWasRefunded.
|
||||||
*/
|
*/
|
||||||
class PaymentWasRefunded extends Event
|
class PaymentWasRefunded extends Event
|
||||||
{
|
{
|
||||||
|
@ -1,10 +1,12 @@
|
|||||||
<?php namespace App\Events;
|
<?php
|
||||||
|
|
||||||
|
namespace App\Events;
|
||||||
|
|
||||||
use App\Models\Payment;
|
use App\Models\Payment;
|
||||||
use Illuminate\Queue\SerializesModels;
|
use Illuminate\Queue\SerializesModels;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class PaymentWasRestored
|
* Class PaymentWasRestored.
|
||||||
*/
|
*/
|
||||||
class PaymentWasRestored extends Event
|
class PaymentWasRestored extends Event
|
||||||
{
|
{
|
||||||
|
@ -1,10 +1,12 @@
|
|||||||
<?php namespace App\Events;
|
<?php
|
||||||
|
|
||||||
|
namespace App\Events;
|
||||||
|
|
||||||
use App\Models\Payment;
|
use App\Models\Payment;
|
||||||
use Illuminate\Queue\SerializesModels;
|
use Illuminate\Queue\SerializesModels;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class PaymentWasVoided
|
* Class PaymentWasVoided.
|
||||||
*/
|
*/
|
||||||
class PaymentWasVoided extends Event
|
class PaymentWasVoided extends Event
|
||||||
{
|
{
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
<?php namespace App\Events;
|
<?php
|
||||||
|
|
||||||
|
namespace App\Events;
|
||||||
|
|
||||||
use App\Models\Invitation;
|
use App\Models\Invitation;
|
||||||
use App\Models\Invoice;
|
use App\Models\Invoice;
|
||||||
|
@ -1,10 +1,12 @@
|
|||||||
<?php namespace App\Events;
|
<?php
|
||||||
|
|
||||||
|
namespace App\Events;
|
||||||
|
|
||||||
use App\Models\Invitation;
|
use App\Models\Invitation;
|
||||||
use Illuminate\Queue\SerializesModels;
|
use Illuminate\Queue\SerializesModels;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class QuoteInvitationWasEmailed
|
* Class QuoteInvitationWasEmailed.
|
||||||
*/
|
*/
|
||||||
class QuoteInvitationWasEmailed extends Event
|
class QuoteInvitationWasEmailed extends Event
|
||||||
{
|
{
|
||||||
@ -16,7 +18,7 @@ class QuoteInvitationWasEmailed extends Event
|
|||||||
public $invitation;
|
public $invitation;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var String
|
* @var string
|
||||||
*/
|
*/
|
||||||
public $notes;
|
public $notes;
|
||||||
|
|
||||||
@ -24,11 +26,11 @@ class QuoteInvitationWasEmailed extends Event
|
|||||||
* Create a new event instance.
|
* Create a new event instance.
|
||||||
*
|
*
|
||||||
* @param Invitation $invitation
|
* @param Invitation $invitation
|
||||||
|
* @param mixed $notes
|
||||||
*/
|
*/
|
||||||
public function __construct(Invitation $invitation, $notes)
|
public function __construct(Invitation $invitation, $notes)
|
||||||
{
|
{
|
||||||
$this->invitation = $invitation;
|
$this->invitation = $invitation;
|
||||||
$this->notes = $notes;
|
$this->notes = $notes;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,10 +1,12 @@
|
|||||||
<?php namespace App\Events;
|
<?php
|
||||||
|
|
||||||
|
namespace App\Events;
|
||||||
|
|
||||||
use App\Models\Invitation;
|
use App\Models\Invitation;
|
||||||
use Illuminate\Queue\SerializesModels;
|
use Illuminate\Queue\SerializesModels;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class QuoteInvitationWasViewed
|
* Class QuoteInvitationWasViewed.
|
||||||
*/
|
*/
|
||||||
class QuoteInvitationWasViewed extends Event
|
class QuoteInvitationWasViewed extends Event
|
||||||
{
|
{
|
||||||
|
@ -1,4 +1,6 @@
|
|||||||
<?php namespace App\Events;
|
<?php
|
||||||
|
|
||||||
|
namespace App\Events;
|
||||||
|
|
||||||
use Illuminate\Queue\SerializesModels;
|
use Illuminate\Queue\SerializesModels;
|
||||||
|
|
||||||
@ -16,5 +18,4 @@ class QuoteWasArchived extends Event
|
|||||||
{
|
{
|
||||||
$this->quote = $quote;
|
$this->quote = $quote;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,9 +1,11 @@
|
|||||||
<?php namespace App\Events;
|
<?php
|
||||||
|
|
||||||
|
namespace App\Events;
|
||||||
|
|
||||||
use Illuminate\Queue\SerializesModels;
|
use Illuminate\Queue\SerializesModels;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class QuoteWasCreated
|
* Class QuoteWasCreated.
|
||||||
*/
|
*/
|
||||||
class QuoteWasCreated extends Event
|
class QuoteWasCreated extends Event
|
||||||
{
|
{
|
||||||
|
@ -1,9 +1,11 @@
|
|||||||
<?php namespace App\Events;
|
<?php
|
||||||
|
|
||||||
|
namespace App\Events;
|
||||||
|
|
||||||
use Illuminate\Queue\SerializesModels;
|
use Illuminate\Queue\SerializesModels;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class QuoteWasDeleted
|
* Class QuoteWasDeleted.
|
||||||
*/
|
*/
|
||||||
class QuoteWasDeleted extends Event
|
class QuoteWasDeleted extends Event
|
||||||
{
|
{
|
||||||
|
@ -1,9 +1,11 @@
|
|||||||
<?php namespace App\Events;
|
<?php
|
||||||
|
|
||||||
|
namespace App\Events;
|
||||||
|
|
||||||
use Illuminate\Queue\SerializesModels;
|
use Illuminate\Queue\SerializesModels;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class QuoteWasEmailed
|
* Class QuoteWasEmailed.
|
||||||
*/
|
*/
|
||||||
class QuoteWasEmailed extends Event
|
class QuoteWasEmailed extends Event
|
||||||
{
|
{
|
||||||
|
@ -1,9 +1,11 @@
|
|||||||
<?php namespace App\Events;
|
<?php
|
||||||
|
|
||||||
|
namespace App\Events;
|
||||||
|
|
||||||
use Illuminate\Queue\SerializesModels;
|
use Illuminate\Queue\SerializesModels;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class QuoteWasRestored
|
* Class QuoteWasRestored.
|
||||||
*/
|
*/
|
||||||
class QuoteWasRestored extends Event
|
class QuoteWasRestored extends Event
|
||||||
{
|
{
|
||||||
|
@ -1,9 +1,11 @@
|
|||||||
<?php namespace App\Events;
|
<?php
|
||||||
|
|
||||||
|
namespace App\Events;
|
||||||
|
|
||||||
use Illuminate\Queue\SerializesModels;
|
use Illuminate\Queue\SerializesModels;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class QuoteWasUpdated
|
* Class QuoteWasUpdated.
|
||||||
*/
|
*/
|
||||||
class QuoteWasUpdated extends Event
|
class QuoteWasUpdated extends Event
|
||||||
{
|
{
|
||||||
@ -19,5 +21,4 @@ class QuoteWasUpdated extends Event
|
|||||||
{
|
{
|
||||||
$this->quote = $quote;
|
$this->quote = $quote;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,10 +1,12 @@
|
|||||||
<?php namespace App\Events;
|
<?php
|
||||||
|
|
||||||
|
namespace App\Events;
|
||||||
|
|
||||||
use App\Models\Task;
|
use App\Models\Task;
|
||||||
use Illuminate\Queue\SerializesModels;
|
use Illuminate\Queue\SerializesModels;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class TaskWasArchived
|
* Class TaskWasArchived.
|
||||||
*/
|
*/
|
||||||
class TaskWasArchived extends Event
|
class TaskWasArchived extends Event
|
||||||
{
|
{
|
||||||
@ -24,5 +26,4 @@ class TaskWasArchived extends Event
|
|||||||
{
|
{
|
||||||
$this->task = $task;
|
$this->task = $task;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,11 +1,12 @@
|
|||||||
<?php namespace App\Events;
|
<?php
|
||||||
|
|
||||||
|
namespace App\Events;
|
||||||
|
|
||||||
use App\Models\Task;
|
use App\Models\Task;
|
||||||
use Illuminate\Queue\SerializesModels;
|
use Illuminate\Queue\SerializesModels;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class TaskWasCreated
|
* Class TaskWasCreated.
|
||||||
*/
|
*/
|
||||||
class TaskWasCreated extends Event
|
class TaskWasCreated extends Event
|
||||||
{
|
{
|
||||||
|
@ -1,10 +1,12 @@
|
|||||||
<?php namespace App\Events;
|
<?php
|
||||||
|
|
||||||
|
namespace App\Events;
|
||||||
|
|
||||||
use App\Models\Task;
|
use App\Models\Task;
|
||||||
use Illuminate\Queue\SerializesModels;
|
use Illuminate\Queue\SerializesModels;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class TaskWasDeleted
|
* Class TaskWasDeleted.
|
||||||
*/
|
*/
|
||||||
class TaskWasDeleted extends Event
|
class TaskWasDeleted extends Event
|
||||||
{
|
{
|
||||||
@ -24,5 +26,4 @@ class TaskWasDeleted extends Event
|
|||||||
{
|
{
|
||||||
$this->task = $task;
|
$this->task = $task;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,11 +1,12 @@
|
|||||||
<?php namespace App\Events;
|
<?php
|
||||||
|
|
||||||
|
namespace App\Events;
|
||||||
|
|
||||||
use App\Models\Task;
|
use App\Models\Task;
|
||||||
use Illuminate\Queue\SerializesModels;
|
use Illuminate\Queue\SerializesModels;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class TaskWasRestored
|
* Class TaskWasRestored.
|
||||||
*/
|
*/
|
||||||
class TaskWasRestored extends Event
|
class TaskWasRestored extends Event
|
||||||
{
|
{
|
||||||
@ -25,5 +26,4 @@ class TaskWasRestored extends Event
|
|||||||
{
|
{
|
||||||
$this->task = $task;
|
$this->task = $task;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,11 +1,12 @@
|
|||||||
<?php namespace App\Events;
|
<?php
|
||||||
|
|
||||||
|
namespace App\Events;
|
||||||
|
|
||||||
use App\Models\Task;
|
use App\Models\Task;
|
||||||
use Illuminate\Queue\SerializesModels;
|
use Illuminate\Queue\SerializesModels;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class TaskWasUpdated
|
* Class TaskWasUpdated.
|
||||||
*/
|
*/
|
||||||
class TaskWasUpdated extends Event
|
class TaskWasUpdated extends Event
|
||||||
{
|
{
|
||||||
|
@ -1,9 +1,11 @@
|
|||||||
<?php namespace App\Events;
|
<?php
|
||||||
|
|
||||||
|
namespace App\Events;
|
||||||
|
|
||||||
use Illuminate\Queue\SerializesModels;
|
use Illuminate\Queue\SerializesModels;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class UserLoggedIn
|
* Class UserLoggedIn.
|
||||||
*/
|
*/
|
||||||
class UserLoggedIn extends Event
|
class UserLoggedIn extends Event
|
||||||
{
|
{
|
||||||
|
@ -1,4 +1,6 @@
|
|||||||
<?php namespace App\Events;
|
<?php
|
||||||
|
|
||||||
|
namespace App\Events;
|
||||||
|
|
||||||
use App\Models\User;
|
use App\Models\User;
|
||||||
use Illuminate\Queue\SerializesModels;
|
use Illuminate\Queue\SerializesModels;
|
||||||
|
@ -1,9 +1,11 @@
|
|||||||
<?php namespace App\Events;
|
<?php
|
||||||
|
|
||||||
|
namespace App\Events;
|
||||||
|
|
||||||
use Illuminate\Queue\SerializesModels;
|
use Illuminate\Queue\SerializesModels;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class UserSignedUp
|
* Class UserSignedUp.
|
||||||
*/
|
*/
|
||||||
class UserSignedUp extends Event
|
class UserSignedUp extends Event
|
||||||
{
|
{
|
||||||
|
@ -1,10 +1,12 @@
|
|||||||
<?php namespace App\Events;
|
<?php
|
||||||
|
|
||||||
|
namespace App\Events;
|
||||||
|
|
||||||
use App\Models\Vendor;
|
use App\Models\Vendor;
|
||||||
use Illuminate\Queue\SerializesModels;
|
use Illuminate\Queue\SerializesModels;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class VendorWasArchived
|
* Class VendorWasArchived.
|
||||||
*/
|
*/
|
||||||
class VendorWasArchived extends Event
|
class VendorWasArchived extends Event
|
||||||
{
|
{
|
||||||
|
@ -1,10 +1,12 @@
|
|||||||
<?php namespace App\Events;
|
<?php
|
||||||
|
|
||||||
|
namespace App\Events;
|
||||||
|
|
||||||
use App\Models\Vendor;
|
use App\Models\Vendor;
|
||||||
use Illuminate\Queue\SerializesModels;
|
use Illuminate\Queue\SerializesModels;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class VendorWasCreated
|
* Class VendorWasCreated.
|
||||||
*/
|
*/
|
||||||
class VendorWasCreated extends Event
|
class VendorWasCreated extends Event
|
||||||
{
|
{
|
||||||
|
@ -1,10 +1,12 @@
|
|||||||
<?php namespace App\Events;
|
<?php
|
||||||
|
|
||||||
|
namespace App\Events;
|
||||||
|
|
||||||
use App\Models\Vendor;
|
use App\Models\Vendor;
|
||||||
use Illuminate\Queue\SerializesModels;
|
use Illuminate\Queue\SerializesModels;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class VendorWasDeleted
|
* Class VendorWasDeleted.
|
||||||
*/
|
*/
|
||||||
class VendorWasDeleted extends Event
|
class VendorWasDeleted extends Event
|
||||||
{
|
{
|
||||||
|
@ -1,10 +1,12 @@
|
|||||||
<?php namespace App\Events;
|
<?php
|
||||||
|
|
||||||
|
namespace App\Events;
|
||||||
|
|
||||||
use App\Models\Vendor;
|
use App\Models\Vendor;
|
||||||
use Illuminate\Queue\SerializesModels;
|
use Illuminate\Queue\SerializesModels;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class VendorWasRestored
|
* Class VendorWasRestored.
|
||||||
*/
|
*/
|
||||||
class VendorWasRestored extends Event
|
class VendorWasRestored extends Event
|
||||||
{
|
{
|
||||||
|
@ -1,10 +1,12 @@
|
|||||||
<?php namespace App\Events;
|
<?php
|
||||||
|
|
||||||
|
namespace App\Events;
|
||||||
|
|
||||||
use App\Models\Vendor;
|
use App\Models\Vendor;
|
||||||
use Illuminate\Queue\SerializesModels;
|
use Illuminate\Queue\SerializesModels;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class VendorWasUpdated
|
* Class VendorWasUpdated.
|
||||||
*/
|
*/
|
||||||
class VendorWasUpdated extends Event
|
class VendorWasUpdated extends Event
|
||||||
{
|
{
|
||||||
|
@ -1,26 +1,25 @@
|
|||||||
<?php namespace App\Exceptions;
|
<?php
|
||||||
|
|
||||||
|
namespace App\Exceptions;
|
||||||
|
|
||||||
use Braintree\Util;
|
|
||||||
use Illuminate\Support\Facades\Response;
|
|
||||||
use Redirect;
|
|
||||||
use Utils;
|
|
||||||
use Exception;
|
|
||||||
use Crawler;
|
use Crawler;
|
||||||
use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler;
|
use Exception;
|
||||||
use Illuminate\Http\Exception\HttpResponseException;
|
|
||||||
use Illuminate\Auth\Access\AuthorizationException;
|
use Illuminate\Auth\Access\AuthorizationException;
|
||||||
use Illuminate\Database\Eloquent\ModelNotFoundException;
|
use Illuminate\Database\Eloquent\ModelNotFoundException;
|
||||||
|
use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler;
|
||||||
|
use Illuminate\Foundation\Validation\ValidationException;
|
||||||
|
use Illuminate\Http\Exception\HttpResponseException;
|
||||||
|
use Illuminate\Support\Facades\Response;
|
||||||
|
use Redirect;
|
||||||
use Symfony\Component\HttpKernel\Exception\HttpException;
|
use Symfony\Component\HttpKernel\Exception\HttpException;
|
||||||
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
|
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
|
||||||
use Illuminate\Foundation\Validation\ValidationException;
|
use Utils;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class Handler
|
* Class Handler.
|
||||||
*/
|
*/
|
||||||
class Handler extends ExceptionHandler
|
class Handler extends ExceptionHandler
|
||||||
{
|
{
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A list of the exception types that should not be reported.
|
* A list of the exception types that should not be reported.
|
||||||
*
|
*
|
||||||
@ -39,6 +38,7 @@ class Handler extends ExceptionHandler
|
|||||||
* This is a great spot to send exceptions to Sentry, Bugsnag, etc.
|
* This is a great spot to send exceptions to Sentry, Bugsnag, etc.
|
||||||
*
|
*
|
||||||
* @param \Exception $e
|
* @param \Exception $e
|
||||||
|
*
|
||||||
* @return bool|void
|
* @return bool|void
|
||||||
*/
|
*/
|
||||||
public function report(Exception $e)
|
public function report(Exception $e)
|
||||||
@ -54,6 +54,7 @@ class Handler extends ExceptionHandler
|
|||||||
|
|
||||||
if (Utils::isNinja() && ! Utils::isTravis()) {
|
if (Utils::isNinja() && ! Utils::isTravis()) {
|
||||||
Utils::logError(Utils::getErrorString($e));
|
Utils::logError(Utils::getErrorString($e));
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
} else {
|
} else {
|
||||||
return parent::report($e);
|
return parent::report($e);
|
||||||
@ -65,13 +66,15 @@ class Handler extends ExceptionHandler
|
|||||||
*
|
*
|
||||||
* @param \Illuminate\Http\Request $request
|
* @param \Illuminate\Http\Request $request
|
||||||
* @param \Exception $e
|
* @param \Exception $e
|
||||||
|
*
|
||||||
* @return \Illuminate\Http\Response
|
* @return \Illuminate\Http\Response
|
||||||
*/
|
*/
|
||||||
public function render($request, Exception $e)
|
public function render($request, Exception $e)
|
||||||
{
|
{
|
||||||
if ($e instanceof ModelNotFoundException) {
|
if ($e instanceof ModelNotFoundException) {
|
||||||
return Redirect::to('/');
|
return Redirect::to('/');
|
||||||
} if ($e instanceof \Illuminate\Session\TokenMismatchException) {
|
}
|
||||||
|
if ($e instanceof \Illuminate\Session\TokenMismatchException) {
|
||||||
// prevent loop since the page auto-submits
|
// prevent loop since the page auto-submits
|
||||||
if ($request->path() != 'get_started') {
|
if ($request->path() != 'get_started') {
|
||||||
// https://gist.github.com/jrmadsen67/bd0f9ad0ef1ed6bb594e
|
// https://gist.github.com/jrmadsen67/bd0f9ad0ef1ed6bb594e
|
||||||
@ -79,15 +82,13 @@ class Handler extends ExceptionHandler
|
|||||||
->back()
|
->back()
|
||||||
->withInput($request->except('password', '_token'))
|
->withInput($request->except('password', '_token'))
|
||||||
->with([
|
->with([
|
||||||
'warning' => trans('texts.token_expired')
|
'warning' => trans('texts.token_expired'),
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if($this->isHttpException($e))
|
if ($this->isHttpException($e)) {
|
||||||
{
|
switch ($e->getStatusCode()) {
|
||||||
switch ($e->getStatusCode())
|
|
||||||
{
|
|
||||||
// not found
|
// not found
|
||||||
case 404:
|
case 404:
|
||||||
if ($request->header('X-Ninja-Token') != '') {
|
if ($request->header('X-Ninja-Token') != '') {
|
||||||
@ -98,7 +99,6 @@ class Handler extends ExceptionHandler
|
|||||||
$headers = Utils::getApiHeaders();
|
$headers = Utils::getApiHeaders();
|
||||||
|
|
||||||
return response()->make($error, 404, $headers);
|
return response()->make($error, 404, $headers);
|
||||||
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -128,7 +128,7 @@ class Handler extends ExceptionHandler
|
|||||||
'hideHeader' => true,
|
'hideHeader' => true,
|
||||||
];
|
];
|
||||||
|
|
||||||
return response()->view('error', $data);
|
return response()->view('error', $data, 500);
|
||||||
} else {
|
} else {
|
||||||
return parent::render($request, $e);
|
return parent::render($request, $e);
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,9 @@
|
|||||||
<?php namespace App\Handlers;
|
<?php
|
||||||
|
|
||||||
|
namespace App\Handlers;
|
||||||
|
|
||||||
use App\Ninja\Mailers\UserMailer;
|
|
||||||
use App\Ninja\Mailers\ContactMailer;
|
use App\Ninja\Mailers\ContactMailer;
|
||||||
|
use App\Ninja\Mailers\UserMailer;
|
||||||
|
|
||||||
class InvoiceEventHandler
|
class InvoiceEventHandler
|
||||||
{
|
{
|
||||||
@ -40,10 +42,8 @@ class InvoiceEventHandler
|
|||||||
|
|
||||||
private function sendNotifications($invoice, $type, $payment = null)
|
private function sendNotifications($invoice, $type, $payment = null)
|
||||||
{
|
{
|
||||||
foreach ($invoice->account->users as $user)
|
foreach ($invoice->account->users as $user) {
|
||||||
{
|
if ($user->{'notify_' . $type}) {
|
||||||
if ($user->{'notify_' . $type})
|
|
||||||
{
|
|
||||||
$this->userMailer->sendNotification($user, $invoice, $type, $payment);
|
$this->userMailer->sendNotification($user, $invoice, $type, $payment);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,20 +1,22 @@
|
|||||||
<?php namespace App\Http\Controllers;
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Controllers;
|
||||||
|
|
||||||
use Auth;
|
|
||||||
use Utils;
|
|
||||||
use Response;
|
|
||||||
use Cache;
|
|
||||||
use Socialite;
|
|
||||||
use Exception;
|
|
||||||
use App\Services\AuthService;
|
|
||||||
use App\Models\Account;
|
|
||||||
use App\Ninja\Repositories\AccountRepository;
|
|
||||||
use Illuminate\Http\Request;
|
|
||||||
use App\Ninja\Transformers\AccountTransformer;
|
|
||||||
use App\Ninja\Transformers\UserAccountTransformer;
|
|
||||||
use App\Events\UserSignedUp;
|
use App\Events\UserSignedUp;
|
||||||
use App\Http\Requests\RegisterRequest;
|
use App\Http\Requests\RegisterRequest;
|
||||||
use App\Http\Requests\UpdateAccountRequest;
|
use App\Http\Requests\UpdateAccountRequest;
|
||||||
|
use App\Models\Account;
|
||||||
|
use App\Ninja\Repositories\AccountRepository;
|
||||||
|
use App\Ninja\Transformers\AccountTransformer;
|
||||||
|
use App\Ninja\Transformers\UserAccountTransformer;
|
||||||
|
use App\Services\AuthService;
|
||||||
|
use Auth;
|
||||||
|
use Cache;
|
||||||
|
use Exception;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
use Response;
|
||||||
|
use Socialite;
|
||||||
|
use Utils;
|
||||||
|
|
||||||
class AccountApiController extends BaseAPIController
|
class AccountApiController extends BaseAPIController
|
||||||
{
|
{
|
||||||
@ -36,7 +38,6 @@ class AccountApiController extends BaseAPIController
|
|||||||
|
|
||||||
public function register(RegisterRequest $request)
|
public function register(RegisterRequest $request)
|
||||||
{
|
{
|
||||||
|
|
||||||
$account = $this->accountRepo->create($request->first_name, $request->last_name, $request->email, $request->password);
|
$account = $this->accountRepo->create($request->first_name, $request->last_name, $request->email, $request->password);
|
||||||
$user = $account->users()->first();
|
$user = $account->users()->first();
|
||||||
|
|
||||||
@ -52,6 +53,7 @@ class AccountApiController extends BaseAPIController
|
|||||||
return $this->processLogin($request);
|
return $this->processLogin($request);
|
||||||
} else {
|
} else {
|
||||||
sleep(ERROR_DELAY);
|
sleep(ERROR_DELAY);
|
||||||
|
|
||||||
return $this->errorResponse(['message' => 'Invalid credentials'], 401);
|
return $this->errorResponse(['message' => 'Invalid credentials'], 401);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -114,11 +116,9 @@ class AccountApiController extends BaseAPIController
|
|||||||
$account = Auth::user()->account;
|
$account = Auth::user()->account;
|
||||||
|
|
||||||
//scan if this user has a token already registered (tokens can change, so we need to use the users email as key)
|
//scan if this user has a token already registered (tokens can change, so we need to use the users email as key)
|
||||||
$devices = json_decode($account->devices,TRUE);
|
$devices = json_decode($account->devices, true);
|
||||||
|
|
||||||
|
for ($x = 0; $x < count($devices); $x++) {
|
||||||
for($x=0; $x<count($devices); $x++)
|
|
||||||
{
|
|
||||||
if ($devices[$x]['email'] == Auth::user()->username) {
|
if ($devices[$x]['email'] == Auth::user()->username) {
|
||||||
$devices[$x]['token'] = $request->token; //update
|
$devices[$x]['token'] = $request->token; //update
|
||||||
$account->devices = json_encode($devices);
|
$account->devices = json_encode($devices);
|
||||||
@ -136,10 +136,10 @@ class AccountApiController extends BaseAPIController
|
|||||||
'email' => $request->email,
|
'email' => $request->email,
|
||||||
'device' => $request->device,
|
'device' => $request->device,
|
||||||
'account_key' => $account->account_key,
|
'account_key' => $account->account_key,
|
||||||
'notify_sent' => TRUE,
|
'notify_sent' => true,
|
||||||
'notify_viewed' => TRUE,
|
'notify_viewed' => true,
|
||||||
'notify_approved' => TRUE,
|
'notify_approved' => true,
|
||||||
'notify_paid' => TRUE,
|
'notify_paid' => true,
|
||||||
];
|
];
|
||||||
|
|
||||||
$devices[] = $newDevice;
|
$devices[] = $newDevice;
|
||||||
@ -147,23 +147,20 @@ class AccountApiController extends BaseAPIController
|
|||||||
$account->save();
|
$account->save();
|
||||||
|
|
||||||
return $this->response($newDevice);
|
return $this->response($newDevice);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function updatePushNotifications(Request $request)
|
public function updatePushNotifications(Request $request)
|
||||||
{
|
{
|
||||||
$account = Auth::user()->account;
|
$account = Auth::user()->account;
|
||||||
|
|
||||||
$devices = json_decode($account->devices, TRUE);
|
$devices = json_decode($account->devices, true);
|
||||||
|
|
||||||
if(count($devices) < 1)
|
if (count($devices) < 1) {
|
||||||
return $this->errorResponse(['message' => 'No registered devices.'], 400);
|
return $this->errorResponse(['message' => 'No registered devices.'], 400);
|
||||||
|
}
|
||||||
|
|
||||||
for($x=0; $x<count($devices); $x++)
|
for ($x = 0; $x < count($devices); $x++) {
|
||||||
{
|
if ($devices[$x]['email'] == Auth::user()->username) {
|
||||||
if($devices[$x]['email'] == Auth::user()->username)
|
|
||||||
{
|
|
||||||
|
|
||||||
$newDevice = [
|
$newDevice = [
|
||||||
'token' => $devices[$x]['token'],
|
'token' => $devices[$x]['token'],
|
||||||
'email' => $devices[$x]['email'],
|
'email' => $devices[$x]['email'],
|
||||||
@ -182,7 +179,6 @@ class AccountApiController extends BaseAPIController
|
|||||||
return $this->response($newDevice);
|
return $this->response($newDevice);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function oauthLogin(Request $request)
|
public function oauthLogin(Request $request)
|
||||||
@ -204,9 +200,11 @@ class AccountApiController extends BaseAPIController
|
|||||||
|
|
||||||
if ($user) {
|
if ($user) {
|
||||||
Auth::login($user);
|
Auth::login($user);
|
||||||
|
|
||||||
return $this->processLogin($request);
|
return $this->processLogin($request);
|
||||||
} else {
|
} else {
|
||||||
sleep(ERROR_DELAY);
|
sleep(ERROR_DELAY);
|
||||||
|
|
||||||
return $this->errorResponse(['message' => 'Invalid credentials'], 401);
|
return $this->errorResponse(['message' => 'Invalid credentials'], 401);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,49 +1,51 @@
|
|||||||
<?php namespace App\Http\Controllers;
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Controllers;
|
||||||
|
|
||||||
|
use App\Events\UserSettingsChanged;
|
||||||
|
use App\Events\UserSignedUp;
|
||||||
|
use App\Http\Requests\SaveClientPortalSettings;
|
||||||
|
use App\Http\Requests\SaveEmailSettings;
|
||||||
|
use App\Http\Requests\UpdateAccountRequest;
|
||||||
|
use App\Models\Account;
|
||||||
use App\Models\AccountGateway;
|
use App\Models\AccountGateway;
|
||||||
use App\Models\AccountGatewaySettings;
|
use App\Models\AccountGatewaySettings;
|
||||||
|
use App\Models\Affiliate;
|
||||||
|
use App\Models\Document;
|
||||||
|
use App\Models\Gateway;
|
||||||
use App\Models\GatewayType;
|
use App\Models\GatewayType;
|
||||||
|
use App\Models\Invoice;
|
||||||
|
use App\Models\InvoiceDesign;
|
||||||
|
use App\Models\License;
|
||||||
|
use App\Models\PaymentTerm;
|
||||||
|
use App\Models\Product;
|
||||||
|
use App\Models\TaxRate;
|
||||||
|
use App\Models\User;
|
||||||
|
use App\Ninja\Mailers\ContactMailer;
|
||||||
|
use App\Ninja\Mailers\UserMailer;
|
||||||
|
use App\Ninja\Repositories\AccountRepository;
|
||||||
|
use App\Ninja\Repositories\ReferralRepository;
|
||||||
|
use App\Services\AuthService;
|
||||||
|
use App\Services\PaymentService;
|
||||||
use App\Services\TemplateService;
|
use App\Services\TemplateService;
|
||||||
use Auth;
|
use Auth;
|
||||||
|
use Cache;
|
||||||
use File;
|
use File;
|
||||||
use Image;
|
use Image;
|
||||||
use Input;
|
use Input;
|
||||||
use Redirect;
|
use Redirect;
|
||||||
|
use Request;
|
||||||
|
use Response;
|
||||||
use Session;
|
use Session;
|
||||||
|
use stdClass;
|
||||||
|
use URL;
|
||||||
use Utils;
|
use Utils;
|
||||||
|
|
||||||
use Validator;
|
use Validator;
|
||||||
use View;
|
use View;
|
||||||
use URL;
|
|
||||||
use stdClass;
|
|
||||||
use Cache;
|
|
||||||
use Response;
|
|
||||||
use Request;
|
|
||||||
use App\Models\Affiliate;
|
|
||||||
use App\Models\License;
|
|
||||||
use App\Models\Invoice;
|
|
||||||
use App\Models\User;
|
|
||||||
use App\Models\Account;
|
|
||||||
use App\Models\Document;
|
|
||||||
use App\Models\Gateway;
|
|
||||||
use App\Models\InvoiceDesign;
|
|
||||||
use App\Models\TaxRate;
|
|
||||||
use App\Models\Product;
|
|
||||||
use App\Models\PaymentTerm;
|
|
||||||
use App\Ninja\Repositories\AccountRepository;
|
|
||||||
use App\Ninja\Repositories\ReferralRepository;
|
|
||||||
use App\Ninja\Mailers\UserMailer;
|
|
||||||
use App\Ninja\Mailers\ContactMailer;
|
|
||||||
use App\Events\UserSignedUp;
|
|
||||||
use App\Events\UserSettingsChanged;
|
|
||||||
use App\Services\AuthService;
|
|
||||||
use App\Services\PaymentService;
|
|
||||||
use App\Http\Requests\UpdateAccountRequest;
|
|
||||||
|
|
||||||
use App\Http\Requests\SaveClientPortalSettings;
|
|
||||||
use App\Http\Requests\SaveEmailSettings;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class AccountController
|
* Class AccountController.
|
||||||
*/
|
*/
|
||||||
class AccountController extends BaseController
|
class AccountController extends BaseController
|
||||||
{
|
{
|
||||||
@ -87,8 +89,7 @@ class AccountController extends BaseController
|
|||||||
ContactMailer $contactMailer,
|
ContactMailer $contactMailer,
|
||||||
ReferralRepository $referralRepository,
|
ReferralRepository $referralRepository,
|
||||||
PaymentService $paymentService
|
PaymentService $paymentService
|
||||||
)
|
) {
|
||||||
{
|
|
||||||
$this->accountRepo = $accountRepo;
|
$this->accountRepo = $accountRepo;
|
||||||
$this->userMailer = $userMailer;
|
$this->userMailer = $userMailer;
|
||||||
$this->contactMailer = $contactMailer;
|
$this->contactMailer = $contactMailer;
|
||||||
@ -161,7 +162,8 @@ class AccountController extends BaseController
|
|||||||
/**
|
/**
|
||||||
* @return \Illuminate\Http\RedirectResponse
|
* @return \Illuminate\Http\RedirectResponse
|
||||||
*/
|
*/
|
||||||
public function changePlan() {
|
public function changePlan()
|
||||||
|
{
|
||||||
$user = Auth::user();
|
$user = Auth::user();
|
||||||
$account = $user->account;
|
$account = $user->account;
|
||||||
$company = $account->company;
|
$company = $account->company;
|
||||||
@ -226,7 +228,6 @@ class AccountController extends BaseController
|
|||||||
return Redirect::to('payment/' . $invitation->invitation_key);
|
return Redirect::to('payment/' . $invitation->invitation_key);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
if ($plan == PLAN_FREE) {
|
if ($plan == PLAN_FREE) {
|
||||||
$company->discount = 0;
|
$company->discount = 0;
|
||||||
} else {
|
} else {
|
||||||
@ -244,10 +245,11 @@ class AccountController extends BaseController
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param $entityType
|
* @param $entityType
|
||||||
* @param $visible
|
* @param $visible
|
||||||
|
* @param mixed $filter
|
||||||
|
*
|
||||||
* @return mixed
|
* @return mixed
|
||||||
*/
|
*/
|
||||||
public function setEntityFilter($entityType, $filter = '')
|
public function setEntityFilter($entityType, $filter = '')
|
||||||
@ -268,8 +270,8 @@ class AccountController extends BaseController
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Session::put("entity_state_filter:{$entityType}", join(',', $stateFilter));
|
Session::put("entity_state_filter:{$entityType}", implode(',', $stateFilter));
|
||||||
Session::put("entity_status_filter:{$entityType}", join(',', $statusFilter));
|
Session::put("entity_status_filter:{$entityType}", implode(',', $statusFilter));
|
||||||
|
|
||||||
return RESULT_SUCCESS;
|
return RESULT_SUCCESS;
|
||||||
}
|
}
|
||||||
@ -286,6 +288,7 @@ class AccountController extends BaseController
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @param bool $section
|
* @param bool $section
|
||||||
|
*
|
||||||
* @return \Illuminate\Contracts\View\View|\Illuminate\Http\RedirectResponse
|
* @return \Illuminate\Contracts\View\View|\Illuminate\Http\RedirectResponse
|
||||||
*/
|
*/
|
||||||
public function showSection($section = false)
|
public function showSection($section = false)
|
||||||
@ -539,7 +542,6 @@ class AccountController extends BaseController
|
|||||||
$data = [
|
$data = [
|
||||||
'account' => Auth::user()->account,
|
'account' => Auth::user()->account,
|
||||||
'title' => trans('texts.payment_terms'),
|
'title' => trans('texts.payment_terms'),
|
||||||
'taxRates' => PaymentTerm::scope()->get(['id', 'name', 'num_days']),
|
|
||||||
];
|
];
|
||||||
|
|
||||||
return View::make('accounts.payment_terms', $data);
|
return View::make('accounts.payment_terms', $data);
|
||||||
@ -547,6 +549,7 @@ class AccountController extends BaseController
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @param $section
|
* @param $section
|
||||||
|
*
|
||||||
* @return \Illuminate\Contracts\View\View
|
* @return \Illuminate\Contracts\View\View
|
||||||
*/
|
*/
|
||||||
private function showInvoiceDesign($section)
|
private function showInvoiceDesign($section)
|
||||||
@ -652,7 +655,7 @@ class AccountController extends BaseController
|
|||||||
GATEWAY_TYPE_BANK_TRANSFER,
|
GATEWAY_TYPE_BANK_TRANSFER,
|
||||||
GATEWAY_TYPE_PAYPAL,
|
GATEWAY_TYPE_PAYPAL,
|
||||||
GATEWAY_TYPE_BITCOIN,
|
GATEWAY_TYPE_BITCOIN,
|
||||||
GATEWAY_TYPE_DWOLLA
|
GATEWAY_TYPE_DWOLLA,
|
||||||
];
|
];
|
||||||
$options = [];
|
$options = [];
|
||||||
foreach ($types as $type) {
|
foreach ($types as $type) {
|
||||||
@ -695,7 +698,6 @@ class AccountController extends BaseController
|
|||||||
'template' => $account->getDefaultEmailTemplate($type),
|
'template' => $account->getDefaultEmailTemplate($type),
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
$data['emailFooter'] = $account->getEmailFooter();
|
|
||||||
$data['title'] = trans('texts.email_templates');
|
$data['title'] = trans('texts.email_templates');
|
||||||
|
|
||||||
return View::make('accounts.templates_and_reminders', $data);
|
return View::make('accounts.templates_and_reminders', $data);
|
||||||
@ -703,34 +705,35 @@ class AccountController extends BaseController
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @param $section
|
* @param $section
|
||||||
|
*
|
||||||
* @return \Illuminate\Http\RedirectResponse
|
* @return \Illuminate\Http\RedirectResponse
|
||||||
*/
|
*/
|
||||||
public function doSection($section)
|
public function doSection($section)
|
||||||
{
|
{
|
||||||
if ($section === ACCOUNT_LOCALIZATION) {
|
if ($section === ACCOUNT_LOCALIZATION) {
|
||||||
return AccountController::saveLocalization();
|
return self::saveLocalization();
|
||||||
} elseif ($section == ACCOUNT_PAYMENTS) {
|
} elseif ($section == ACCOUNT_PAYMENTS) {
|
||||||
return self::saveOnlinePayments();
|
return self::saveOnlinePayments();
|
||||||
} elseif ($section === ACCOUNT_NOTIFICATIONS) {
|
} elseif ($section === ACCOUNT_NOTIFICATIONS) {
|
||||||
return AccountController::saveNotifications();
|
return self::saveNotifications();
|
||||||
} elseif ($section === ACCOUNT_EXPORT) {
|
} elseif ($section === ACCOUNT_EXPORT) {
|
||||||
return AccountController::export();
|
return self::export();
|
||||||
} elseif ($section === ACCOUNT_INVOICE_SETTINGS) {
|
} elseif ($section === ACCOUNT_INVOICE_SETTINGS) {
|
||||||
return AccountController::saveInvoiceSettings();
|
return self::saveInvoiceSettings();
|
||||||
} elseif ($section === ACCOUNT_INVOICE_DESIGN) {
|
} elseif ($section === ACCOUNT_INVOICE_DESIGN) {
|
||||||
return AccountController::saveInvoiceDesign();
|
return self::saveInvoiceDesign();
|
||||||
} elseif ($section === ACCOUNT_CUSTOMIZE_DESIGN) {
|
} elseif ($section === ACCOUNT_CUSTOMIZE_DESIGN) {
|
||||||
return AccountController::saveCustomizeDesign();
|
return self::saveCustomizeDesign();
|
||||||
} elseif ($section === ACCOUNT_TEMPLATES_AND_REMINDERS) {
|
} elseif ($section === ACCOUNT_TEMPLATES_AND_REMINDERS) {
|
||||||
return AccountController::saveEmailTemplates();
|
return self::saveEmailTemplates();
|
||||||
} elseif ($section === ACCOUNT_PRODUCTS) {
|
} elseif ($section === ACCOUNT_PRODUCTS) {
|
||||||
return AccountController::saveProducts();
|
return self::saveProducts();
|
||||||
} elseif ($section === ACCOUNT_TAX_RATES) {
|
} elseif ($section === ACCOUNT_TAX_RATES) {
|
||||||
return AccountController::saveTaxRates();
|
return self::saveTaxRates();
|
||||||
} elseif ($section === ACCOUNT_PAYMENT_TERMS) {
|
} elseif ($section === ACCOUNT_PAYMENT_TERMS) {
|
||||||
return AccountController::savePaymetTerms();
|
return self::savePaymetTerms();
|
||||||
} elseif ($section === ACCOUNT_MANAGEMENT) {
|
} elseif ($section === ACCOUNT_MANAGEMENT) {
|
||||||
return AccountController::saveAccountManagement();
|
return self::saveAccountManagement();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -753,6 +756,7 @@ class AccountController extends BaseController
|
|||||||
if ($font->google_font) {
|
if ($font->google_font) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return $font->id == $account->header_font_id || $font->id == $account->body_font_id;
|
return $font->id == $account->header_font_id || $font->id == $account->body_font_id;
|
||||||
});
|
});
|
||||||
if ($account->live_preview && count($fonts)) {
|
if ($account->live_preview && count($fonts)) {
|
||||||
@ -792,6 +796,7 @@ class AccountController extends BaseController
|
|||||||
{
|
{
|
||||||
$account = $request->user()->account;
|
$account = $request->user()->account;
|
||||||
$account->fill($request->all());
|
$account->fill($request->all());
|
||||||
|
$account->client_view_css = $request->client_view_css;
|
||||||
$account->subdomain = $request->subdomain;
|
$account->subdomain = $request->subdomain;
|
||||||
$account->iframe_url = $request->iframe_url;
|
$account->iframe_url = $request->iframe_url;
|
||||||
$account->save();
|
$account->save();
|
||||||
@ -835,13 +840,10 @@ class AccountController extends BaseController
|
|||||||
foreach ([REMINDER1, REMINDER2, REMINDER3] as $type) {
|
foreach ([REMINDER1, REMINDER2, REMINDER3] as $type) {
|
||||||
$enableField = "enable_{$type}";
|
$enableField = "enable_{$type}";
|
||||||
$account->$enableField = Input::get($enableField) ? true : false;
|
$account->$enableField = Input::get($enableField) ? true : false;
|
||||||
|
|
||||||
if ($account->$enableField) {
|
|
||||||
$account->{"num_days_{$type}"} = Input::get("num_days_{$type}");
|
$account->{"num_days_{$type}"} = Input::get("num_days_{$type}");
|
||||||
$account->{"field_{$type}"} = Input::get("field_{$type}");
|
$account->{"field_{$type}"} = Input::get("field_{$type}");
|
||||||
$account->{"direction_{$type}"} = Input::get("field_{$type}") == REMINDER_FIELD_INVOICE_DATE ? REMINDER_DIRECTION_AFTER : Input::get("direction_{$type}");
|
$account->{"direction_{$type}"} = Input::get("field_{$type}") == REMINDER_FIELD_INVOICE_DATE ? REMINDER_DIRECTION_AFTER : Input::get("direction_{$type}");
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
$account->save();
|
$account->save();
|
||||||
|
|
||||||
@ -1019,6 +1021,7 @@ class AccountController extends BaseController
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @param UpdateAccountRequest $request
|
* @param UpdateAccountRequest $request
|
||||||
|
*
|
||||||
* @return \Illuminate\Http\RedirectResponse
|
* @return \Illuminate\Http\RedirectResponse
|
||||||
*/
|
*/
|
||||||
public function updateDetails(UpdateAccountRequest $request)
|
public function updateDetails(UpdateAccountRequest $request)
|
||||||
@ -1038,8 +1041,7 @@ class AccountController extends BaseController
|
|||||||
$extension = strtolower($uploaded->getClientOriginalExtension());
|
$extension = strtolower($uploaded->getClientOriginalExtension());
|
||||||
if (empty(Document::$types[$extension]) && ! empty(Document::$extraExtensions[$extension])) {
|
if (empty(Document::$types[$extension]) && ! empty(Document::$extraExtensions[$extension])) {
|
||||||
$documentType = Document::$extraExtensions[$extension];
|
$documentType = Document::$extraExtensions[$extension];
|
||||||
}
|
} else {
|
||||||
else{
|
|
||||||
$documentType = $extension;
|
$documentType = $extension;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1353,10 +1355,11 @@ class AccountController extends BaseController
|
|||||||
});
|
});
|
||||||
|
|
||||||
$this->accountRepo->unlinkAccount($account);
|
$this->accountRepo->unlinkAccount($account);
|
||||||
if ($account->company->accounts->count() == 1) {
|
|
||||||
$account->company->forceDelete();
|
if ($account->hasMultipleAccounts()) {
|
||||||
} else {
|
|
||||||
$account->forceDelete();
|
$account->forceDelete();
|
||||||
|
} else {
|
||||||
|
$account->company->forceDelete();
|
||||||
}
|
}
|
||||||
|
|
||||||
Auth::logout();
|
Auth::logout();
|
||||||
@ -1380,6 +1383,7 @@ class AccountController extends BaseController
|
|||||||
/**
|
/**
|
||||||
* @param $section
|
* @param $section
|
||||||
* @param bool $subSection
|
* @param bool $subSection
|
||||||
|
*
|
||||||
* @return \Illuminate\Http\RedirectResponse
|
* @return \Illuminate\Http\RedirectResponse
|
||||||
*/
|
*/
|
||||||
public function redirectLegacy($section, $subSection = false)
|
public function redirectLegacy($section, $subSection = false)
|
||||||
@ -1404,6 +1408,7 @@ class AccountController extends BaseController
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @param TemplateService $templateService
|
* @param TemplateService $templateService
|
||||||
|
*
|
||||||
* @return \Illuminate\Http\Response
|
* @return \Illuminate\Http\Response
|
||||||
*/
|
*/
|
||||||
public function previewEmail(TemplateService $templateService)
|
public function previewEmail(TemplateService $templateService)
|
||||||
@ -1429,7 +1434,7 @@ class AccountController extends BaseController
|
|||||||
'invitation' => $invitation,
|
'invitation' => $invitation,
|
||||||
'link' => $invitation->getLink(),
|
'link' => $invitation->getLink(),
|
||||||
'client' => $invoice->client,
|
'client' => $invoice->client,
|
||||||
'amount' => $invoice->amount
|
'amount' => $invoice->amount,
|
||||||
];
|
];
|
||||||
|
|
||||||
// create the email view
|
// create the email view
|
||||||
|
@ -1,19 +1,21 @@
|
|||||||
<?php namespace App\Http\Controllers;
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Controllers;
|
||||||
|
|
||||||
|
use App\Models\Account;
|
||||||
|
use App\Models\AccountGateway;
|
||||||
|
use App\Models\Gateway;
|
||||||
|
use App\Services\AccountGatewayService;
|
||||||
use Auth;
|
use Auth;
|
||||||
use Input;
|
use Input;
|
||||||
use Redirect;
|
use Redirect;
|
||||||
use Session;
|
use Session;
|
||||||
use View;
|
|
||||||
use Validator;
|
|
||||||
use stdClass;
|
use stdClass;
|
||||||
use URL;
|
use URL;
|
||||||
use Utils;
|
use Utils;
|
||||||
|
use Validator;
|
||||||
|
use View;
|
||||||
use WePay;
|
use WePay;
|
||||||
use App\Models\Gateway;
|
|
||||||
use App\Models\Account;
|
|
||||||
use App\Models\AccountGateway;
|
|
||||||
use App\Services\AccountGatewayService;
|
|
||||||
|
|
||||||
class AccountGatewayController extends BaseController
|
class AccountGatewayController extends BaseController
|
||||||
{
|
{
|
||||||
@ -76,8 +78,7 @@ class AccountGatewayController extends BaseController
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Displays the form for account creation
|
* Displays the form for account creation.
|
||||||
*
|
|
||||||
*/
|
*/
|
||||||
public function create()
|
public function create()
|
||||||
{
|
{
|
||||||
@ -148,11 +149,10 @@ class AccountGatewayController extends BaseController
|
|||||||
'config' => false,
|
'config' => false,
|
||||||
'gateways' => $gateways,
|
'gateways' => $gateways,
|
||||||
'creditCardTypes' => $creditCards,
|
'creditCardTypes' => $creditCards,
|
||||||
'countGateways' => count($currentGateways)
|
'countGateways' => count($currentGateways),
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public function bulk()
|
public function bulk()
|
||||||
{
|
{
|
||||||
$action = Input::get('bulk_action');
|
$action = Input::get('bulk_action');
|
||||||
@ -165,8 +165,9 @@ class AccountGatewayController extends BaseController
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Stores new account
|
* Stores new account.
|
||||||
*
|
*
|
||||||
|
* @param mixed $accountGatewayPublicId
|
||||||
*/
|
*/
|
||||||
public function save($accountGatewayPublicId = false)
|
public function save($accountGatewayPublicId = false)
|
||||||
{
|
{
|
||||||
@ -224,6 +225,7 @@ class AccountGatewayController extends BaseController
|
|||||||
->first();
|
->first();
|
||||||
if ($accountGateway) {
|
if ($accountGateway) {
|
||||||
Session::flash('error', trans('texts.gateway_exists'));
|
Session::flash('error', trans('texts.gateway_exists'));
|
||||||
|
|
||||||
return Redirect::to("gateways/{$accountGateway->public_id}/edit");
|
return Redirect::to("gateways/{$accountGateway->public_id}/edit");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -321,11 +323,13 @@ class AccountGatewayController extends BaseController
|
|||||||
if ($accountGatewayPublicId) {
|
if ($accountGatewayPublicId) {
|
||||||
$message = trans('texts.updated_gateway');
|
$message = trans('texts.updated_gateway');
|
||||||
Session::flash('message', $message);
|
Session::flash('message', $message);
|
||||||
|
|
||||||
return Redirect::to("gateways/{$accountGateway->public_id}/edit");
|
return Redirect::to("gateways/{$accountGateway->public_id}/edit");
|
||||||
} else {
|
} else {
|
||||||
$message = trans('texts.created_gateway');
|
$message = trans('texts.created_gateway');
|
||||||
Session::flash('message', $message);
|
Session::flash('message', $message);
|
||||||
return Redirect::to("/settings/online_payments");
|
|
||||||
|
return Redirect::to('/settings/online_payments');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -457,20 +461,22 @@ class AccountGatewayController extends BaseController
|
|||||||
]);
|
]);
|
||||||
|
|
||||||
$response = Redirect::to($updateUri->uri);
|
$response = Redirect::to($updateUri->uri);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
$response = Redirect::to("gateways/{$accountGateway->public_id}/edit");
|
$response = Redirect::to("gateways/{$accountGateway->public_id}/edit");
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
} catch (\WePayException $e) {
|
} catch (\WePayException $e) {
|
||||||
Session::flash('error', $e->getMessage());
|
Session::flash('error', $e->getMessage());
|
||||||
$response = Redirect::to('gateways/create')
|
$response = Redirect::to('gateways/create')
|
||||||
->withInput();
|
->withInput();
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public function resendConfirmation($publicId = false)
|
public function resendConfirmation($publicId = false)
|
||||||
{
|
{
|
||||||
$accountGateway = AccountGateway::scope($publicId)->firstOrFail();
|
$accountGateway = AccountGateway::scope($publicId)->firstOrFail();
|
||||||
@ -488,5 +494,4 @@ class AccountGatewayController extends BaseController
|
|||||||
|
|
||||||
return Redirect::to("gateways/{$accountGateway->public_id}/edit");
|
return Redirect::to("gateways/{$accountGateway->public_id}/edit");
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,6 @@
|
|||||||
<?php namespace App\Http\Controllers;
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Controllers;
|
||||||
|
|
||||||
use App\Services\ActivityService;
|
use App\Services\ActivityService;
|
||||||
|
|
||||||
|
@ -1,24 +1,26 @@
|
|||||||
<?php namespace App\Http\Controllers;
|
<?php
|
||||||
|
|
||||||
use Auth;
|
namespace App\Http\Controllers;
|
||||||
use Artisan;
|
|
||||||
use Cache;
|
use App\Events\UserSettingsChanged;
|
||||||
use Config;
|
|
||||||
use DB;
|
|
||||||
use Exception;
|
|
||||||
use Input;
|
|
||||||
use Utils;
|
|
||||||
use View;
|
|
||||||
use Event;
|
|
||||||
use Session;
|
|
||||||
use Response;
|
|
||||||
use Redirect;
|
|
||||||
use App\Models\Account;
|
use App\Models\Account;
|
||||||
use App\Models\Industry;
|
use App\Models\Industry;
|
||||||
use App\Ninja\Mailers\Mailer;
|
use App\Ninja\Mailers\Mailer;
|
||||||
use App\Ninja\Repositories\AccountRepository;
|
use App\Ninja\Repositories\AccountRepository;
|
||||||
use App\Events\UserSettingsChanged;
|
|
||||||
use App\Services\EmailService;
|
use App\Services\EmailService;
|
||||||
|
use Artisan;
|
||||||
|
use Auth;
|
||||||
|
use Cache;
|
||||||
|
use Config;
|
||||||
|
use DB;
|
||||||
|
use Event;
|
||||||
|
use Exception;
|
||||||
|
use Input;
|
||||||
|
use Redirect;
|
||||||
|
use Response;
|
||||||
|
use Session;
|
||||||
|
use Utils;
|
||||||
|
use View;
|
||||||
|
|
||||||
class AppController extends BaseController
|
class AppController extends BaseController
|
||||||
{
|
{
|
||||||
@ -113,18 +115,14 @@ class AppController extends BaseController
|
|||||||
$config .= "{$key}={$val}\n";
|
$config .= "{$key}={$val}\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Write Config Settings
|
// Write Config Settings
|
||||||
$fp = fopen(base_path().'/.env', 'w');
|
$fp = fopen(base_path().'/.env', 'w');
|
||||||
fwrite($fp, $config);
|
fwrite($fp, $config);
|
||||||
fclose($fp);
|
fclose($fp);
|
||||||
|
|
||||||
// == DB Migrate & Seed == //
|
// == DB Migrate & Seed == //
|
||||||
// Artisan::call('migrate:rollback', array('--force' => true)); // Debug Purposes
|
$sqlFile = base_path() . '/database/setup.sql';
|
||||||
Artisan::call('migrate', ['--force' => true]);
|
DB::unprepared(file_get_contents($sqlFile));
|
||||||
if (Industry::count() == 0) {
|
|
||||||
Artisan::call('db:seed', ['--force' => true]);
|
|
||||||
}
|
|
||||||
Cache::flush();
|
Cache::flush();
|
||||||
Artisan::call('optimize', ['--force' => true]);
|
Artisan::call('optimize', ['--force' => true]);
|
||||||
|
|
||||||
@ -150,6 +148,7 @@ class AppController extends BaseController
|
|||||||
|
|
||||||
if (! $canUpdateEnv = @fopen(base_path().'/.env', 'w')) {
|
if (! $canUpdateEnv = @fopen(base_path().'/.env', 'w')) {
|
||||||
Session::flash('error', 'Warning: Permission denied to write to .env config file, try running <code>sudo chown www-data:www-data /path/to/ninja/.env</code>');
|
Session::flash('error', 'Warning: Permission denied to write to .env config file, try running <code>sudo chown www-data:www-data /path/to/ninja/.env</code>');
|
||||||
|
|
||||||
return Redirect::to('/settings/system_settings');
|
return Redirect::to('/settings/system_settings');
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -196,6 +195,7 @@ class AppController extends BaseController
|
|||||||
fclose($fp);
|
fclose($fp);
|
||||||
|
|
||||||
Session::flash('message', trans('texts.updated_settings'));
|
Session::flash('message', trans('texts.updated_settings'));
|
||||||
|
|
||||||
return Redirect::to('/settings/system_settings');
|
return Redirect::to('/settings/system_settings');
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -231,6 +231,7 @@ class AppController extends BaseController
|
|||||||
|
|
||||||
$data = [
|
$data = [
|
||||||
'text' => 'Test email',
|
'text' => 'Test email',
|
||||||
|
'fromEmail' => $email
|
||||||
];
|
];
|
||||||
|
|
||||||
try {
|
try {
|
||||||
@ -254,6 +255,7 @@ class AppController extends BaseController
|
|||||||
Artisan::call('optimize', ['--force' => true]);
|
Artisan::call('optimize', ['--force' => true]);
|
||||||
} catch (Exception $e) {
|
} catch (Exception $e) {
|
||||||
Utils::logError($e);
|
Utils::logError($e);
|
||||||
|
|
||||||
return Response::make($e->getMessage(), 500);
|
return Response::make($e->getMessage(), 500);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -293,6 +295,7 @@ class AppController extends BaseController
|
|||||||
Session::flash('warning', $message);
|
Session::flash('warning', $message);
|
||||||
} catch (Exception $e) {
|
} catch (Exception $e) {
|
||||||
Utils::logError($e);
|
Utils::logError($e);
|
||||||
|
|
||||||
return Response::make($e->getMessage(), 500);
|
return Response::make($e->getMessage(), 500);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -304,12 +307,14 @@ class AppController extends BaseController
|
|||||||
{
|
{
|
||||||
$messageId = Input::get('MessageID');
|
$messageId = Input::get('MessageID');
|
||||||
$error = Input::get('Name') . ': ' . Input::get('Description');
|
$error = Input::get('Name') . ': ' . Input::get('Description');
|
||||||
|
|
||||||
return $this->emailService->markBounced($messageId, $error) ? RESULT_SUCCESS : RESULT_FAILURE;
|
return $this->emailService->markBounced($messageId, $error) ? RESULT_SUCCESS : RESULT_FAILURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function emailOpened()
|
public function emailOpened()
|
||||||
{
|
{
|
||||||
$messageId = Input::get('MessageID');
|
$messageId = Input::get('MessageID');
|
||||||
|
|
||||||
return $this->emailService->markOpened($messageId) ? RESULT_SUCCESS : RESULT_FAILURE;
|
return $this->emailService->markOpened($messageId) ? RESULT_SUCCESS : RESULT_FAILURE;
|
||||||
|
|
||||||
return RESULT_SUCCESS;
|
return RESULT_SUCCESS;
|
||||||
@ -319,6 +324,7 @@ class AppController extends BaseController
|
|||||||
{
|
{
|
||||||
if (! hash_equals(Input::get('password'), env('RESELLER_PASSWORD'))) {
|
if (! hash_equals(Input::get('password'), env('RESELLER_PASSWORD'))) {
|
||||||
sleep(3);
|
sleep(3);
|
||||||
|
|
||||||
return '';
|
return '';
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -332,7 +338,7 @@ class AppController extends BaseController
|
|||||||
'clients.public_id as client_id',
|
'clients.public_id as client_id',
|
||||||
'payments.public_id as payment_id',
|
'payments.public_id as payment_id',
|
||||||
'payments.payment_date',
|
'payments.payment_date',
|
||||||
'payments.amount'
|
'payments.amount',
|
||||||
]);
|
]);
|
||||||
} else {
|
} else {
|
||||||
$data = DB::table('users')->count();
|
$data = DB::table('users')->count();
|
||||||
|
@ -1,20 +1,21 @@
|
|||||||
<?php namespace App\Http\Controllers\Auth;
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Controllers\Auth;
|
||||||
|
|
||||||
use Auth;
|
|
||||||
use Event;
|
|
||||||
use Utils;
|
|
||||||
use Session;
|
|
||||||
use Illuminate\Http\Request;
|
|
||||||
use App\Models\User;
|
|
||||||
use App\Events\UserLoggedIn;
|
use App\Events\UserLoggedIn;
|
||||||
use App\Http\Controllers\Controller;
|
use App\Http\Controllers\Controller;
|
||||||
|
use App\Models\User;
|
||||||
use App\Ninja\Repositories\AccountRepository;
|
use App\Ninja\Repositories\AccountRepository;
|
||||||
use App\Services\AuthService;
|
use App\Services\AuthService;
|
||||||
|
use Auth;
|
||||||
|
use Event;
|
||||||
use Illuminate\Foundation\Auth\AuthenticatesAndRegistersUsers;
|
use Illuminate\Foundation\Auth\AuthenticatesAndRegistersUsers;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
use Session;
|
||||||
|
use Utils;
|
||||||
|
|
||||||
class AuthController extends Controller
|
class AuthController extends Controller
|
||||||
{
|
{
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|--------------------------------------------------------------------------
|
|--------------------------------------------------------------------------
|
||||||
| Registration & Login Controller
|
| Registration & Login Controller
|
||||||
@ -48,6 +49,7 @@ class AuthController extends Controller
|
|||||||
*
|
*
|
||||||
* @param AccountRepository $repo
|
* @param AccountRepository $repo
|
||||||
* @param AuthService $authService
|
* @param AuthService $authService
|
||||||
|
*
|
||||||
* @internal param \Illuminate\Contracts\Auth\Guard $auth
|
* @internal param \Illuminate\Contracts\Auth\Guard $auth
|
||||||
* @internal param \Illuminate\Contracts\Auth\Registrar $registrar
|
* @internal param \Illuminate\Contracts\Auth\Registrar $registrar
|
||||||
*/
|
*/
|
||||||
@ -59,6 +61,7 @@ class AuthController extends Controller
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @param array $data
|
* @param array $data
|
||||||
|
*
|
||||||
* @return mixed
|
* @return mixed
|
||||||
*/
|
*/
|
||||||
public function validator(array $data)
|
public function validator(array $data)
|
||||||
@ -105,6 +108,7 @@ class AuthController extends Controller
|
|||||||
$this->accountRepo->unlinkUserFromOauth(Auth::user());
|
$this->accountRepo->unlinkUserFromOauth(Auth::user());
|
||||||
|
|
||||||
Session::flash('message', trans('texts.updated_settings'));
|
Session::flash('message', trans('texts.updated_settings'));
|
||||||
|
|
||||||
return redirect()->to('/settings/' . ACCOUNT_USER_DETAILS);
|
return redirect()->to('/settings/' . ACCOUNT_USER_DETAILS);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -127,12 +131,12 @@ class AuthController extends Controller
|
|||||||
*/
|
*/
|
||||||
public function postLoginWrapper(Request $request)
|
public function postLoginWrapper(Request $request)
|
||||||
{
|
{
|
||||||
|
|
||||||
$userId = Auth::check() ? Auth::user()->id : null;
|
$userId = Auth::check() ? Auth::user()->id : null;
|
||||||
$user = User::where('email', '=', $request->input('email'))->first();
|
$user = User::where('email', '=', $request->input('email'))->first();
|
||||||
|
|
||||||
if ($user && $user->failed_logins >= MAX_FAILED_LOGINS) {
|
if ($user && $user->failed_logins >= MAX_FAILED_LOGINS) {
|
||||||
Session::flash('error', trans('texts.invalid_credentials'));
|
Session::flash('error', trans('texts.invalid_credentials'));
|
||||||
|
|
||||||
return redirect()->to('login');
|
return redirect()->to('login');
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -155,7 +159,6 @@ class AuthController extends Controller
|
|||||||
|
|
||||||
$users = $this->accountRepo->loadAccounts(Auth::user()->id);
|
$users = $this->accountRepo->loadAccounts(Auth::user()->id);
|
||||||
Session::put(SESSION_USER_ACCOUNTS, $users);
|
Session::put(SESSION_USER_ACCOUNTS, $users);
|
||||||
|
|
||||||
} elseif ($user) {
|
} elseif ($user) {
|
||||||
$user->failed_logins = $user->failed_logins + 1;
|
$user->failed_logins = $user->failed_logins + 1;
|
||||||
$user->save();
|
$user->save();
|
||||||
@ -172,7 +175,8 @@ class AuthController extends Controller
|
|||||||
if (Auth::check() && ! Auth::user()->registered) {
|
if (Auth::check() && ! Auth::user()->registered) {
|
||||||
$account = Auth::user()->account;
|
$account = Auth::user()->account;
|
||||||
$this->accountRepo->unlinkAccount($account);
|
$this->accountRepo->unlinkAccount($account);
|
||||||
if ($account->company->accounts->count() == 1) {
|
|
||||||
|
if (! $account->hasMultipleAccounts()) {
|
||||||
$account->company->forceDelete();
|
$account->company->forceDelete();
|
||||||
}
|
}
|
||||||
$account->forceDelete();
|
$account->forceDelete();
|
||||||
@ -182,6 +186,10 @@ class AuthController extends Controller
|
|||||||
|
|
||||||
Session::flush();
|
Session::flush();
|
||||||
|
|
||||||
|
if ($reason = request()->reason) {
|
||||||
|
Session::flash('warning', trans("texts.{$reason}_logout"));
|
||||||
|
}
|
||||||
|
|
||||||
return $response;
|
return $response;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,11 +1,12 @@
|
|||||||
<?php namespace App\Http\Controllers\Auth;
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Controllers\Auth;
|
||||||
|
|
||||||
use App\Http\Controllers\Controller;
|
use App\Http\Controllers\Controller;
|
||||||
use Illuminate\Foundation\Auth\ResetsPasswords;
|
use Illuminate\Foundation\Auth\ResetsPasswords;
|
||||||
|
|
||||||
class PasswordController extends Controller
|
class PasswordController extends Controller
|
||||||
{
|
{
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|--------------------------------------------------------------------------
|
|--------------------------------------------------------------------------
|
||||||
| Password Reset Controller
|
| Password Reset Controller
|
||||||
@ -34,5 +35,4 @@ class PasswordController extends Controller
|
|||||||
{
|
{
|
||||||
$this->middleware('guest');
|
$this->middleware('guest');
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,20 +1,22 @@
|
|||||||
<?php namespace App\Http\Controllers;
|
<?php
|
||||||
|
|
||||||
use Cache;
|
namespace App\Http\Controllers;
|
||||||
use Auth;
|
|
||||||
use Input;
|
use App\Http\Requests\CreateBankAccountRequest;
|
||||||
use Redirect;
|
|
||||||
use Session;
|
|
||||||
use View;
|
|
||||||
use Crypt;
|
|
||||||
use File;
|
|
||||||
use Utils;
|
|
||||||
use App\Models\Account;
|
use App\Models\Account;
|
||||||
use App\Models\BankAccount;
|
use App\Models\BankAccount;
|
||||||
use App\Ninja\Repositories\BankAccountRepository;
|
use App\Ninja\Repositories\BankAccountRepository;
|
||||||
use App\Services\BankAccountService;
|
use App\Services\BankAccountService;
|
||||||
use App\Http\Requests\CreateBankAccountRequest;
|
use Auth;
|
||||||
|
use Cache;
|
||||||
|
use Crypt;
|
||||||
|
use File;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
|
use Input;
|
||||||
|
use Redirect;
|
||||||
|
use Session;
|
||||||
|
use Utils;
|
||||||
|
use View;
|
||||||
|
|
||||||
class BankAccountController extends BaseController
|
class BankAccountController extends BaseController
|
||||||
{
|
{
|
||||||
@ -58,8 +60,7 @@ class BankAccountController extends BaseController
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Displays the form for account creation
|
* Displays the form for account creation.
|
||||||
*
|
|
||||||
*/
|
*/
|
||||||
public function create()
|
public function create()
|
||||||
{
|
{
|
||||||
@ -132,13 +133,14 @@ class BankAccountController extends BaseController
|
|||||||
} catch (\Exception $e) {
|
} catch (\Exception $e) {
|
||||||
Session::flash('error', trans('texts.ofx_parse_failed'));
|
Session::flash('error', trans('texts.ofx_parse_failed'));
|
||||||
Utils::logError($e);
|
Utils::logError($e);
|
||||||
|
|
||||||
return view('accounts.import_ofx');
|
return view('accounts.import_ofx');
|
||||||
}
|
}
|
||||||
|
|
||||||
$data = [
|
$data = [
|
||||||
'banks' => null,
|
'banks' => null,
|
||||||
'bankAccount' => null,
|
'bankAccount' => null,
|
||||||
'transactions' => json_encode([$data])
|
'transactions' => json_encode([$data]),
|
||||||
];
|
];
|
||||||
|
|
||||||
return View::make('accounts.bank_account', $data);
|
return View::make('accounts.bank_account', $data);
|
||||||
|
@ -1,17 +1,19 @@
|
|||||||
<?php namespace App\Http\Controllers;
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Controllers;
|
||||||
|
|
||||||
use Utils;
|
|
||||||
use Auth;
|
|
||||||
use Input;
|
|
||||||
use Response;
|
|
||||||
use Request;
|
|
||||||
use League\Fractal\Manager;
|
|
||||||
use League\Fractal\Resource\Item;
|
|
||||||
use League\Fractal\Resource\Collection;
|
|
||||||
use League\Fractal\Pagination\IlluminatePaginatorAdapter;
|
|
||||||
use App\Models\EntityModel;
|
use App\Models\EntityModel;
|
||||||
use App\Ninja\Serializers\ArraySerializer;
|
use App\Ninja\Serializers\ArraySerializer;
|
||||||
|
use Auth;
|
||||||
|
use Input;
|
||||||
|
use League\Fractal\Manager;
|
||||||
|
use League\Fractal\Pagination\IlluminatePaginatorAdapter;
|
||||||
|
use League\Fractal\Resource\Collection;
|
||||||
|
use League\Fractal\Resource\Item;
|
||||||
use League\Fractal\Serializer\JsonApiSerializer;
|
use League\Fractal\Serializer\JsonApiSerializer;
|
||||||
|
use Request;
|
||||||
|
use Response;
|
||||||
|
use Utils;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @SWG\Swagger(
|
* @SWG\Swagger(
|
||||||
@ -128,6 +130,7 @@ class BaseAPIController extends Controller
|
|||||||
}
|
}
|
||||||
|
|
||||||
$resource = new Item($data, $transformer, $entityType);
|
$resource = new Item($data, $transformer, $entityType);
|
||||||
|
|
||||||
return $this->manager->createData($resource)->toArray();
|
return $this->manager->createData($resource)->toArray();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -159,7 +162,7 @@ class BaseAPIController extends Controller
|
|||||||
} else {
|
} else {
|
||||||
$meta = isset($response['meta']) ? $response['meta'] : null;
|
$meta = isset($response['meta']) ? $response['meta'] : null;
|
||||||
$response = [
|
$response = [
|
||||||
$index => $response
|
$index => $response,
|
||||||
];
|
];
|
||||||
|
|
||||||
if ($meta) {
|
if ($meta) {
|
||||||
@ -181,7 +184,6 @@ class BaseAPIController extends Controller
|
|||||||
$headers = Utils::getApiHeaders();
|
$headers = Utils::getApiHeaders();
|
||||||
|
|
||||||
return Response::make($error, $httpErrorCode, $headers);
|
return Response::make($error, $httpErrorCode, $headers);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function getRequestIncludes($data)
|
protected function getRequestIncludes($data)
|
||||||
|
@ -1,9 +1,11 @@
|
|||||||
<?php namespace App\Http\Controllers;
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Controllers;
|
||||||
|
|
||||||
use Utils;
|
|
||||||
use Request;
|
|
||||||
use Illuminate\Foundation\Bus\DispatchesJobs;
|
|
||||||
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
|
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
|
||||||
|
use Illuminate\Foundation\Bus\DispatchesJobs;
|
||||||
|
use Request;
|
||||||
|
use Utils;
|
||||||
|
|
||||||
class BaseController extends Controller
|
class BaseController extends Controller
|
||||||
{
|
{
|
||||||
|
@ -5,14 +5,16 @@ namespace App\Http\Controllers;
|
|||||||
use Auth;
|
use Auth;
|
||||||
use Input;
|
use Input;
|
||||||
use Redirect;
|
use Redirect;
|
||||||
use URL;
|
|
||||||
use Session;
|
use Session;
|
||||||
|
use URL;
|
||||||
|
|
||||||
class BlueVineController extends BaseController {
|
class BlueVineController extends BaseController
|
||||||
public function signup() {
|
{
|
||||||
|
public function signup()
|
||||||
|
{
|
||||||
$user = Auth::user();
|
$user = Auth::user();
|
||||||
|
|
||||||
$data = array(
|
$data = [
|
||||||
'personal_user_full_name' => Input::get('name'),
|
'personal_user_full_name' => Input::get('name'),
|
||||||
'business_phone_number' => Input::get('phone'),
|
'business_phone_number' => Input::get('phone'),
|
||||||
'email' => Input::get('email'),
|
'email' => Input::get('email'),
|
||||||
@ -21,7 +23,7 @@ class BlueVineController extends BaseController {
|
|||||||
'business_monthly_average_bank_balance' => intval(Input::get('average_bank_balance')),
|
'business_monthly_average_bank_balance' => intval(Input::get('average_bank_balance')),
|
||||||
'business_inception_date' => date('Y-m-d', strtotime(Input::get('business_inception'))),
|
'business_inception_date' => date('Y-m-d', strtotime(Input::get('business_inception'))),
|
||||||
'partner_internal_business_id' => 'ninja_account_' . $user->account_id,
|
'partner_internal_business_id' => 'ninja_account_' . $user->account_id,
|
||||||
);
|
];
|
||||||
|
|
||||||
if (! empty(Input::get('quote_type_factoring'))) {
|
if (! empty(Input::get('quote_type_factoring'))) {
|
||||||
$data['invoice_factoring_offer'] = true;
|
$data['invoice_factoring_offer'] = true;
|
||||||
@ -33,17 +35,16 @@ class BlueVineController extends BaseController {
|
|||||||
$data['desired_credit_line_for_loc'] = intval(Input::get('desired_credit_limit')['line_of_credit']);
|
$data['desired_credit_line_for_loc'] = intval(Input::get('desired_credit_limit')['line_of_credit']);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
$api_client = new \GuzzleHttp\Client();
|
$api_client = new \GuzzleHttp\Client();
|
||||||
try {
|
try {
|
||||||
$response = $api_client->request('POST',
|
$response = $api_client->request('POST',
|
||||||
'https://app.bluevine.com/api/v1/user/register_external?' . http_build_query( array(
|
'https://app.bluevine.com/api/v1/user/register_external?' . http_build_query([
|
||||||
'external_register_token' => env('BLUEVINE_PARTNER_TOKEN'),
|
'external_register_token' => env('BLUEVINE_PARTNER_TOKEN'),
|
||||||
'c' => env('BLUEVINE_PARTNER_UNIQUE_ID'),
|
'c' => env('BLUEVINE_PARTNER_UNIQUE_ID'),
|
||||||
'signup_parent_url' => URL::to('/bluevine/completed'),
|
'signup_parent_url' => URL::to('/bluevine/completed'),
|
||||||
) ), array(
|
]), [
|
||||||
'json' => $data
|
'json' => $data,
|
||||||
)
|
]
|
||||||
);
|
);
|
||||||
} catch (\GuzzleHttp\Exception\RequestException $ex) {
|
} catch (\GuzzleHttp\Exception\RequestException $ex) {
|
||||||
if ($ex->getCode() == 403) {
|
if ($ex->getCode() == 403) {
|
||||||
@ -52,11 +53,11 @@ class BlueVineController extends BaseController {
|
|||||||
|
|
||||||
return response()->json([
|
return response()->json([
|
||||||
'error' => true,
|
'error' => true,
|
||||||
'message' => $response_data->reason
|
'message' => $response_data->reason,
|
||||||
]);
|
]);
|
||||||
} else {
|
} else {
|
||||||
return response()->json([
|
return response()->json([
|
||||||
'error' => true
|
'error' => true,
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -70,7 +71,8 @@ class BlueVineController extends BaseController {
|
|||||||
return response()->json($quote_data);
|
return response()->json($quote_data);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function hideMessage() {
|
public function hideMessage()
|
||||||
|
{
|
||||||
$user = Auth::user();
|
$user = Auth::user();
|
||||||
|
|
||||||
if ($user) {
|
if ($user) {
|
||||||
@ -82,7 +84,8 @@ class BlueVineController extends BaseController {
|
|||||||
return 'success';
|
return 'success';
|
||||||
}
|
}
|
||||||
|
|
||||||
public function handleCompleted() {
|
public function handleCompleted()
|
||||||
|
{
|
||||||
Session::flash('message', trans('texts.bluevine_completed'));
|
Session::flash('message', trans('texts.bluevine_completed'));
|
||||||
|
|
||||||
return Redirect::to('/dashboard');
|
return Redirect::to('/dashboard');
|
||||||
|
@ -2,18 +2,18 @@
|
|||||||
|
|
||||||
namespace App\Http\Controllers;
|
namespace App\Http\Controllers;
|
||||||
|
|
||||||
use Auth;
|
|
||||||
use DB;
|
|
||||||
use Utils;
|
|
||||||
use Cache;
|
|
||||||
use Input;
|
|
||||||
use Exception;
|
|
||||||
use App\Libraries\Skype\SkypeResponse;
|
|
||||||
use App\Libraries\CurlUtils;
|
use App\Libraries\CurlUtils;
|
||||||
use App\Models\User;
|
use App\Libraries\Skype\SkypeResponse;
|
||||||
use App\Models\SecurityCode;
|
use App\Models\SecurityCode;
|
||||||
|
use App\Models\User;
|
||||||
use App\Ninja\Intents\BaseIntent;
|
use App\Ninja\Intents\BaseIntent;
|
||||||
use App\Ninja\Mailers\UserMailer;
|
use App\Ninja\Mailers\UserMailer;
|
||||||
|
use Auth;
|
||||||
|
use Cache;
|
||||||
|
use DB;
|
||||||
|
use Exception;
|
||||||
|
use Input;
|
||||||
|
use Utils;
|
||||||
|
|
||||||
class BotController extends Controller
|
class BotController extends Controller
|
||||||
{
|
{
|
||||||
@ -42,6 +42,7 @@ class BotController extends Controller
|
|||||||
} elseif ($input['action'] === 'remove') {
|
} elseif ($input['action'] === 'remove') {
|
||||||
$this->removeBot($botUserId);
|
$this->removeBot($botUserId);
|
||||||
$this->saveState($token, false);
|
$this->saveState($token, false);
|
||||||
|
|
||||||
return RESULT_SUCCESS;
|
return RESULT_SUCCESS;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@ -130,7 +131,7 @@ class BotController extends Controller
|
|||||||
$url = sprintf('%s/botstate/skype/conversations/%s', MSBOT_STATE_URL, '29:1C-OsU7OWBEDOYJhQUsDkYHmycOwOq9QOg5FVTwRX9ts');
|
$url = sprintf('%s/botstate/skype/conversations/%s', MSBOT_STATE_URL, '29:1C-OsU7OWBEDOYJhQUsDkYHmycOwOq9QOg5FVTwRX9ts');
|
||||||
|
|
||||||
$headers = [
|
$headers = [
|
||||||
'Authorization: Bearer ' . $token
|
'Authorization: Bearer ' . $token,
|
||||||
];
|
];
|
||||||
|
|
||||||
$response = CurlUtils::get($url, $headers);
|
$response = CurlUtils::get($url, $headers);
|
||||||
@ -165,7 +166,6 @@ class BotController extends Controller
|
|||||||
|
|
||||||
$data = '{ eTag: "*", data: "' . addslashes(json_encode($data)) . '" }';
|
$data = '{ eTag: "*", data: "' . addslashes(json_encode($data)) . '" }';
|
||||||
|
|
||||||
|
|
||||||
CurlUtils::post($url, $data, $headers);
|
CurlUtils::post($url, $data, $headers);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -237,6 +237,7 @@ class BotController extends Controller
|
|||||||
if (! hash_equals($code->code, $input)) {
|
if (! hash_equals($code->code, $input)) {
|
||||||
$code->attempts += 1;
|
$code->attempts += 1;
|
||||||
$code->save();
|
$code->save();
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -273,13 +274,13 @@ class BotController extends Controller
|
|||||||
$sig_enc = $token_arr[2];
|
$sig_enc = $token_arr[2];
|
||||||
|
|
||||||
// 2 base 64 url decoding
|
// 2 base 64 url decoding
|
||||||
$headers_arr = json_decode($this->base64_url_decode($headers_enc), TRUE);
|
$headers_arr = json_decode($this->base64_url_decode($headers_enc), true);
|
||||||
$claims_arr = json_decode($this->base64_url_decode($claims_enc), TRUE);
|
$claims_arr = json_decode($this->base64_url_decode($claims_enc), true);
|
||||||
$sig = $this->base64_url_decode($sig_enc);
|
$sig = $this->base64_url_decode($sig_enc);
|
||||||
|
|
||||||
// 3 get key list
|
// 3 get key list
|
||||||
$keylist = file_get_contents('https://api.aps.skype.com/v1/keys');
|
$keylist = file_get_contents('https://api.aps.skype.com/v1/keys');
|
||||||
$keylist_arr = json_decode($keylist, TRUE);
|
$keylist_arr = json_decode($keylist, true);
|
||||||
foreach ($keylist_arr['keys'] as $key => $value) {
|
foreach ($keylist_arr['keys'] as $key => $value) {
|
||||||
|
|
||||||
// 4 select one key (which matches)
|
// 4 select one key (which matches)
|
||||||
@ -298,10 +299,11 @@ class BotController extends Controller
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 7 show result
|
// 7 show result
|
||||||
return ($token_valid == 1);
|
return $token_valid == 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
private function base64_url_decode($arg) {
|
private function base64_url_decode($arg)
|
||||||
|
{
|
||||||
$res = $arg;
|
$res = $arg;
|
||||||
$res = str_replace('-', '+', $res);
|
$res = str_replace('-', '+', $res);
|
||||||
$res = str_replace('_', '/', $res);
|
$res = str_replace('_', '/', $res);
|
||||||
@ -309,15 +311,16 @@ class BotController extends Controller
|
|||||||
case 0:
|
case 0:
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
$res .= "==";
|
$res .= '==';
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
$res .= "=";
|
$res .= '=';
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
$res = base64_decode($res);
|
$res = base64_decode($res);
|
||||||
|
|
||||||
return $res;
|
return $res;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,12 +1,14 @@
|
|||||||
<?php namespace App\Http\Controllers;
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Controllers;
|
||||||
|
|
||||||
use App\Http\Requests\ClientRequest;
|
use App\Http\Requests\ClientRequest;
|
||||||
use Response;
|
|
||||||
use Input;
|
|
||||||
use App\Models\Client;
|
|
||||||
use App\Ninja\Repositories\ClientRepository;
|
|
||||||
use App\Http\Requests\CreateClientRequest;
|
use App\Http\Requests\CreateClientRequest;
|
||||||
use App\Http\Requests\UpdateClientRequest;
|
use App\Http\Requests\UpdateClientRequest;
|
||||||
|
use App\Models\Client;
|
||||||
|
use App\Ninja\Repositories\ClientRepository;
|
||||||
|
use Input;
|
||||||
|
use Response;
|
||||||
|
|
||||||
class ClientApiController extends BaseAPIController
|
class ClientApiController extends BaseAPIController
|
||||||
{
|
{
|
||||||
@ -69,15 +71,11 @@ class ClientApiController extends BaseAPIController
|
|||||||
* )
|
* )
|
||||||
* )
|
* )
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public function show(ClientRequest $request)
|
public function show(ClientRequest $request)
|
||||||
{
|
{
|
||||||
return $this->itemResponse($request->entity());
|
return $this->itemResponse($request->entity());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @SWG\Post(
|
* @SWG\Post(
|
||||||
* path="/clients",
|
* path="/clients",
|
||||||
@ -126,8 +124,9 @@ class ClientApiController extends BaseAPIController
|
|||||||
* description="an ""unexpected"" error"
|
* description="an ""unexpected"" error"
|
||||||
* )
|
* )
|
||||||
* )
|
* )
|
||||||
|
*
|
||||||
|
* @param mixed $publicId
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public function update(UpdateClientRequest $request, $publicId)
|
public function update(UpdateClientRequest $request, $publicId)
|
||||||
{
|
{
|
||||||
if ($request->action) {
|
if ($request->action) {
|
||||||
@ -143,7 +142,6 @@ class ClientApiController extends BaseAPIController
|
|||||||
return $this->itemResponse($client);
|
return $this->itemResponse($client);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @SWG\Delete(
|
* @SWG\Delete(
|
||||||
* path="/clients/{client_id}",
|
* path="/clients/{client_id}",
|
||||||
@ -165,7 +163,6 @@ class ClientApiController extends BaseAPIController
|
|||||||
* )
|
* )
|
||||||
* )
|
* )
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public function destroy(UpdateClientRequest $request)
|
public function destroy(UpdateClientRequest $request)
|
||||||
{
|
{
|
||||||
$client = $request->entity();
|
$client = $request->entity();
|
||||||
@ -174,5 +171,4 @@ class ClientApiController extends BaseAPIController
|
|||||||
|
|
||||||
return $this->itemResponse($client);
|
return $this->itemResponse($client);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,11 +1,13 @@
|
|||||||
<?php namespace App\Http\Controllers\ClientAuth;
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Controllers\ClientAuth;
|
||||||
|
|
||||||
use Session;
|
|
||||||
use Illuminate\Http\Request;
|
|
||||||
use App\Models\User;
|
|
||||||
use App\Http\Controllers\Controller;
|
use App\Http\Controllers\Controller;
|
||||||
use App\Models\Contact;
|
use App\Models\Contact;
|
||||||
|
use App\Models\User;
|
||||||
use Illuminate\Foundation\Auth\AuthenticatesUsers;
|
use Illuminate\Foundation\Auth\AuthenticatesUsers;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
use Session;
|
||||||
|
|
||||||
class AuthController extends Controller
|
class AuthController extends Controller
|
||||||
{
|
{
|
||||||
@ -26,18 +28,9 @@ class AuthController extends Controller
|
|||||||
*/
|
*/
|
||||||
public function showLoginForm()
|
public function showLoginForm()
|
||||||
{
|
{
|
||||||
$data = [];
|
$data = [
|
||||||
|
'clientauth' => true,
|
||||||
$contactKey = session('contact_key');
|
];
|
||||||
if ($contactKey) {
|
|
||||||
$contact = Contact::where('contact_key', '=', $contactKey)->first();
|
|
||||||
if ($contact && !$contact->is_deleted) {
|
|
||||||
$account = $contact->account;
|
|
||||||
|
|
||||||
$data['account'] = $account;
|
|
||||||
$data['clientFontUrl'] = $account->getFontsUrl();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return view('clientauth.login')->with($data);
|
return view('clientauth.login')->with($data);
|
||||||
}
|
}
|
||||||
@ -84,6 +77,6 @@ class AuthController extends Controller
|
|||||||
*/
|
*/
|
||||||
public function getSessionExpired()
|
public function getSessionExpired()
|
||||||
{
|
{
|
||||||
return view('clientauth.sessionexpired');
|
return view('clientauth.sessionexpired')->with(['clientauth' => true]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,17 +1,18 @@
|
|||||||
<?php namespace App\Http\Controllers\ClientAuth;
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Controllers\ClientAuth;
|
||||||
|
|
||||||
use Config;
|
|
||||||
use App\Http\Controllers\Controller;
|
use App\Http\Controllers\Controller;
|
||||||
|
use App\Models\Contact;
|
||||||
|
use App\Models\Invitation;
|
||||||
|
use Config;
|
||||||
use Illuminate\Foundation\Auth\ResetsPasswords;
|
use Illuminate\Foundation\Auth\ResetsPasswords;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use Illuminate\Mail\Message;
|
use Illuminate\Mail\Message;
|
||||||
use Illuminate\Support\Facades\Password;
|
use Illuminate\Support\Facades\Password;
|
||||||
use App\Models\Contact;
|
|
||||||
use App\Models\Invitation;
|
|
||||||
|
|
||||||
class PasswordController extends Controller
|
class PasswordController extends Controller
|
||||||
{
|
{
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|--------------------------------------------------------------------------
|
|--------------------------------------------------------------------------
|
||||||
| Password Reset Controller
|
| Password Reset Controller
|
||||||
@ -47,16 +48,11 @@ class PasswordController extends Controller
|
|||||||
*/
|
*/
|
||||||
public function showLinkRequestForm()
|
public function showLinkRequestForm()
|
||||||
{
|
{
|
||||||
$data = [];
|
$data = [
|
||||||
|
'clientauth' => true,
|
||||||
|
];
|
||||||
$contactKey = session('contact_key');
|
$contactKey = session('contact_key');
|
||||||
if ($contactKey) {
|
if (!$contactKey) {
|
||||||
$contact = Contact::where('contact_key', '=', $contactKey)->first();
|
|
||||||
if ($contact && !$contact->is_deleted) {
|
|
||||||
$account = $contact->account;
|
|
||||||
$data['account'] = $account;
|
|
||||||
$data['clientFontUrl'] = $account->getFontsUrl();
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
return \Redirect::to('/client/sessionexpired');
|
return \Redirect::to('/client/sessionexpired');
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -78,7 +74,7 @@ class PasswordController extends Controller
|
|||||||
$contactKey = session('contact_key');
|
$contactKey = session('contact_key');
|
||||||
if ($contactKey) {
|
if ($contactKey) {
|
||||||
$contact = Contact::where('contact_key', '=', $contactKey)->first();
|
$contact = Contact::where('contact_key', '=', $contactKey)->first();
|
||||||
if ($contact && !$contact->is_deleted) {
|
if ($contact && ! $contact->is_deleted && $contact->email) {
|
||||||
$contactId = $contact->id;
|
$contactId = $contact->id;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -105,6 +101,7 @@ class PasswordController extends Controller
|
|||||||
* @param \Illuminate\Http\Request $request
|
* @param \Illuminate\Http\Request $request
|
||||||
* @param string|null $key
|
* @param string|null $key
|
||||||
* @param string|null $token
|
* @param string|null $token
|
||||||
|
*
|
||||||
* @return \Illuminate\Http\Response
|
* @return \Illuminate\Http\Response
|
||||||
*/
|
*/
|
||||||
public function showResetForm(Request $request, $key = null, $token = null)
|
public function showResetForm(Request $request, $key = null, $token = null)
|
||||||
@ -113,7 +110,11 @@ class PasswordController extends Controller
|
|||||||
return $this->getEmail();
|
return $this->getEmail();
|
||||||
}
|
}
|
||||||
|
|
||||||
$data = compact('token');
|
$data = array(
|
||||||
|
'token' => $token,
|
||||||
|
'clientauth' => true,
|
||||||
|
);
|
||||||
|
|
||||||
if ($key) {
|
if ($key) {
|
||||||
$contact = Contact::where('contact_key', '=', $key)->first();
|
$contact = Contact::where('contact_key', '=', $key)->first();
|
||||||
if ($contact && ! $contact->is_deleted) {
|
if ($contact && ! $contact->is_deleted) {
|
||||||
@ -128,10 +129,7 @@ class PasswordController extends Controller
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!empty($account)) {
|
if ( empty($account)) {
|
||||||
$data['account'] = $account;
|
|
||||||
$data['clientFontUrl'] = $account->getFontsUrl();
|
|
||||||
} else {
|
|
||||||
return \Redirect::to('/client/sessionexpired');
|
return \Redirect::to('/client/sessionexpired');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -139,7 +137,6 @@ class PasswordController extends Controller
|
|||||||
return view('clientauth.reset')->with($data);
|
return view('clientauth.reset')->with($data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Display the password reset view for the given token.
|
* Display the password reset view for the given token.
|
||||||
*
|
*
|
||||||
@ -148,6 +145,7 @@ class PasswordController extends Controller
|
|||||||
* @param \Illuminate\Http\Request $request
|
* @param \Illuminate\Http\Request $request
|
||||||
* @param string|null $key
|
* @param string|null $key
|
||||||
* @param string|null $token
|
* @param string|null $token
|
||||||
|
*
|
||||||
* @return \Illuminate\Http\Response
|
* @return \Illuminate\Http\Response
|
||||||
*/
|
*/
|
||||||
public function getReset(Request $request, $key = null, $token = null)
|
public function getReset(Request $request, $key = null, $token = null)
|
||||||
@ -159,6 +157,7 @@ class PasswordController extends Controller
|
|||||||
* Reset the given user's password.
|
* Reset the given user's password.
|
||||||
*
|
*
|
||||||
* @param \Illuminate\Http\Request $request
|
* @param \Illuminate\Http\Request $request
|
||||||
|
*
|
||||||
* @return \Illuminate\Http\Response
|
* @return \Illuminate\Http\Response
|
||||||
*/
|
*/
|
||||||
public function reset(Request $request)
|
public function reset(Request $request)
|
||||||
|
@ -1,25 +1,26 @@
|
|||||||
<?php namespace App\Http\Controllers;
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Controllers;
|
||||||
|
|
||||||
use Auth;
|
|
||||||
use Utils;
|
|
||||||
use View;
|
|
||||||
use URL;
|
|
||||||
use Input;
|
|
||||||
use Session;
|
|
||||||
use Redirect;
|
|
||||||
use Cache;
|
|
||||||
use App\Models\Client;
|
|
||||||
use App\Models\Account;
|
|
||||||
use App\Models\Contact;
|
|
||||||
use App\Models\Invoice;
|
|
||||||
use App\Models\Credit;
|
|
||||||
use App\Models\Task;
|
|
||||||
use App\Ninja\Repositories\ClientRepository;
|
|
||||||
use App\Services\ClientService;
|
|
||||||
use App\Http\Requests\ClientRequest;
|
use App\Http\Requests\ClientRequest;
|
||||||
use App\Http\Requests\CreateClientRequest;
|
use App\Http\Requests\CreateClientRequest;
|
||||||
use App\Http\Requests\UpdateClientRequest;
|
use App\Http\Requests\UpdateClientRequest;
|
||||||
|
use App\Models\Account;
|
||||||
|
use App\Models\Client;
|
||||||
|
use App\Models\Credit;
|
||||||
|
use App\Models\Invoice;
|
||||||
|
use App\Models\Task;
|
||||||
use App\Ninja\Datatables\ClientDatatable;
|
use App\Ninja\Datatables\ClientDatatable;
|
||||||
|
use App\Ninja\Repositories\ClientRepository;
|
||||||
|
use App\Services\ClientService;
|
||||||
|
use Auth;
|
||||||
|
use Cache;
|
||||||
|
use Input;
|
||||||
|
use Redirect;
|
||||||
|
use Session;
|
||||||
|
use URL;
|
||||||
|
use Utils;
|
||||||
|
use View;
|
||||||
|
|
||||||
class ClientController extends BaseController
|
class ClientController extends BaseController
|
||||||
{
|
{
|
||||||
@ -76,6 +77,7 @@ class ClientController extends BaseController
|
|||||||
* Display the specified resource.
|
* Display the specified resource.
|
||||||
*
|
*
|
||||||
* @param int $id
|
* @param int $id
|
||||||
|
*
|
||||||
* @return Response
|
* @return Response
|
||||||
*/
|
*/
|
||||||
public function show(ClientRequest $request)
|
public function show(ClientRequest $request)
|
||||||
@ -155,6 +157,7 @@ class ClientController extends BaseController
|
|||||||
* Show the form for editing the specified resource.
|
* Show the form for editing the specified resource.
|
||||||
*
|
*
|
||||||
* @param int $id
|
* @param int $id
|
||||||
|
*
|
||||||
* @return Response
|
* @return Response
|
||||||
*/
|
*/
|
||||||
public function edit(ClientRequest $request)
|
public function edit(ClientRequest $request)
|
||||||
@ -185,7 +188,6 @@ class ClientController extends BaseController
|
|||||||
'data' => Input::old('data'),
|
'data' => Input::old('data'),
|
||||||
'account' => Auth::user()->account,
|
'account' => Auth::user()->account,
|
||||||
'sizes' => Cache::get('sizes'),
|
'sizes' => Cache::get('sizes'),
|
||||||
'paymentTerms' => Cache::get('paymentTerms'),
|
|
||||||
'currencies' => Cache::get('currencies'),
|
'currencies' => Cache::get('currencies'),
|
||||||
'customLabel1' => Auth::user()->account->custom_client_label1,
|
'customLabel1' => Auth::user()->account->custom_client_label1,
|
||||||
'customLabel2' => Auth::user()->account->custom_client_label2,
|
'customLabel2' => Auth::user()->account->custom_client_label2,
|
||||||
@ -196,6 +198,7 @@ class ClientController extends BaseController
|
|||||||
* Update the specified resource in storage.
|
* Update the specified resource in storage.
|
||||||
*
|
*
|
||||||
* @param int $id
|
* @param int $id
|
||||||
|
*
|
||||||
* @return Response
|
* @return Response
|
||||||
*/
|
*/
|
||||||
public function update(UpdateClientRequest $request)
|
public function update(UpdateClientRequest $request)
|
||||||
|
@ -1,32 +1,34 @@
|
|||||||
<?php namespace App\Http\Controllers;
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Controllers;
|
||||||
|
|
||||||
|
use App\Events\InvoiceInvitationWasViewed;
|
||||||
|
use App\Events\QuoteInvitationWasViewed;
|
||||||
|
use App\Models\Contact;
|
||||||
|
use App\Models\Document;
|
||||||
|
use App\Models\Gateway;
|
||||||
|
use App\Models\Invitation;
|
||||||
|
use App\Models\PaymentMethod;
|
||||||
|
use App\Ninja\Repositories\ActivityRepository;
|
||||||
|
use App\Ninja\Repositories\CreditRepository;
|
||||||
|
use App\Ninja\Repositories\DocumentRepository;
|
||||||
|
use App\Ninja\Repositories\InvoiceRepository;
|
||||||
|
use App\Ninja\Repositories\PaymentRepository;
|
||||||
|
use App\Services\PaymentService;
|
||||||
use Auth;
|
use Auth;
|
||||||
use View;
|
use Barracuda\ArchiveStream\ZipArchive;
|
||||||
use URL;
|
use Cache;
|
||||||
|
use Datatable;
|
||||||
|
use Exception;
|
||||||
use Input;
|
use Input;
|
||||||
use Utils;
|
use Redirect;
|
||||||
use Request;
|
use Request;
|
||||||
use Response;
|
use Response;
|
||||||
use Session;
|
use Session;
|
||||||
use Datatable;
|
use URL;
|
||||||
|
use Utils;
|
||||||
use Validator;
|
use Validator;
|
||||||
use Cache;
|
use View;
|
||||||
use Redirect;
|
|
||||||
use Exception;
|
|
||||||
use App\Models\Gateway;
|
|
||||||
use App\Models\Invitation;
|
|
||||||
use App\Models\Document;
|
|
||||||
use App\Models\PaymentMethod;
|
|
||||||
use App\Models\Contact;
|
|
||||||
use App\Ninja\Repositories\InvoiceRepository;
|
|
||||||
use App\Ninja\Repositories\PaymentRepository;
|
|
||||||
use App\Ninja\Repositories\ActivityRepository;
|
|
||||||
use App\Ninja\Repositories\DocumentRepository;
|
|
||||||
use App\Ninja\Repositories\CreditRepository;
|
|
||||||
use App\Events\InvoiceInvitationWasViewed;
|
|
||||||
use App\Events\QuoteInvitationWasViewed;
|
|
||||||
use App\Services\PaymentService;
|
|
||||||
use Barracuda\ArchiveStream\ZipArchive;
|
|
||||||
|
|
||||||
class ClientPortalController extends BaseController
|
class ClientPortalController extends BaseController
|
||||||
{
|
{
|
||||||
@ -46,11 +48,6 @@ class ClientPortalController extends BaseController
|
|||||||
|
|
||||||
public function view($invitationKey)
|
public function view($invitationKey)
|
||||||
{
|
{
|
||||||
if (request()->silent) {
|
|
||||||
session(['silent' => true]);
|
|
||||||
return redirect(request()->url());
|
|
||||||
}
|
|
||||||
|
|
||||||
if (! $invitation = $this->invoiceRepo->findInvoiceByInvitation($invitationKey)) {
|
if (! $invitation = $this->invoiceRepo->findInvoiceByInvitation($invitationKey)) {
|
||||||
return $this->returnError();
|
return $this->returnError();
|
||||||
}
|
}
|
||||||
@ -59,18 +56,20 @@ class ClientPortalController extends BaseController
|
|||||||
$client = $invoice->client;
|
$client = $invoice->client;
|
||||||
$account = $invoice->account;
|
$account = $invoice->account;
|
||||||
|
|
||||||
|
if (request()->silent) {
|
||||||
|
session(['silent:' . $client->id => true]);
|
||||||
|
return redirect(request()->url());
|
||||||
|
}
|
||||||
|
|
||||||
if (! $account->checkSubdomain(Request::server('HTTP_HOST'))) {
|
if (! $account->checkSubdomain(Request::server('HTTP_HOST'))) {
|
||||||
return response()->view('error', [
|
return response()->view('error', [
|
||||||
'error' => trans('texts.invoice_not_found'),
|
'error' => trans('texts.invoice_not_found'),
|
||||||
'hideHeader' => true,
|
|
||||||
'clientViewCSS' => $account->clientViewCSS(),
|
|
||||||
'clientFontUrl' => $account->getFontsUrl(),
|
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
$account->loadLocalizationSettings($client);
|
$account->loadLocalizationSettings($client);
|
||||||
|
|
||||||
if (! Input::has('phantomjs') && ! session('silent') && ! Session::has($invitationKey)
|
if (! Input::has('phantomjs') && ! session('silent:' . $client->id) && ! Session::has($invitation->invitation_key)
|
||||||
&& (! Auth::check() || Auth::user()->account_id != $invoice->account_id)) {
|
&& (! Auth::check() || Auth::user()->account_id != $invoice->account_id)) {
|
||||||
if ($invoice->isType(INVOICE_TYPE_QUOTE)) {
|
if ($invoice->isType(INVOICE_TYPE_QUOTE)) {
|
||||||
event(new QuoteInvitationWasViewed($invoice, $invitation));
|
event(new QuoteInvitationWasViewed($invoice, $invitation));
|
||||||
@ -79,7 +78,7 @@ class ClientPortalController extends BaseController
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Session::put($invitationKey, true); // track this invitation has been seen
|
Session::put($invitation->invitation_key, true); // track this invitation has been seen
|
||||||
Session::put('contact_key', $invitation->contact->contact_key); // track current contact
|
Session::put('contact_key', $invitation->contact->contact_key); // track current contact
|
||||||
|
|
||||||
$invoice->invoice_date = Utils::fromSqlDate($invoice->invoice_date);
|
$invoice->invoice_date = Utils::fromSqlDate($invoice->invoice_date);
|
||||||
@ -104,10 +103,13 @@ class ClientPortalController extends BaseController
|
|||||||
'phone',
|
'phone',
|
||||||
]);
|
]);
|
||||||
|
|
||||||
// translate the client country name
|
// translate the country names
|
||||||
if ($invoice->client->country) {
|
if ($invoice->client->country) {
|
||||||
$invoice->client->country->name = trans('texts.country_' . $invoice->client->country->name);
|
$invoice->client->country->name = trans('texts.country_' . $invoice->client->country->name);
|
||||||
}
|
}
|
||||||
|
if ($invoice->account->country) {
|
||||||
|
$invoice->account->country->name = trans('texts.country_' . $invoice->account->country->name);
|
||||||
|
}
|
||||||
|
|
||||||
$data = [];
|
$data = [];
|
||||||
$paymentTypes = $this->getPaymentTypes($account, $client, $invitation);
|
$paymentTypes = $this->getPaymentTypes($account, $client, $invitation);
|
||||||
@ -137,7 +139,6 @@ class ClientPortalController extends BaseController
|
|||||||
'account' => $account,
|
'account' => $account,
|
||||||
'showApprove' => $showApprove,
|
'showApprove' => $showApprove,
|
||||||
'showBreadcrumbs' => false,
|
'showBreadcrumbs' => false,
|
||||||
'clientFontUrl' => $account->getFontsUrl(),
|
|
||||||
'invoice' => $invoice->hidePrivateFields(),
|
'invoice' => $invoice->hidePrivateFields(),
|
||||||
'invitation' => $invitation,
|
'invitation' => $invitation,
|
||||||
'invoiceLabels' => $account->getInvoiceLabels(),
|
'invoiceLabels' => $account->getInvoiceLabels(),
|
||||||
@ -238,8 +239,13 @@ class ClientPortalController extends BaseController
|
|||||||
|
|
||||||
$client = $contact->client;
|
$client = $contact->client;
|
||||||
$account = $client->account;
|
$account = $client->account;
|
||||||
$account->loadLocalizationSettings($client);
|
|
||||||
|
|
||||||
|
if (request()->silent) {
|
||||||
|
session(['silent:' . $client->id => true]);
|
||||||
|
return redirect(request()->url());
|
||||||
|
}
|
||||||
|
|
||||||
|
$account->loadLocalizationSettings($client);
|
||||||
$color = $account->primary_color ? $account->primary_color : '#0b4d78';
|
$color = $account->primary_color ? $account->primary_color : '#0b4d78';
|
||||||
$customer = false;
|
$customer = false;
|
||||||
|
|
||||||
@ -258,7 +264,6 @@ class ClientPortalController extends BaseController
|
|||||||
'contact' => $contact,
|
'contact' => $contact,
|
||||||
'account' => $account,
|
'account' => $account,
|
||||||
'client' => $client,
|
'client' => $client,
|
||||||
'clientFontUrl' => $account->getFontsUrl(),
|
|
||||||
'gateway' => $account->getTokenGateway(),
|
'gateway' => $account->getTokenGateway(),
|
||||||
'paymentMethods' => $customer ? $customer->payment_methods : false,
|
'paymentMethods' => $customer ? $customer->payment_methods : false,
|
||||||
'transactionToken' => $paymentDriver ? $paymentDriver->createTransactionToken() : false,
|
'transactionToken' => $paymentDriver ? $paymentDriver->createTransactionToken() : false,
|
||||||
@ -279,7 +284,9 @@ class ClientPortalController extends BaseController
|
|||||||
$query->where('activities.adjustment', '!=', 0);
|
$query->where('activities.adjustment', '!=', 0);
|
||||||
|
|
||||||
return Datatable::query($query)
|
return Datatable::query($query)
|
||||||
->addColumn('activities.id', function ($model) { return Utils::timestampToDateTimeString(strtotime($model->created_at)); })
|
->addColumn('activities.id', function ($model) {
|
||||||
|
return Utils::timestampToDateTimeString(strtotime($model->created_at));
|
||||||
|
})
|
||||||
->addColumn('activity_type_id', function ($model) {
|
->addColumn('activity_type_id', function ($model) {
|
||||||
$data = [
|
$data = [
|
||||||
'client' => Utils::getClientDisplayName($model),
|
'client' => Utils::getClientDisplayName($model),
|
||||||
@ -294,8 +301,12 @@ class ClientPortalController extends BaseController
|
|||||||
|
|
||||||
return trans("texts.activity_{$model->activity_type_id}", $data);
|
return trans("texts.activity_{$model->activity_type_id}", $data);
|
||||||
})
|
})
|
||||||
->addColumn('balance', function ($model) { return Utils::formatMoney($model->balance, $model->currency_id, $model->country_id); })
|
->addColumn('balance', function ($model) {
|
||||||
->addColumn('adjustment', function ($model) { return $model->adjustment != 0 ? Utils::wrapAdjustment($model->adjustment, $model->currency_id, $model->country_id) : ''; })
|
return Utils::formatMoney($model->balance, $model->currency_id, $model->country_id);
|
||||||
|
})
|
||||||
|
->addColumn('adjustment', function ($model) {
|
||||||
|
return $model->adjustment != 0 ? Utils::wrapAdjustment($model->adjustment, $model->currency_id, $model->country_id) : '';
|
||||||
|
})
|
||||||
->make();
|
->make();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -318,7 +329,6 @@ class ClientPortalController extends BaseController
|
|||||||
'color' => $color,
|
'color' => $color,
|
||||||
'account' => $account,
|
'account' => $account,
|
||||||
'client' => $contact->client,
|
'client' => $contact->client,
|
||||||
'clientFontUrl' => $account->getFontsUrl(),
|
|
||||||
'title' => trans('texts.recurring_invoices'),
|
'title' => trans('texts.recurring_invoices'),
|
||||||
'entityType' => ENTITY_RECURRING_INVOICE,
|
'entityType' => ENTITY_RECURRING_INVOICE,
|
||||||
'columns' => Utils::trans(['frequency', 'start_date', 'end_date', 'invoice_total', 'auto_bill']),
|
'columns' => Utils::trans(['frequency', 'start_date', 'end_date', 'invoice_total', 'auto_bill']),
|
||||||
@ -346,7 +356,6 @@ class ClientPortalController extends BaseController
|
|||||||
'color' => $color,
|
'color' => $color,
|
||||||
'account' => $account,
|
'account' => $account,
|
||||||
'client' => $contact->client,
|
'client' => $contact->client,
|
||||||
'clientFontUrl' => $account->getFontsUrl(),
|
|
||||||
'title' => trans('texts.invoices'),
|
'title' => trans('texts.invoices'),
|
||||||
'entityType' => ENTITY_INVOICE,
|
'entityType' => ENTITY_INVOICE,
|
||||||
'columns' => Utils::trans(['invoice_number', 'invoice_date', 'invoice_total', 'balance_due', 'due_date']),
|
'columns' => Utils::trans(['invoice_number', 'invoice_date', 'invoice_total', 'balance_due', 'due_date']),
|
||||||
@ -373,7 +382,6 @@ class ClientPortalController extends BaseController
|
|||||||
return $this->invoiceRepo->getClientRecurringDatatable($contact->id);
|
return $this->invoiceRepo->getClientRecurringDatatable($contact->id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public function paymentIndex()
|
public function paymentIndex()
|
||||||
{
|
{
|
||||||
if (! $contact = $this->getContact()) {
|
if (! $contact = $this->getContact()) {
|
||||||
@ -392,10 +400,9 @@ class ClientPortalController extends BaseController
|
|||||||
$data = [
|
$data = [
|
||||||
'color' => $color,
|
'color' => $color,
|
||||||
'account' => $account,
|
'account' => $account,
|
||||||
'clientFontUrl' => $account->getFontsUrl(),
|
|
||||||
'entityType' => ENTITY_PAYMENT,
|
'entityType' => ENTITY_PAYMENT,
|
||||||
'title' => trans('texts.payments'),
|
'title' => trans('texts.payments'),
|
||||||
'columns' => Utils::trans(['invoice', 'transaction_reference', 'method', 'payment_amount', 'payment_date', 'status'])
|
'columns' => Utils::trans(['invoice', 'transaction_reference', 'method', 'payment_amount', 'payment_date', 'status']),
|
||||||
];
|
];
|
||||||
|
|
||||||
return response()->view('public_list', $data);
|
return response()->view('public_list', $data);
|
||||||
@ -409,12 +416,24 @@ class ClientPortalController extends BaseController
|
|||||||
$payments = $this->paymentRepo->findForContact($contact->id, Input::get('sSearch'));
|
$payments = $this->paymentRepo->findForContact($contact->id, Input::get('sSearch'));
|
||||||
|
|
||||||
return Datatable::query($payments)
|
return Datatable::query($payments)
|
||||||
->addColumn('invoice_number', function ($model) { return $model->invitation_key ? link_to('/view/'.$model->invitation_key, $model->invoice_number)->toHtml() : $model->invoice_number; })
|
->addColumn('invoice_number', function ($model) {
|
||||||
->addColumn('transaction_reference', function ($model) { return $model->transaction_reference ? $model->transaction_reference : '<i>'.trans('texts.manual_entry').'</i>'; })
|
return $model->invitation_key ? link_to('/view/'.$model->invitation_key, $model->invoice_number)->toHtml() : $model->invoice_number;
|
||||||
->addColumn('payment_type', function ($model) { return ($model->payment_type && !$model->last4) ? $model->payment_type : ($model->account_gateway_id ? '<i>Online payment</i>' : ''); })
|
})
|
||||||
->addColumn('amount', function ($model) { return Utils::formatMoney($model->amount, $model->currency_id, $model->country_id); })
|
->addColumn('transaction_reference', function ($model) {
|
||||||
->addColumn('payment_date', function ($model) { return Utils::dateToString($model->payment_date); })
|
return $model->transaction_reference ? $model->transaction_reference : '<i>'.trans('texts.manual_entry').'</i>';
|
||||||
->addColumn('status', function ($model) { return $this->getPaymentStatusLabel($model); })
|
})
|
||||||
|
->addColumn('payment_type', function ($model) {
|
||||||
|
return ($model->payment_type && ! $model->last4) ? $model->payment_type : ($model->account_gateway_id ? '<i>Online payment</i>' : '');
|
||||||
|
})
|
||||||
|
->addColumn('amount', function ($model) {
|
||||||
|
return Utils::formatMoney($model->amount, $model->currency_id, $model->country_id);
|
||||||
|
})
|
||||||
|
->addColumn('payment_date', function ($model) {
|
||||||
|
return Utils::dateToString($model->payment_date);
|
||||||
|
})
|
||||||
|
->addColumn('status', function ($model) {
|
||||||
|
return $this->getPaymentStatusLabel($model);
|
||||||
|
})
|
||||||
->orderColumns('invoice_number', 'transaction_reference', 'payment_type', 'amount', 'payment_date')
|
->orderColumns('invoice_number', 'transaction_reference', 'payment_type', 'amount', 'payment_date')
|
||||||
->make();
|
->make();
|
||||||
}
|
}
|
||||||
@ -443,6 +462,7 @@ class ClientPortalController extends BaseController
|
|||||||
$class = 'default';
|
$class = 'default';
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
return "<h4><div class=\"label label-{$class}\">$label</div></h4>";
|
return "<h4><div class=\"label label-{$class}\">$label</div></h4>";
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -464,7 +484,6 @@ class ClientPortalController extends BaseController
|
|||||||
$data = [
|
$data = [
|
||||||
'color' => $color,
|
'color' => $color,
|
||||||
'account' => $account,
|
'account' => $account,
|
||||||
'clientFontUrl' => $account->getFontsUrl(),
|
|
||||||
'title' => trans('texts.quotes'),
|
'title' => trans('texts.quotes'),
|
||||||
'entityType' => ENTITY_QUOTE,
|
'entityType' => ENTITY_QUOTE,
|
||||||
'columns' => Utils::trans(['quote_number', 'quote_date', 'quote_total', 'due_date']),
|
'columns' => Utils::trans(['quote_number', 'quote_date', 'quote_total', 'due_date']),
|
||||||
@ -473,7 +492,6 @@ class ClientPortalController extends BaseController
|
|||||||
return response()->view('public_list', $data);
|
return response()->view('public_list', $data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public function quoteDatatable()
|
public function quoteDatatable()
|
||||||
{
|
{
|
||||||
if (! $contact = $this->getContact()) {
|
if (! $contact = $this->getContact()) {
|
||||||
@ -501,7 +519,6 @@ class ClientPortalController extends BaseController
|
|||||||
$data = [
|
$data = [
|
||||||
'color' => $color,
|
'color' => $color,
|
||||||
'account' => $account,
|
'account' => $account,
|
||||||
'clientFontUrl' => $account->getFontsUrl(),
|
|
||||||
'title' => trans('texts.credits'),
|
'title' => trans('texts.credits'),
|
||||||
'entityType' => ENTITY_CREDIT,
|
'entityType' => ENTITY_CREDIT,
|
||||||
'columns' => Utils::trans(['credit_date', 'credit_amount', 'credit_balance']),
|
'columns' => Utils::trans(['credit_date', 'credit_amount', 'credit_balance']),
|
||||||
@ -537,7 +554,6 @@ class ClientPortalController extends BaseController
|
|||||||
$data = [
|
$data = [
|
||||||
'color' => $color,
|
'color' => $color,
|
||||||
'account' => $account,
|
'account' => $account,
|
||||||
'clientFontUrl' => $account->getFontsUrl(),
|
|
||||||
'title' => trans('texts.documents'),
|
'title' => trans('texts.documents'),
|
||||||
'entityType' => ENTITY_DOCUMENT,
|
'entityType' => ENTITY_DOCUMENT,
|
||||||
'columns' => Utils::trans(['invoice_number', 'name', 'document_date', 'document_size']),
|
'columns' => Utils::trans(['invoice_number', 'name', 'document_date', 'document_size']),
|
||||||
@ -546,7 +562,6 @@ class ClientPortalController extends BaseController
|
|||||||
return response()->view('public_list', $data);
|
return response()->view('public_list', $data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public function documentDatatable()
|
public function documentDatatable()
|
||||||
{
|
{
|
||||||
if (! $contact = $this->getContact()) {
|
if (! $contact = $this->getContact()) {
|
||||||
@ -565,7 +580,8 @@ class ClientPortalController extends BaseController
|
|||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
private function getContact() {
|
private function getContact()
|
||||||
|
{
|
||||||
$contactKey = session('contact_key');
|
$contactKey = session('contact_key');
|
||||||
|
|
||||||
if (! $contactKey) {
|
if (! $contactKey) {
|
||||||
@ -581,14 +597,14 @@ class ClientPortalController extends BaseController
|
|||||||
return $contact;
|
return $contact;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getDocumentVFSJS($publicId, $name){
|
public function getDocumentVFSJS($publicId, $name)
|
||||||
|
{
|
||||||
if (! $contact = $this->getContact()) {
|
if (! $contact = $this->getContact()) {
|
||||||
return $this->returnError();
|
return $this->returnError();
|
||||||
}
|
}
|
||||||
|
|
||||||
$document = Document::scope($publicId, $contact->account_id)->first();
|
$document = Document::scope($publicId, $contact->account_id)->first();
|
||||||
|
|
||||||
|
|
||||||
if (! $document->isPDFEmbeddable()) {
|
if (! $document->isPDFEmbeddable()) {
|
||||||
return Response::view('error', ['error' => 'Image does not exist!'], 404);
|
return Response::view('error', ['error' => 'Image does not exist!'], 404);
|
||||||
}
|
}
|
||||||
@ -617,11 +633,13 @@ class ClientPortalController extends BaseController
|
|||||||
return $response;
|
return $response;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function canCreateZip(){
|
protected function canCreateZip()
|
||||||
|
{
|
||||||
return function_exists('gmp_init');
|
return function_exists('gmp_init');
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function getInvoiceZipDocuments($invoice, &$size=0){
|
protected function getInvoiceZipDocuments($invoice, &$size = 0)
|
||||||
|
{
|
||||||
$documents = $invoice->documents;
|
$documents = $invoice->documents;
|
||||||
|
|
||||||
foreach ($invoice->expenses as $expense) {
|
foreach ($invoice->expenses as $expense) {
|
||||||
@ -634,7 +652,9 @@ class ClientPortalController extends BaseController
|
|||||||
$maxSize = MAX_ZIP_DOCUMENTS_SIZE * 1000;
|
$maxSize = MAX_ZIP_DOCUMENTS_SIZE * 1000;
|
||||||
$toZip = [];
|
$toZip = [];
|
||||||
foreach ($documents as $document) {
|
foreach ($documents as $document) {
|
||||||
if($size + $document->size > $maxSize)break;
|
if ($size + $document->size > $maxSize) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
if (! empty($toZip[$document->name])) {
|
if (! empty($toZip[$document->name])) {
|
||||||
// This name is taken
|
// This name is taken
|
||||||
@ -654,10 +674,8 @@ class ClientPortalController extends BaseController
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
} else {
|
||||||
else{
|
|
||||||
$toZip[$document->name] = $document;
|
$toZip[$document->name] = $document;
|
||||||
$size += $document->size;
|
$size += $document->size;
|
||||||
}
|
}
|
||||||
@ -666,7 +684,8 @@ class ClientPortalController extends BaseController
|
|||||||
return $toZip;
|
return $toZip;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getInvoiceDocumentsZip($invitationKey){
|
public function getInvoiceDocumentsZip($invitationKey)
|
||||||
|
{
|
||||||
if (! $invitation = $this->invoiceRepo->findInvoiceByInvitation($invitationKey)) {
|
if (! $invitation = $this->invoiceRepo->findInvoiceByInvitation($invitationKey)) {
|
||||||
return $this->returnError();
|
return $this->returnError();
|
||||||
}
|
}
|
||||||
@ -682,16 +701,18 @@ class ClientPortalController extends BaseController
|
|||||||
}
|
}
|
||||||
|
|
||||||
$zip = new ZipArchive($invitation->account->name.' Invoice '.$invoice->invoice_number.'.zip');
|
$zip = new ZipArchive($invitation->account->name.' Invoice '.$invoice->invoice_number.'.zip');
|
||||||
|
|
||||||
return Response::stream(function () use ($toZip, $zip) {
|
return Response::stream(function () use ($toZip, $zip) {
|
||||||
foreach ($toZip as $name => $document) {
|
foreach ($toZip as $name => $document) {
|
||||||
$fileStream = $document->getStream();
|
$fileStream = $document->getStream();
|
||||||
if ($fileStream) {
|
if ($fileStream) {
|
||||||
$zip->init_file_stream_transfer($name, $document->size, ['time' => $document->created_at->timestamp]);
|
$zip->init_file_stream_transfer($name, $document->size, ['time' => $document->created_at->timestamp]);
|
||||||
while ($buffer = fread($fileStream, 256000))$zip->stream_file_part($buffer);
|
while ($buffer = fread($fileStream, 256000)) {
|
||||||
|
$zip->stream_file_part($buffer);
|
||||||
|
}
|
||||||
fclose($fileStream);
|
fclose($fileStream);
|
||||||
$zip->complete_file_stream();
|
$zip->complete_file_stream();
|
||||||
}
|
} else {
|
||||||
else{
|
|
||||||
$zip->add_file($name, $document->getRaw());
|
$zip->add_file($name, $document->getRaw());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -699,7 +720,8 @@ class ClientPortalController extends BaseController
|
|||||||
}, 200);
|
}, 200);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getDocument($invitationKey, $publicId){
|
public function getDocument($invitationKey, $publicId)
|
||||||
|
{
|
||||||
if (! $invitation = $this->invoiceRepo->findInvoiceByInvitation($invitationKey)) {
|
if (! $invitation = $this->invoiceRepo->findInvoiceByInvitation($invitationKey)) {
|
||||||
return $this->returnError();
|
return $this->returnError();
|
||||||
}
|
}
|
||||||
@ -740,8 +762,6 @@ class ClientPortalController extends BaseController
|
|||||||
'contact' => $contact,
|
'contact' => $contact,
|
||||||
'color' => $account->primary_color ? $account->primary_color : '#0b4d78',
|
'color' => $account->primary_color ? $account->primary_color : '#0b4d78',
|
||||||
'client' => $client,
|
'client' => $client,
|
||||||
'clientViewCSS' => $account->clientViewCSS(),
|
|
||||||
'clientFontUrl' => $account->getFontsUrl(),
|
|
||||||
'paymentMethods' => $customer ? $customer->payment_methods : false,
|
'paymentMethods' => $customer ? $customer->payment_methods : false,
|
||||||
'gateway' => $account->getTokenGateway(),
|
'gateway' => $account->getTokenGateway(),
|
||||||
'title' => trans('texts.payment_methods'),
|
'title' => trans('texts.payment_methods'),
|
||||||
@ -800,7 +820,8 @@ class ClientPortalController extends BaseController
|
|||||||
return redirect()->to($client->account->enable_client_portal_dashboard ? '/client/dashboard' : '/client/payment_methods/');
|
return redirect()->to($client->account->enable_client_portal_dashboard ? '/client/dashboard' : '/client/payment_methods/');
|
||||||
}
|
}
|
||||||
|
|
||||||
public function setDefaultPaymentMethod(){
|
public function setDefaultPaymentMethod()
|
||||||
|
{
|
||||||
if (! $contact = $this->getContact()) {
|
if (! $contact = $this->getContact()) {
|
||||||
return $this->returnError();
|
return $this->returnError();
|
||||||
}
|
}
|
||||||
@ -839,7 +860,8 @@ class ClientPortalController extends BaseController
|
|||||||
Utils::logError("Payment Method Error [{$type}]: " . ($exception ? Utils::getErrorString($exception) : $message), 'PHP', true);
|
Utils::logError("Payment Method Error [{$type}]: " . ($exception ? Utils::getErrorString($exception) : $message), 'PHP', true);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function setAutoBill(){
|
public function setAutoBill()
|
||||||
|
{
|
||||||
if (! $contact = $this->getContact()) {
|
if (! $contact = $this->getContact()) {
|
||||||
return $this->returnError();
|
return $this->returnError();
|
||||||
}
|
}
|
||||||
|
@ -1,11 +1,13 @@
|
|||||||
<?php namespace App\Http\Controllers;
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Controllers;
|
||||||
|
|
||||||
use Illuminate\Foundation\Bus\DispatchesJobs;
|
use Illuminate\Foundation\Bus\DispatchesJobs;
|
||||||
use Illuminate\Routing\Controller as BaseController;
|
|
||||||
use Illuminate\Foundation\Validation\ValidatesRequests;
|
use Illuminate\Foundation\Validation\ValidatesRequests;
|
||||||
|
use Illuminate\Routing\Controller as BaseController;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class Controller
|
* Class Controller.
|
||||||
*/
|
*/
|
||||||
abstract class Controller extends BaseController
|
abstract class Controller extends BaseController
|
||||||
{
|
{
|
||||||
|
@ -1,19 +1,21 @@
|
|||||||
<?php namespace App\Http\Controllers;
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Controllers;
|
||||||
|
|
||||||
|
use App\Http\Requests\CreateCreditRequest;
|
||||||
|
use App\Http\Requests\CreditRequest;
|
||||||
|
use App\Http\Requests\UpdateCreditRequest;
|
||||||
|
use App\Models\Client;
|
||||||
|
use App\Models\Credit;
|
||||||
|
use App\Ninja\Datatables\CreditDatatable;
|
||||||
|
use App\Ninja\Repositories\CreditRepository;
|
||||||
|
use App\Services\CreditService;
|
||||||
use Input;
|
use Input;
|
||||||
use Redirect;
|
use Redirect;
|
||||||
use Session;
|
use Session;
|
||||||
use URL;
|
use URL;
|
||||||
use Utils;
|
use Utils;
|
||||||
use View;
|
use View;
|
||||||
use App\Models\Client;
|
|
||||||
use App\Models\Credit;
|
|
||||||
use App\Services\CreditService;
|
|
||||||
use App\Ninja\Repositories\CreditRepository;
|
|
||||||
use App\Http\Requests\UpdateCreditRequest;
|
|
||||||
use App\Http\Requests\CreateCreditRequest;
|
|
||||||
use App\Http\Requests\CreditRequest;
|
|
||||||
use App\Ninja\Datatables\CreditDatatable;
|
|
||||||
|
|
||||||
class CreditController extends BaseController
|
class CreditController extends BaseController
|
||||||
{
|
{
|
||||||
@ -70,7 +72,7 @@ class CreditController extends BaseController
|
|||||||
|
|
||||||
$credit->credit_date = Utils::fromSqlDate($credit->credit_date);
|
$credit->credit_date = Utils::fromSqlDate($credit->credit_date);
|
||||||
|
|
||||||
$data = array(
|
$data = [
|
||||||
'client' => $credit->client,
|
'client' => $credit->client,
|
||||||
'clientPublicId' => $credit->client->public_id,
|
'clientPublicId' => $credit->client->public_id,
|
||||||
'credit' => $credit,
|
'credit' => $credit,
|
||||||
@ -78,7 +80,7 @@ class CreditController extends BaseController
|
|||||||
'url' => 'credits/'.$publicId,
|
'url' => 'credits/'.$publicId,
|
||||||
'title' => 'Edit Credit',
|
'title' => 'Edit Credit',
|
||||||
'clients' => null,
|
'clients' => null,
|
||||||
);
|
];
|
||||||
|
|
||||||
return View::make('credits.edit', $data);
|
return View::make('credits.edit', $data);
|
||||||
}
|
}
|
||||||
|
@ -1,9 +1,10 @@
|
|||||||
<?php namespace App\Http\Controllers;
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Controllers;
|
||||||
|
|
||||||
use Auth;
|
|
||||||
use DB;
|
|
||||||
use App\Ninja\Repositories\DashboardRepository;
|
use App\Ninja\Repositories\DashboardRepository;
|
||||||
use App\Ninja\Transformers\ActivityTransformer;
|
use App\Ninja\Transformers\ActivityTransformer;
|
||||||
|
use Auth;
|
||||||
|
|
||||||
class DashboardApiController extends BaseAPIController
|
class DashboardApiController extends BaseAPIController
|
||||||
{
|
{
|
||||||
|
@ -1,17 +1,16 @@
|
|||||||
<?php namespace App\Http\Controllers;
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Controllers;
|
||||||
|
|
||||||
use stdClass;
|
|
||||||
use Auth;
|
|
||||||
use DB;
|
|
||||||
use View;
|
|
||||||
use Utils;
|
|
||||||
use App\Models\Client;
|
use App\Models\Client;
|
||||||
use App\Models\Invoice;
|
use App\Models\Expense;
|
||||||
use App\Models\Payment;
|
|
||||||
use App\Ninja\Repositories\DashboardRepository;
|
use App\Ninja\Repositories\DashboardRepository;
|
||||||
|
use Auth;
|
||||||
|
use Utils;
|
||||||
|
use View;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class DashboardController
|
* Class DashboardController.
|
||||||
*/
|
*/
|
||||||
class DashboardController extends BaseController
|
class DashboardController extends BaseController
|
||||||
{
|
{
|
||||||
@ -40,7 +39,7 @@ class DashboardController extends BaseController
|
|||||||
$pastDue = $dashboardRepo->pastDue($accountId, $userId, $viewAll);
|
$pastDue = $dashboardRepo->pastDue($accountId, $userId, $viewAll);
|
||||||
$upcoming = $dashboardRepo->upcoming($accountId, $userId, $viewAll);
|
$upcoming = $dashboardRepo->upcoming($accountId, $userId, $viewAll);
|
||||||
$payments = $dashboardRepo->payments($accountId, $userId, $viewAll);
|
$payments = $dashboardRepo->payments($accountId, $userId, $viewAll);
|
||||||
$expenses = $dashboardRepo->expenses($accountId, $userId, $viewAll);
|
$expenses = $dashboardRepo->expenses($account, $userId, $viewAll);
|
||||||
$tasks = $dashboardRepo->tasks($accountId, $userId, $viewAll);
|
$tasks = $dashboardRepo->tasks($accountId, $userId, $viewAll);
|
||||||
|
|
||||||
$showBlueVinePromo = $user->is_admin
|
$showBlueVinePromo = $user->is_admin
|
||||||
@ -60,26 +59,6 @@ class DashboardController extends BaseController
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// check if the account has multiple curencies
|
|
||||||
$currencyIds = $account->currency_id ? [$account->currency_id] : [DEFAULT_CURRENCY];
|
|
||||||
$data = Client::scope()
|
|
||||||
->withArchived()
|
|
||||||
->distinct()
|
|
||||||
->get(['currency_id'])
|
|
||||||
->toArray();
|
|
||||||
|
|
||||||
array_map(function ($item) use (&$currencyIds) {
|
|
||||||
$currencyId = intval($item['currency_id']);
|
|
||||||
if ($currencyId && ! in_array($currencyId, $currencyIds)) {
|
|
||||||
$currencyIds[] = $currencyId;
|
|
||||||
}
|
|
||||||
}, $data);
|
|
||||||
|
|
||||||
$currencies = [];
|
|
||||||
foreach ($currencyIds as $currencyId) {
|
|
||||||
$currencies[$currencyId] = Utils::getFromCache($currencyId, 'currencies')->code;
|
|
||||||
}
|
|
||||||
|
|
||||||
$data = [
|
$data = [
|
||||||
'account' => $user->account,
|
'account' => $user->account,
|
||||||
'user' => $user,
|
'user' => $user,
|
||||||
@ -95,7 +74,7 @@ class DashboardController extends BaseController
|
|||||||
'title' => trans('texts.dashboard'),
|
'title' => trans('texts.dashboard'),
|
||||||
'hasQuotes' => $hasQuotes,
|
'hasQuotes' => $hasQuotes,
|
||||||
'showBreadcrumbs' => false,
|
'showBreadcrumbs' => false,
|
||||||
'currencies' => $currencies,
|
'currencies' => $this->getCurrencyCodes(),
|
||||||
'expenses' => $expenses,
|
'expenses' => $expenses,
|
||||||
'tasks' => $tasks,
|
'tasks' => $tasks,
|
||||||
'showBlueVinePromo' => $showBlueVinePromo,
|
'showBlueVinePromo' => $showBlueVinePromo,
|
||||||
@ -125,6 +104,47 @@ class DashboardController extends BaseController
|
|||||||
return View::make('dashboard', $data);
|
return View::make('dashboard', $data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private function getCurrencyCodes()
|
||||||
|
{
|
||||||
|
$account = Auth::user()->account;
|
||||||
|
$currencyIds = $account->currency_id ? [$account->currency_id] : [DEFAULT_CURRENCY];
|
||||||
|
|
||||||
|
// get client/invoice currencies
|
||||||
|
$data = Client::scope()
|
||||||
|
->withArchived()
|
||||||
|
->distinct()
|
||||||
|
->get(['currency_id'])
|
||||||
|
->toArray();
|
||||||
|
|
||||||
|
array_map(function ($item) use (&$currencyIds) {
|
||||||
|
$currencyId = intval($item['currency_id']);
|
||||||
|
if ($currencyId && ! in_array($currencyId, $currencyIds)) {
|
||||||
|
$currencyIds[] = $currencyId;
|
||||||
|
}
|
||||||
|
}, $data);
|
||||||
|
|
||||||
|
// get expense currencies
|
||||||
|
$data = Expense::scope()
|
||||||
|
->withArchived()
|
||||||
|
->distinct()
|
||||||
|
->get(['expense_currency_id'])
|
||||||
|
->toArray();
|
||||||
|
|
||||||
|
array_map(function ($item) use (&$currencyIds) {
|
||||||
|
$currencyId = intval($item['expense_currency_id']);
|
||||||
|
if ($currencyId && ! in_array($currencyId, $currencyIds)) {
|
||||||
|
$currencyIds[] = $currencyId;
|
||||||
|
}
|
||||||
|
}, $data);
|
||||||
|
|
||||||
|
$currencies = [];
|
||||||
|
foreach ($currencyIds as $currencyId) {
|
||||||
|
$currencies[$currencyId] = Utils::getFromCache($currencyId, 'currencies')->code;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $currencies;
|
||||||
|
}
|
||||||
|
|
||||||
public function chartData($groupBy, $startDate, $endDate, $currencyCode, $includeExpenses)
|
public function chartData($groupBy, $startDate, $endDate, $currencyCode, $includeExpenses)
|
||||||
{
|
{
|
||||||
$includeExpenses = filter_var($includeExpenses, FILTER_VALIDATE_BOOLEAN);
|
$includeExpenses = filter_var($includeExpenses, FILTER_VALIDATE_BOOLEAN);
|
||||||
|
@ -1,12 +1,14 @@
|
|||||||
<?php namespace App\Http\Controllers;
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Controllers;
|
||||||
|
|
||||||
|
use App\Http\Requests\CreateDocumentRequest;
|
||||||
|
use App\Http\Requests\DocumentRequest;
|
||||||
use App\Models\Document;
|
use App\Models\Document;
|
||||||
use App\Ninja\Repositories\DocumentRepository;
|
use App\Ninja\Repositories\DocumentRepository;
|
||||||
use App\Http\Requests\DocumentRequest;
|
|
||||||
use App\Http\Requests\CreateDocumentRequest;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class DocumentAPIController
|
* Class DocumentAPIController.
|
||||||
*/
|
*/
|
||||||
class DocumentAPIController extends BaseAPIController
|
class DocumentAPIController extends BaseAPIController
|
||||||
{
|
{
|
||||||
@ -53,7 +55,6 @@ class DocumentAPIController extends BaseAPIController
|
|||||||
$documents = Document::scope();
|
$documents = Document::scope();
|
||||||
|
|
||||||
return $this->listResponse($documents);
|
return $this->listResponse($documents);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -65,11 +66,12 @@ class DocumentAPIController extends BaseAPIController
|
|||||||
{
|
{
|
||||||
$document = $request->entity();
|
$document = $request->entity();
|
||||||
|
|
||||||
if(array_key_exists($document->type, Document::$types))
|
if (array_key_exists($document->type, Document::$types)) {
|
||||||
return DocumentController::getDownloadResponse($document);
|
return DocumentController::getDownloadResponse($document);
|
||||||
else
|
} else {
|
||||||
return $this->errorResponse(['error' => 'Invalid mime type'], 400);
|
return $this->errorResponse(['error' => 'Invalid mime type'], 400);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @SWG\Post(
|
* @SWG\Post(
|
||||||
@ -94,7 +96,6 @@ class DocumentAPIController extends BaseAPIController
|
|||||||
*/
|
*/
|
||||||
public function store(CreateDocumentRequest $request)
|
public function store(CreateDocumentRequest $request)
|
||||||
{
|
{
|
||||||
|
|
||||||
$document = $this->documentRepo->upload($request->all());
|
$document = $this->documentRepo->upload($request->all());
|
||||||
|
|
||||||
return $this->itemResponse($document);
|
return $this->itemResponse($document);
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user