mirror of
https://github.com/invoiceninja/invoiceninja.git
synced 2025-05-24 02:14:21 -04:00
Move cache clearance to base controller
This commit is contained in:
parent
c48b02a690
commit
44d31ce326
@ -433,6 +433,8 @@ class BaseController extends Controller
|
||||
|
||||
$data['hash'] = md5(public_path('main.dart.js'));
|
||||
|
||||
$this->buildCache();
|
||||
|
||||
return view('index.index', $data);
|
||||
}
|
||||
|
||||
|
@ -55,7 +55,7 @@ class Kernel extends HttpKernel
|
||||
'throttle:60,1',
|
||||
'bindings',
|
||||
'query_logging',
|
||||
\App\Http\Middleware\StartupCheck::class,
|
||||
//\App\Http\Middleware\StartupCheck::class,
|
||||
\App\Http\Middleware\Cors::class,
|
||||
],
|
||||
'contact' => [
|
||||
@ -71,7 +71,7 @@ class Kernel extends HttpKernel
|
||||
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
|
||||
\App\Http\Middleware\VerifyCsrfToken::class,
|
||||
\Illuminate\Routing\Middleware\SubstituteBindings::class,
|
||||
\App\Http\Middleware\StartupCheck::class,
|
||||
//\App\Http\Middleware\StartupCheck::class,
|
||||
\App\Http\Middleware\QueryLogging::class,
|
||||
],
|
||||
'shop' => [
|
||||
|
@ -31,7 +31,7 @@ class StartupCheck
|
||||
{
|
||||
/**
|
||||
* Handle an incoming request.
|
||||
*
|
||||
* @deprecated
|
||||
* @param Request $request
|
||||
* @param Closure $next
|
||||
*
|
||||
@ -46,6 +46,7 @@ class StartupCheck
|
||||
|
||||
foreach ($cached_tables as $name => $class) {
|
||||
if ($request->has('clear_cache') || ! Cache::has($name)) {
|
||||
|
||||
// check that the table exists in case the migration is pending
|
||||
if (! Schema::hasTable((new $class())->getTable())) {
|
||||
continue;
|
||||
|
@ -53,6 +53,8 @@ class CheckoutComPaymentDriver extends BaseDriver
|
||||
/** Instance of \Checkout\CheckoutApi */
|
||||
public $gateway;
|
||||
|
||||
public $payment_method; //the gateway type id
|
||||
|
||||
public static $methods = [
|
||||
GatewayType::CREDIT_CARD => '',
|
||||
];
|
||||
@ -100,6 +102,9 @@ class CheckoutComPaymentDriver extends BaseDriver
|
||||
*/
|
||||
public function viewForType($gateway_type_id)
|
||||
{
|
||||
|
||||
$this->payment_method = $gateway_type_id;
|
||||
|
||||
if ($gateway_type_id == GatewayType::CREDIT_CARD) {
|
||||
return 'gateways.checkout.credit_card';
|
||||
}
|
||||
@ -355,13 +360,43 @@ class CheckoutComPaymentDriver extends BaseDriver
|
||||
|
||||
public function saveCard($state)
|
||||
{
|
||||
//some cards just can't be tokenized....
|
||||
if(!$state['payment_response']->source['id'])
|
||||
return;
|
||||
|
||||
// [id] => src_hck5nsv3fljehbam2cvdm7fioa
|
||||
// [type] => card
|
||||
// [expiry_month] => 10
|
||||
// [expiry_year] => 2022
|
||||
// [scheme] => Visa
|
||||
// [last4] => 4242
|
||||
// [fingerprint] => 688192847DB9AE8A26C53776D036D5B8AD2CEAF1D5A8F5475F542B021041EFA1
|
||||
// [bin] => 424242
|
||||
// [card_type] => Credit
|
||||
// [card_category] => Consumer
|
||||
// [issuer] => JPMORGAN CHASE BANK NA
|
||||
// [issuer_country] => US
|
||||
// [product_id] => A
|
||||
// [product_type] => Visa Traditional
|
||||
// [avs_check] => S
|
||||
// [cvv_check] => Y
|
||||
// [payouts] => 1
|
||||
// [fast_funds] => d
|
||||
|
||||
$payment_meta = new \stdClass;
|
||||
$payment_meta->exp_month = (string)$state['payment_response']->source['expiry_month'];
|
||||
$payment_meta->exp_year = (string)$state['payment_response']->source['expiry_year'];
|
||||
$payment_meta->brand = (string)$state['payment_response']->source['scheme'];
|
||||
$payment_meta->last4 = (string)$state['payment_response']->source['last4'];
|
||||
$payment_meta->type = $this->payment_method;
|
||||
|
||||
$company_gateway_token = new ClientGatewayToken();
|
||||
$company_gateway_token->company_id = $this->client->company->id;
|
||||
$company_gateway_token->client_id = $this->client->id;
|
||||
$company_gateway_token->token = $state['payment_response']->source['id'];
|
||||
$company_gateway_token->company_gateway_id = $this->company_gateway->id;
|
||||
$company_gateway_token->gateway_type_id = $state['payment_method_id'];
|
||||
$company_gateway_token->meta = $state['payment_response']->source;
|
||||
$company_gateway_token->meta = $payment_meta;
|
||||
$company_gateway_token->save();
|
||||
|
||||
if ($this->client->gateway_tokens->count() == 1) {
|
||||
|
@ -35,11 +35,33 @@ class ClientGatewayTokenTransformer extends EntityTransformer
|
||||
'gateway_type_id' => (string) $cgt->gateway_type_id ?: '',
|
||||
'company_gateway_id' => (string) $this->encodePrimaryKey($cgt->company_gateway_id) ?: '',
|
||||
'is_default' => (bool) $cgt->is_default,
|
||||
'meta' => $cgt->meta,
|
||||
'meta' => $this->typeCastMeta($cgt->meta),
|
||||
'created_at' => (int) $cgt->created_at,
|
||||
'updated_at' => (int) $cgt->updated_at,
|
||||
'archived_at' => (int) $cgt->deleted_at,
|
||||
'is_deleted' => (bool) $cgt->is_deleted,
|
||||
];
|
||||
}
|
||||
|
||||
private function typeCastMeta($meta)
|
||||
{
|
||||
$casted = new \stdClass;
|
||||
|
||||
if(property_exists($meta, 'exp_month'))
|
||||
$casted->exp_month = (string)$meta->exp_month;
|
||||
|
||||
if(property_exists($meta, 'exp_year'))
|
||||
$casted->exp_year = (string)$meta->exp_year;
|
||||
|
||||
if(property_exists($meta, 'brand'))
|
||||
$casted->brand = (string)$meta->brand;
|
||||
|
||||
if(property_exists($meta, 'last4'))
|
||||
$casted->last4 = (string)$meta->last4;
|
||||
|
||||
if(property_exists($meta, 'type'))
|
||||
$casted->type = (int)$meta->type;
|
||||
|
||||
return $casted;
|
||||
}
|
||||
}
|
||||
|
@ -11,8 +11,11 @@
|
||||
|
||||
namespace App\Utils\Traits;
|
||||
|
||||
use App\DataMapper\EmailTemplateDefaults;
|
||||
use App\Utils\Ninja;
|
||||
use App\Utils\SystemHealth;
|
||||
use Illuminate\Support\Facades\Cache;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
trait AppSetup
|
||||
{
|
||||
@ -26,4 +29,79 @@ trait AppSetup
|
||||
|
||||
return $check['system_health'] == 'true';
|
||||
}
|
||||
|
||||
public function buildCache()
|
||||
{
|
||||
$cached_tables = config('ninja.cached_tables');
|
||||
|
||||
foreach ($cached_tables as $name => $class) {
|
||||
if (request()->has('clear_cache') || ! Cache::has($name)) {
|
||||
|
||||
// check that the table exists in case the migration is pending
|
||||
if (! Schema::hasTable((new $class())->getTable())) {
|
||||
continue;
|
||||
}
|
||||
if ($name == 'payment_terms') {
|
||||
$orderBy = 'num_days';
|
||||
} elseif ($name == 'fonts') {
|
||||
$orderBy = 'sort_order';
|
||||
} elseif (in_array($name, ['currencies', 'industries', 'languages', 'countries', 'banks'])) {
|
||||
$orderBy = 'name';
|
||||
} else {
|
||||
$orderBy = 'id';
|
||||
}
|
||||
$tableData = $class::orderBy($orderBy)->get();
|
||||
if ($tableData->count()) {
|
||||
Cache::forever($name, $tableData);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*Build template cache*/
|
||||
if (request()->has('clear_cache') || ! Cache::has('templates'))
|
||||
$this->buildTemplates();
|
||||
}
|
||||
|
||||
|
||||
private function buildTemplates($name = 'templates')
|
||||
{
|
||||
$data = [
|
||||
|
||||
'invoice' => [
|
||||
'subject' => EmailTemplateDefaults::emailInvoiceSubject(),
|
||||
'body' => EmailTemplateDefaults::emailInvoiceTemplate(),
|
||||
],
|
||||
|
||||
'quote' => [
|
||||
'subject' => EmailTemplateDefaults::emailQuoteSubject(),
|
||||
'body' => EmailTemplateDefaults::emailQuoteTemplate(),
|
||||
],
|
||||
'payment' => [
|
||||
'subject' => EmailTemplateDefaults::emailPaymentSubject(),
|
||||
'body' => EmailTemplateDefaults::emailPaymentTemplate(),
|
||||
],
|
||||
'reminder1' => [
|
||||
'subject' => EmailTemplateDefaults::emailReminder1Subject(),
|
||||
'body' => EmailTemplateDefaults::emailReminder1Template(),
|
||||
],
|
||||
'reminder2' => [
|
||||
'subject' => EmailTemplateDefaults::emailReminder2Subject(),
|
||||
'body' => EmailTemplateDefaults::emailReminder2Template(),
|
||||
],
|
||||
'reminder3' => [
|
||||
'subject' => EmailTemplateDefaults::emailReminder3Subject(),
|
||||
'body' => EmailTemplateDefaults::emailReminder3Template(),
|
||||
],
|
||||
'reminder_endless' => [
|
||||
'subject' => EmailTemplateDefaults::emailReminderEndlessSubject(),
|
||||
'body' => EmailTemplateDefaults::emailReminderEndlessTemplate(),
|
||||
],
|
||||
'statement' => [
|
||||
'subject' => EmailTemplateDefaults::emailStatementSubject(),
|
||||
'body' => EmailTemplateDefaults::emailStatementTemplate(),
|
||||
],
|
||||
];
|
||||
|
||||
Cache::forever($name, $data);
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user