From e7184ab59d667b9125b52c874f7cf4f181008421 Mon Sep 17 00:00:00 2001 From: Hillel Coren Date: Sun, 5 Oct 2014 16:07:04 +0300 Subject: [PATCH] Added moolah as recommended payment gateway --- app/controllers/AccountController.php | 47 ++++++++++-------- app/database/seeds/PaymentLibrariesSeeder.php | 21 ++++++-- app/routes.php | 1 + app/views/accounts/payments.blade.php | 26 ++++++---- .../images/gateways/logo_AuthorizeNet_AIM.png | Bin 3688 -> 6799 bytes 5 files changed, 58 insertions(+), 37 deletions(-) diff --git a/app/controllers/AccountController.php b/app/controllers/AccountController.php index 7109f763417d..a531cab6d183 100755 --- a/app/controllers/AccountController.php +++ b/app/controllers/AccountController.php @@ -166,7 +166,7 @@ class AccountController extends \BaseController { { $accountGateway = $account->account_gateways[0]; $config = $accountGateway->config; - $selectedCards = $accountGateway->accepted_credit_cards; + $selectedCards = $accountGateway->accepted_credit_cards; $configFields = json_decode($config); @@ -174,6 +174,9 @@ class AccountController extends \BaseController { { $configFields->$configField = str_repeat('*', strlen($value)); } + } else { + $accountGateway = AccountGateway::createNew(); + $accountGateway->gateway_id = GATEWAY_MOOLAH; } $recommendedGateways = Gateway::remember(DEFAULT_QUERY_CACHE) @@ -191,8 +194,8 @@ class AccountController extends \BaseController { 'data-siteUrl' => $recommendedGateway->site_url ); $recommendedGatewayArray[$recommendedGateway->name] = $arrayItem; - } - + } + $creditCardsArray = unserialize(CREDIT_CARDS); $creditCards = []; foreach($creditCardsArray as $card => $name) @@ -210,25 +213,12 @@ class AccountController extends \BaseController { 'data-siteUrl' => '' ); $recommendedGatewayArray['Other Options'] = $otherItem; - - $data = [ - 'account' => $account, - 'accountGateway' => $accountGateway, - 'config' => $configFields, - 'gateways' => Gateway::remember(DEFAULT_QUERY_CACHE) - ->orderBy('name') - ->get(), - 'dropdownGateways' => Gateway::remember(DEFAULT_QUERY_CACHE) - ->where('recommended', '=', '0') - ->orderBy('name') - ->get(), - 'recommendedGateways' => $recommendedGatewayArray, - 'creditCardTypes' => $creditCards, - ]; - - foreach ($data['gateways'] as $gateway) + + $gateways = Gateway::remember(DEFAULT_QUERY_CACHE)->orderBy('name')->get(); + + foreach ($gateways as $gateway) { - $paymentLibrary = $gateway->paymentlibrary; + $paymentLibrary = $gateway->paymentlibrary; $gateway->fields = $gateway->getFields(); @@ -237,7 +227,20 @@ class AccountController extends \BaseController { $accountGateway->fields = $gateway->fields; } } - + + $data = [ + 'account' => $account, + 'accountGateway' => $accountGateway, + 'config' => $configFields, + 'gateways' => $gateways, + 'dropdownGateways' => Gateway::remember(DEFAULT_QUERY_CACHE) + ->where('recommended', '=', '0') + ->orderBy('name') + ->get(), + 'recommendedGateways' => $recommendedGatewayArray, + 'creditCardTypes' => $creditCards, + ]; + return View::make('accounts.payments', $data); } else if ($section == ACCOUNT_NOTIFICATIONS) diff --git a/app/database/seeds/PaymentLibrariesSeeder.php b/app/database/seeds/PaymentLibrariesSeeder.php index 07bb1e63be02..24a958228eef 100644 --- a/app/database/seeds/PaymentLibrariesSeeder.php +++ b/app/database/seeds/PaymentLibrariesSeeder.php @@ -12,6 +12,20 @@ class PaymentLibrariesSeeder extends Seeder array('name'=>'Psigate', 'provider'=>'Psigate', 'payment_library_id' => 2) ]; + foreach ($gateways as $gateway) + { + Gateway::create($gateway); + } + + Gateway::create([ + 'name' => 'moolah', + 'provider' => 'AuthorizeNet_AIM', + 'sort_order' => 1, + 'recommended' => 1, + 'site_url' => 'https://invoiceninja.mymoolah.com/', + ]); + + /* $updateProviders = array( 0 => 'AuthorizeNet_AIM', //1 => 'BeanStream', @@ -21,11 +35,6 @@ class PaymentLibrariesSeeder extends Seeder 5 => 'TwoCheckout' ); - foreach ($gateways as $gateway) - { - Gateway::create($gateway); - } - Gateway::whereIn('provider', $updateProviders)->update(array('recommended' => 1)); Gateway::where('provider', '=', 'AuthorizeNet_AIM')->update(array('sort_order' => 5, 'site_url' => 'http://reseller.authorize.net/application/?id=5560364')); @@ -33,5 +42,7 @@ class PaymentLibrariesSeeder extends Seeder //Gateway::where('provider', '=', 'FirstData_Connect')->update(array('sort_order' => 20, 'site_url' => 'https://www.firstdata.com/')); Gateway::where('provider', '=', 'PayPal_Pro')->update(array('sort_order' => 25, 'site_url' => 'https://www.paypal.com/')); Gateway::where('provider', '=', 'TwoCheckout')->update(array('sort_order' => 30, 'site_url' => 'https://www.2checkout.com/referral?r=2c37ac2298')); + */ + } } \ No newline at end of file diff --git a/app/routes.php b/app/routes.php index 9befd80562c1..4afaa5980ab5 100755 --- a/app/routes.php +++ b/app/routes.php @@ -224,6 +224,7 @@ define('GATEWAY_AUTHORIZE_NET', 1); define('GATEWAY_PAYPAL_EXPRESS', 17); define('GATEWAY_BEANSTREAM', 29); define('GATEWAY_PSIGATE', 30); +define('GATEWAY_MOOLAH', 31); define('EVENT_CREATE_CLIENT', 1); define('EVENT_CREATE_INVOICE', 2); diff --git a/app/views/accounts/payments.blade.php b/app/views/accounts/payments.blade.php index 88b0abad5e85..73684db59234 100755 --- a/app/views/accounts/payments.blade.php +++ b/app/views/accounts/payments.blade.php @@ -11,28 +11,32 @@ @if ($accountGateway) {{ Former::populateField('gateway_id', $accountGateway->gateway_id) }} {{ Former::populateField('recommendedGateway_id', $accountGateway->gateway_id) }} - @foreach ($accountGateway->fields as $field => $junk) - @if (in_array($field, ['solutionType', 'landingPage', 'headerImageUrl', 'brandName'])) - {{-- do nothing --}} - @else - {{ Former::populateField($accountGateway->gateway_id.'_'.$field, $config->$field) }} - @endif - @endforeach + @if ($config) + @foreach ($accountGateway->fields as $field => $junk) + @if (in_array($field, ['solutionType', 'landingPage', 'headerImageUrl', 'brandName'])) + {{-- do nothing --}} + @else + {{ Former::populateField($accountGateway->gateway_id.'_'.$field, $config->$field) }} + @endif + @endforeach + @endif @endif -
+
{{ Former::checkboxes('creditCardTypes[]')->label('Accepted Credit Cards') ->checkboxes($creditCardTypes)->class('creditcard-types') }}
+ +

 

- {{ Former::radios('recommendedGateway_id')->label('Recommended Gateways') + {{ Former::radios('recommendedGateway_id')->label('Recommended Gateway') ->radios($recommendedGateways)->class('recommended-gateway') }}
- {{ Former::select('gateway_id')->label('PayPal & Other Gateways')->addOption('', '') + {{ Former::select('gateway_id')->label('Select Gateway')->addOption('', '') ->dataClass('gateway-dropdown') ->fromQuery($dropdownGateways, 'name', 'id') ->onchange('setFieldsShown()'); }} @@ -57,6 +61,8 @@ @endforeach +

 

+ {{ Former::actions( Button::lg_success_submit('Save')->append_with_icon('floppy-disk') ) }} {{ Former::close() }} diff --git a/public/images/gateways/logo_AuthorizeNet_AIM.png b/public/images/gateways/logo_AuthorizeNet_AIM.png index 7aa524e38e1cfb3592493918c82c22eb1239ba27..aeea9fba0f8ebd9f9adfea76752c8daf9d6fe812 100755 GIT binary patch literal 6799 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%0D7^p{$?x&`t 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