Move cache clearance to base controller

This commit is contained in:
David Bomba 2020-10-09 17:55:03 +11:00
parent c48b02a690
commit 44d31ce326
6 changed files with 143 additions and 5 deletions

View File

@ -433,6 +433,8 @@ class BaseController extends Controller
$data['hash'] = md5(public_path('main.dart.js'));
$this->buildCache();
return view('index.index', $data);
}

View File

@ -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' => [

View File

@ -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;

View File

@ -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) {

View File

@ -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;
}
}

View File

@ -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);
}
}