Merge branch 'v5-develop' into v5-2804-braintree

This commit is contained in:
David Bomba 2021-05-11 21:14:54 +10:00 committed by GitHub
commit 6bfaa11f59
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
53 changed files with 107770 additions and 107447 deletions

View File

@ -160,4 +160,13 @@ abstract class QueryFilters
return $this->builder->whereClientId(auth('contact')->user()->client->id);
}
}
public function created_at($value)
{
$created_at = $value ? $value : 0;
$created_at = date('Y-m-d H:i:s', $value);
return $this->builder->where('created_at', '>=', $created_at);
}
}

View File

@ -207,6 +207,9 @@ class LoginController extends BaseController
$cu = CompanyUser::query()
->where('user_id', auth()->user()->id);
if(!$cu->exists())
return response()->json(['message' => 'User not linked to any companies'], 403);
$cu->first()->account->companies->each(function ($company) use($cu, $request){
if($company->tokens()->where('is_system', true)->count() == 0)

View File

@ -31,4 +31,9 @@ class ContactHashLoginController extends Controller
{
return redirect('/client/login');
}
public function errorPage()
{
return render('generic.error', ['title' => session()->get('title'), 'notification' => session()->get('notification')]);
}
}

View File

@ -480,12 +480,9 @@ class CompanyController extends BaseController
if ($company_count == 1) {
$company->company_users->each(function ($company_user) {
$company_user->user->forceDelete();
$company_user->forceDelete();
});
// if (Ninja::isHosted()) {
// RefundCancelledAccount::dispatchNow($account);
// }
$account->delete();
LightLogs::create(new AccountDeleted())
@ -493,6 +490,11 @@ class CompanyController extends BaseController
->batch();
} else {
$company_id = $company->id;
$company->company_users->each(function ($company_user){
$company_user->forceDelete();
});
$company->delete();
//If we are deleting the default companies, we'll need to make a new company the default.

View File

@ -31,15 +31,15 @@ class CheckClientExistence
$multiple_contacts = ClientContact::query()
->where('email', auth('contact')->user()->email)
->whereNotNull('email')
->whereNull('deleted_at')
->distinct('company_id')
->distinct('email')
->whereNotNull('company_id')
->whereHas('client', function ($query) {
return $query->whereNull('deleted_at');
})
->get();
nlog($multiple_contacts);
if (count($multiple_contacts) == 0) {
Auth::logout();

View File

@ -26,7 +26,7 @@ class ClientPortalEnabled
public function handle($request, Closure $next)
{
if (auth()->user()->client->getSetting('enable_client_portal') === false) {
return redirect()->to('client/dashboard');
return redirect()->route('client.error')->with(['title' => ctrans('texts.client_portal'), 'notification' => 'This section of the app has been disabled by the administrator.']);
}
return $next($request);

View File

@ -52,8 +52,7 @@ class QueryLogging
$timeEnd = microtime(true);
$time = $timeEnd - $timeStart;
nlog($request->method().' - '.urldecode($request->url()).": $count queries - ".$time);
//nlog($request->method().' - '.urldecode($request->url()).": $count queries - ".$time);
// if($count > 50)
//nlog($queries);

View File

@ -43,7 +43,7 @@ class ArchivedClientActivity implements ShouldQueue
$fields = new stdClass;
$user_id = $event->event_vars['user_id'] ?: $event->client->user_id;
$user_id = array_key_exists('user_id', $event->event_vars) ? $event->event_vars['user_id'] : $event->client->user_id;
$fields->client_id = $event->client->id;
$fields->user_id = $user_id;

View File

@ -45,7 +45,7 @@ class ClientUpdatedActivity implements ShouldQueue
$fields = new stdClass;
$user_id = $event->event_vars['user_id'] ?: $event->client->user_id;
$user_id = array_key_exists('user_id', $event->event_vars) ? $event->event_vars['user_id'] : $event->client->user_id;
$fields->client_id = $client->id;
$fields->user_id = $user_id;

View File

@ -43,7 +43,7 @@ class CreatedClientActivity implements ShouldQueue
$fields = new stdClass;
$user_id = $event->event_vars['user_id'] ?: $event->client->user_id;
$user_id = array_key_exists('user_id', $event->event_vars) ? $event->event_vars['user_id'] : $event->client->user_id;
$fields->client_id = $event->client->id;
$fields->user_id = $user_id;

View File

@ -43,7 +43,7 @@ class CreatedCreditActivity implements ShouldQueue
$fields = new stdClass;
$user_id = $event->event_vars['user_id'] ?: $event->credit->user_id;
$user_id = array_key_exists('user_id', $event->event_vars) ? $event->event_vars['user_id'] : $event->credit->user_id;
$fields->credit_id = $event->credit->id;
$fields->user_id = $user_id;

View File

@ -44,7 +44,7 @@ class CreatedExpenseActivity implements ShouldQueue
$fields = new stdClass;
$user_id = $event->event_vars['user_id'] ?: $event->expense->user_id;
$user_id = array_key_exists('user_id', $event->event_vars) ? $event->event_vars['user_id'] : $event->expense->user_id;
$fields->expense_id = $event->expense->id;
$fields->user_id = $user_id;

View File

@ -43,7 +43,7 @@ class CreatedQuoteActivity implements ShouldQueue
$fields = new stdClass;
$user_id = $event->event_vars['user_id'] ?: $event->quote->user_id;
$user_id = array_key_exists('user_id', $event->event_vars) ? $event->event_vars['user_id'] : $event->quote->user_id;
$fields->quote_id = $event->quote->id;
$fields->client_id = $event->quote->client_id;

View File

@ -43,7 +43,7 @@ class CreatedSubscriptionActivity implements ShouldQueue
$fields = new stdClass;
$user_id = $event->event_vars['user_id'] ?: $event->subscription->user_id;
$user_id = array_key_exists('user_id', $event->event_vars) ? $event->event_vars['user_id'] : $event->subscription->user_id;
$fields->subscription_id = $event->subscription->id;
$fields->user_id = $user_id;

View File

@ -43,7 +43,7 @@ class CreatedTaskActivity implements ShouldQueue
$fields = new stdClass;
$user_id = $event->event_vars['user_id'] ?: $event->task->user_id;
$user_id = array_key_exists('user_id', $event->event_vars) ? $event->event_vars['user_id'] : $event->task->user_id;
$fields->task_id = $event->task->id;
$fields->user_id = $user_id;

View File

@ -43,7 +43,7 @@ class CreatedVendorActivity implements ShouldQueue
$fields = new stdClass;
$user_id = $event->event_vars['user_id'] ?: $event->vendor->user_id;
$user_id = array_key_exists('user_id', $event->event_vars) ? $event->event_vars['user_id'] : $event->vendor->user_id;
$fields->vendor_id = $event->vendor->id;
$fields->user_id = $user_id;

View File

@ -43,7 +43,7 @@ class CreditArchivedActivity implements ShouldQueue
$fields = new stdClass;
$user_id = $event->event_vars['user_id'] ?: $event->credit->user_id;
$user_id = array_key_exists('user_id', $event->event_vars) ? $event->event_vars['user_id'] : $event->credit->user_id;
$fields->payment_id = $event->credit->id;
$fields->client_id = $event->credit->client_id;

View File

@ -43,7 +43,7 @@ class DeleteClientActivity implements ShouldQueue
$fields = new stdClass;
$user_id = $event->event_vars['user_id'] ?: $event->client->user_id;
$user_id = array_key_exists('user_id', $event->event_vars) ? $event->event_vars['user_id'] : $event->client->user_id;
$fields->client_id = $event->client->id;
$fields->user_id = $user_id;

View File

@ -43,7 +43,7 @@ class DeleteCreditActivity implements ShouldQueue
$fields = new stdClass;
$user_id = $event->event_vars['user_id'] ?: $event->credit->user_id;
$user_id = array_key_exists('user_id', $event->event_vars) ? $event->event_vars['user_id'] : $event->credit->user_id;
$fields->client_id = $event->credit->client_id;
$fields->credit_id = $event->credit->id;

View File

@ -45,7 +45,7 @@ class ExpenseArchivedActivity implements ShouldQueue
$fields = new stdClass;
$user_id = $event->event_vars['user_id'] ?: $event->expense->user_id;
$user_id = array_key_exists('user_id', $event->event_vars) ? $event->event_vars['user_id'] : $event->expense->user_id;
$fields->expense_id = $expense->id;
$fields->user_id = $user_id;

View File

@ -43,7 +43,7 @@ class ExpenseDeletedActivity implements ShouldQueue
$fields = new stdClass;
$user_id = $event->event_vars['user_id'] ?: $event->expense->user_id;
$user_id = array_key_exists('user_id', $event->event_vars) ? $event->event_vars['user_id'] : $event->expense->user_id;
$fields->expense_id = $event->expense->id;
$fields->user_id = $user_id;

View File

@ -43,7 +43,7 @@ class ExpenseRestoredActivity implements ShouldQueue
$fields = new stdClass;
$user_id = $event->event_vars['user_id'] ?: $event->expense->user_id;
$user_id = array_key_exists('user_id', $event->event_vars) ? $event->event_vars['user_id'] : $event->expense->user_id;
$fields->expense_id = $event->expense->id;
$fields->user_id = $user_id;

View File

@ -43,7 +43,7 @@ class ExpenseUpdatedActivity implements ShouldQueue
$expense = $event->expense;
$user_id = $event->event_vars['user_id'] ?: $event->expense->user_id;
$user_id = array_key_exists('user_id', $event->event_vars) ? $event->event_vars['user_id'] : $event->expense->user_id;
$fields = new stdClass;

View File

@ -48,7 +48,7 @@ class PaymentArchivedActivity implements ShouldQueue
$fields = new stdClass;
$user_id = $event->event_vars['user_id'] ?: $event->payment->user_id;
$user_id = array_key_exists('user_id', $event->event_vars) ? $event->event_vars['user_id'] : $event->payment->user_id;
$fields->payment_id = $payment->id;
$fields->client_id = $payment->client_id;

View File

@ -43,7 +43,7 @@ class PaymentCreatedActivity implements ShouldQueue
$payment = $event->payment;
$user_id = $event->event_vars['user_id'] ?: $event->payment->user_id;
$user_id = array_key_exists('user_id', $event->event_vars) ? $event->event_vars['user_id'] : $event->payment->user_id;
$invoices = $payment->invoices;

View File

@ -43,7 +43,7 @@ class PaymentDeletedActivity implements ShouldQueue
$payment = $event->payment;
$user_id = $event->event_vars['user_id'] ?: $event->payment->user_id;
$user_id = array_key_exists('user_id', $event->event_vars) ? $event->event_vars['user_id'] : $event->payment->user_id;
$invoices = $payment->invoices;

View File

@ -43,7 +43,7 @@ class PaymentRefundedActivity implements ShouldQueue
$fields = new stdClass;
$user_id = $event->event_vars['user_id'] ?: $event->payment->user_id;
$user_id = array_key_exists('user_id', $event->event_vars) ? $event->event_vars['user_id'] : $event->payment->user_id;
$fields->client_id = $event->payment->id;
$fields->client_id = $event->payment->client_id;

View File

@ -48,7 +48,7 @@ class PaymentUpdatedActivity implements ShouldQueue
$fields = new stdClass;
$user_id = $event->event_vars['user_id'] ?: $event->payment->user_id;
$user_id = array_key_exists('user_id', $event->event_vars) ? $event->event_vars['user_id'] : $event->payment->user_id;
$fields->payment_id = $payment->id;
$fields->client_id = $payment->client_id;

View File

@ -43,7 +43,7 @@ class PaymentVoidedActivity implements ShouldQueue
$fields = new stdClass;
$user_id = $event->event_vars['user_id'] ?: $event->payment->user_id;
$user_id = array_key_exists('user_id', $event->event_vars) ? $event->event_vars['user_id'] : $event->payment->user_id;
$fields->client_id = $event->payment->id;
$fields->user_id = $user_id;

View File

@ -45,7 +45,7 @@ class QuoteUpdatedActivity implements ShouldQueue
$fields = new stdClass;
$user_id = $event->event_vars['user_id'] ?: $event->quote->user_id;
$user_id = array_key_exists('user_id', $event->event_vars) ? $event->event_vars['user_id'] : $event->quote->user_id;
$fields->quote_id = $quote->id;
$fields->client_id = $quote->client_id;

View File

@ -43,7 +43,7 @@ class RestoreClientActivity implements ShouldQueue
$fields = new stdClass;
$user_id = $event->event_vars['user_id'] ?: $event->client->user_id;
$user_id = array_key_exists('user_id', $event->event_vars) ? $event->event_vars['user_id'] : $event->client->user_id;
$fields->client_id = $event->client->id;
$fields->user_id = $user_id;

View File

@ -45,7 +45,7 @@ class SubscriptionArchivedActivity implements ShouldQueue
$fields = new stdClass;
$user_id = $event->event_vars['user_id'] ?: $event->subscription->user_id;
$user_id = array_key_exists('user_id', $event->event_vars) ? $event->event_vars['user_id'] : $event->subscription->user_id;
$fields->subscription_id = $subscription->id;
$fields->user_id = $user_id;

View File

@ -43,7 +43,7 @@ class SubscriptionDeletedActivity implements ShouldQueue
$fields = new stdClass;
$user_id = $event->event_vars['user_id'] ?: $event->subscription->user_id;
$user_id = array_key_exists('user_id', $event->event_vars) ? $event->event_vars['user_id'] : $event->subscription->user_id;
$fields->subscription_id = $event->subscription->id;
$fields->user_id = $user_id;

View File

@ -43,7 +43,7 @@ class SubscriptionRestoredActivity implements ShouldQueue
$fields = new stdClass;
$user_id = $event->event_vars['user_id'] ?: $event->subscription->user_id;
$user_id = array_key_exists('user_id', $event->event_vars) ? $event->event_vars['user_id'] : $event->subscription->user_id;
$fields->subscription_id = $event->subscription->id;
$fields->user_id = $user_id;

View File

@ -45,7 +45,7 @@ class SubscriptionUpdatedActivity implements ShouldQueue
$fields = new stdClass;
$user_id = $event->event_vars['user_id'] ?: $event->subscription->user_id;
$user_id = array_key_exists('user_id', $event->event_vars) ? $event->event_vars['user_id'] : $event->subscription->user_id;
$fields->subscription_id = $subscription->id;
$fields->user_id = $user_id;

View File

@ -45,7 +45,7 @@ class TaskArchivedActivity implements ShouldQueue
$fields = new stdClass;
$user_id = $event->event_vars['user_id'] ?: $event->task->user_id;
$user_id = array_key_exists('user_id', $event->event_vars) ? $event->event_vars['user_id'] : $event->task->user_id;
$fields->task_id = $task->id;
$fields->user_id = $user_id;

View File

@ -43,7 +43,7 @@ class TaskDeletedActivity implements ShouldQueue
$fields = new stdClass;
$user_id = $event->event_vars['user_id'] ?: $event->task->user_id;
$user_id = array_key_exists('user_id', $event->event_vars) ? $event->event_vars['user_id'] : $event->task->user_id;
$fields->task_id = $event->task->id;
$fields->user_id = $user_id;

View File

@ -43,7 +43,7 @@ class TaskRestoredActivity implements ShouldQueue
$fields = new stdClass;
$user_id = $event->event_vars['user_id'] ?: $event->task->user_id;
$user_id = array_key_exists('user_id', $event->event_vars) ? $event->event_vars['user_id'] : $event->task->user_id;
$fields->task_id = $event->task->id;
$fields->user_id = $user_id;

View File

@ -45,7 +45,7 @@ class TaskUpdatedActivity implements ShouldQueue
$fields = new stdClass;
$user_id = $event->event_vars['user_id'] ?: $event->task->user_id;
$user_id = array_key_exists('user_id', $event->event_vars) ? $event->event_vars['user_id'] : $event->task->user_id;
$fields->task_id = $task->id;
$fields->user_id = $user_id;

View File

@ -43,7 +43,7 @@ class UpdatedCreditActivity implements ShouldQueue
$fields = new stdClass;
$user_id = $event->event_vars['user_id'] ?: $event->credit->user_id;
$user_id = array_key_exists('user_id', $event->event_vars) ? $event->event_vars['user_id'] : $event->credit->user_id;
$fields->credit_id = $event->credit->id;
$fields->client_id = $event->credit->client_id;

View File

@ -45,7 +45,7 @@ class VendorArchivedActivity implements ShouldQueue
$fields = new stdClass;
$user_id = $event->event_vars['user_id'] ?: $event->vendor->user_id;
$user_id = array_key_exists('user_id', $event->event_vars) ? $event->event_vars['user_id'] : $event->vendor->user_id;
$fields->vendor_id = $vendor->id;
$fields->user_id = $user_id;

View File

@ -43,7 +43,7 @@ class VendorDeletedActivity implements ShouldQueue
$fields = new stdClass;
$user_id = $event->event_vars['user_id'] ?: $event->vendor->user_id;
$user_id = array_key_exists('user_id', $event->event_vars) ? $event->event_vars['user_id'] : $event->vendor->user_id;
$fields->vendor_id = $event->vendor->id;
$fields->user_id = $user_id;

View File

@ -43,7 +43,7 @@ class VendorRestoredActivity implements ShouldQueue
$fields = new stdClass;
$user_id = $event->event_vars['user_id'] ?: $event->vendor->user_id;
$user_id = array_key_exists('user_id', $event->event_vars) ? $event->event_vars['user_id'] : $event->vendor->user_id;
$fields->vendor_id = $event->vendor->id;
$fields->user_id = $user_id;

View File

@ -45,7 +45,7 @@ class VendorUpdatedActivity implements ShouldQueue
$fields = new stdClass;
$user_id = $event->event_vars['user_id'] ?: $event->vendor->user_id;
$user_id = array_key_exists('user_id', $event->event_vars) ? $event->event_vars['user_id'] : $event->vendor->user_id;
$fields->vendor_id = $vendor->id;
$fields->user_id = $user_id;

View File

@ -17,6 +17,7 @@ use App\Http\Requests\Payments\PaymentWebhookRequest;
use App\Http\Requests\Request;
use App\Jobs\Util\SystemLogger;
use App\Models\ClientGatewayToken;
use App\Models\CompanyGateway;
use App\Models\GatewayType;
use App\Models\Payment;
use App\Models\PaymentHash;

View File

@ -30,7 +30,7 @@ const RESOURCES = {
"favicon.png": "dca91c54388f52eded692718d5a98b8b",
"version.json": "7069906ad6cc610c71d600bca7105f49",
"manifest.json": "ce1b79950eb917ea619a0a30da27c6a3",
"main.dart.js": "d9423588e1972cdda4d056651bf3f84f",
"main.dart.js": "52d9e2882b379f152b6e946271b4b266",
"favicon.ico": "51636d3a390451561744c42188ccd628",
"/": "23224b5e03519aaa87594403d54412cf"
};

110576
public/main.dart.js vendored

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

104480
public/main.foss.dart.js vendored

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -23,7 +23,7 @@
<div class="rounded bg-white shadow-xs">
<div class="py-1">
@foreach($multiple_contacts as $contact)
<a href="{{ route('client.switch_company', $contact->hashed_id) }}" class="block px-4 py-2 text-sm leading-5 text-gray-700 hover:bg-gray-100 hover:text-gray-900 focus:outline-none focus:bg-gray-100 focus:text-gray-900">{{ $contact->company->present()->name }}</a>
<a data-turbolinks="false" href="{{ route('client.switch_company', $contact->hashed_id) }}" class="block px-4 py-2 text-sm leading-5 text-gray-700 hover:bg-gray-100 hover:text-gray-900 focus:outline-none focus:bg-gray-100 focus:text-gray-900">{{ $contact->company->present()->name() }} - {{ $contact->client->present()->name()}}</a>
@endforeach
</div>
</div>

View File

@ -0,0 +1,20 @@
@extends('portal.ninja2020.layout.clean')
@section('meta_title', ctrans('texts.confirmation'))
@section('body')
<div class="flex h-screen">
<div class="m-auto md:w-1/3 lg:w-1/5">
<div class="flex flex-col items-center">
<img src="{{ asset('images/invoiceninja-black-logo-2.png') }}" class="border-b border-gray-100 h-18 pb-4" alt="Invoice Ninja logo">
<h1 class="text-center text-3xl mt-10">{{ $title }}</h1>
<p class="text-center opacity-75">{{ $notification }}</p>
</div>
</div>
</div>
@stop
@push('footer')
@endpush

View File

@ -24,6 +24,7 @@ Route::get('tmp_pdf/{hash}', 'ClientPortal\TempRouteController@index')->name('tm
Route::get('client/key_login/{contact_key}', 'ClientPortal\ContactHashLoginController@login')->name('client.contact_login')->middleware(['contact_key_login']);
Route::get('client/magic_link/{magic_link}', 'ClientPortal\ContactHashLoginController@magicLink')->name('client.contact_magic_link')->middleware(['contact_key_login']);
Route::get('documents/{document_hash}', 'ClientPortal\DocumentController@publicDownload')->name('documents.public_download');
Route::get('error', 'ClientPortal\ContactHashLoginController@errorPage')->name('client.error');
//todo implement domain DB
Route::group(['middleware' => ['auth:contact', 'locale', 'check_client_existence'], 'prefix' => 'client', 'as' => 'client.'], function () {
@ -54,7 +55,7 @@ Route::group(['middleware' => ['auth:contact', 'locale', 'check_client_existence
Route::get('payment_methods/{payment_method}/verification', 'ClientPortal\PaymentMethodController@verify')->name('payment_methods.verification');
Route::post('payment_methods/{payment_method}/verification', 'ClientPortal\PaymentMethodController@processVerification');
Route::resource('payment_methods', 'ClientPortal\PaymentMethodController')->except(['edit', 'update']); // name = (payment_methods. index / create / show / update / destroy / edit
Route::resource('payment_methods', 'ClientPortal\PaymentMethodController')->except(['edit', 'update']);
Route::match(['GET', 'POST'], 'quotes/approve', 'ClientPortal\QuoteController@bulk')->name('quotes.bulk');
Route::get('quotes', 'ClientPortal\QuoteController@index')->name('quotes.index')->middleware('portal_enabled');
@ -74,10 +75,9 @@ Route::group(['middleware' => ['auth:contact', 'locale', 'check_client_existence
Route::get('subscriptions/{recurring_invoice}/plan_switch/{target}', 'ClientPortal\SubscriptionPlanSwitchController@index')->name('subscription.plan_switch');
Route::resource('subscriptions', 'ClientPortal\SubscriptionController')->only(['index']);
Route::resource('subscriptions', 'ClientPortal\SubscriptionController')->middleware('portal_enabled')->only(['index']);
Route::post('upload', 'ClientPortal\UploadController')->name('upload.store');
Route::get('logout', 'Auth\ContactLoginController@logout')->name('logout');
});