diff --git a/app/controllers/AccountController.php b/app/controllers/AccountController.php index d82c2ebccf32..91b450d11988 100755 --- a/app/controllers/AccountController.php +++ b/app/controllers/AccountController.php @@ -102,19 +102,56 @@ class AccountController extends \BaseController { { $accountGateway = $account->account_gateways[0]; $config = $accountGateway->config; - } + } + + $recommendedGateways = Gateway::remember(DEFAULT_QUERY_CACHE) + ->where('recommended', '=', '1') + ->orderBy('sort_order') + ->get(); + $recommendedGatewayArray = array(); + + foreach($recommendedGateways as $recommendedGateway) + { + $newRow = count($recommendedGatewayArray) + 1 == round(count($recommendedGateways) / 2); + + $arrayItem = array( + $recommendedGateway->name => $recommendedGateway->provider, + 'data-name' => $recommendedGateway->name, + 'data-id' => $recommendedGateway->id, + 'data-label' => $recommendedGateway->provider, + 'data-value' => $recommendedGateway->name, + 'value' => $recommendedGateway->id, + 'data-imageUrl' => $recommendedGateway->getLogoUrl(), + 'data-siteUrl' => $recommendedGateway->site_url, + 'data-newRow' => $newRow + ); + $recommendedGatewayArray[$recommendedGateway->name] = $arrayItem; + + + } $data = [ 'account' => $account, 'accountGateway' => $accountGateway, 'config' => json_decode($config), - 'gateways' => Gateway::remember(DEFAULT_QUERY_CACHE)->get(), + 'gateways' => Gateway::remember(DEFAULT_QUERY_CACHE) + ->orderBy('name') + ->get(), + 'recommendedGateways' => $recommendedGatewayArray, ]; foreach ($data['gateways'] as $gateway) { - $gateway->fields = Omnipay::create($gateway->provider)->getDefaultParameters(); - + $paymentLibrary = $gateway->paymentlibrary; + + if($paymentLibrary->name == 'Omnipay') + { + $gateway->fields = Omnipay::create($gateway->provider)->getDefaultParameters(); + } + else { + $gateway->fields = array(); + } + if ($accountGateway && $accountGateway->gateway_id == $gateway->id) { $accountGateway->fields = $gateway->fields; diff --git a/app/database/migrations/2014_03_25_102200_add_sort_and_recommended_to_gateways.php b/app/database/migrations/2014_03_25_102200_add_sort_and_recommended_to_gateways.php new file mode 100644 index 000000000000..535636f90e6a --- /dev/null +++ b/app/database/migrations/2014_03_25_102200_add_sort_and_recommended_to_gateways.php @@ -0,0 +1,49 @@ +unsignedInteger('sort_order')->default(10000); + $table->boolean('recommended'); + $table->string('site_url', 200); + }); + } + + public function down() + { + if (Schema::hasColumn('gateways', 'sort_order')) + { + Schema::table('gateways', function($table) + { + $table->dropColumn('sort_order'); + }); + } + + if (Schema::hasColumn('gateways', 'recommended')) + { + Schema::table('gateways', function($table) + { + $table->dropColumn('recommended'); + }); + } + + if (Schema::hasColumn('gateways', 'site_url')) + { + Schema::table('gateways', function($table) + { + $table->dropColumn('site_url'); + }); + } + } +} diff --git a/app/database/seeds/PaymentLibrariesSeeder.php b/app/database/seeds/PaymentLibrariesSeeder.php index b7c798904f52..2776965681a3 100644 --- a/app/database/seeds/PaymentLibrariesSeeder.php +++ b/app/database/seeds/PaymentLibrariesSeeder.php @@ -6,39 +6,31 @@ class PaymentLibrariesSeeder extends Seeder public function run() { $gateways = [ - array('name'=>'Authorize.Net AIM', 'provider'=>'AuthorizeNet_AIM', 'payment_library_id' => 2), - array('name'=>'Authorize.Net SIM', 'provider'=>'AuthorizeNet_SIM', 'payment_library_id' => 2), - array('name'=>'CardSave', 'provider'=>'CardSave', 'payment_library_id' => 2), - array('name'=>'Eway Rapid', 'provider'=>'Eway_Rapid', 'payment_library_id' => 2), - array('name'=>'FirstData Connect', 'provider'=>'FirstData_Connect', 'payment_library_id' => 2), - array('name'=>'GoCardless', 'provider'=>'GoCardless', 'payment_library_id' => 2), - array('name'=>'Migs ThreeParty', 'provider'=>'Migs_ThreeParty', 'payment_library_id' => 2), - array('name'=>'Migs TwoParty', 'provider'=>'Migs_TwoParty', 'payment_library_id' => 2), - array('name'=>'Mollie', 'provider'=>'Mollie', 'payment_library_id' => 2), - array('name'=>'MultiSafepay', 'provider'=>'MultiSafepay', 'payment_library_id' => 2), - array('name'=>'Netaxept', 'provider'=>'Netaxept', 'payment_library_id' => 2), - array('name'=>'NetBanx', 'provider'=>'NetBanx', 'payment_library_id' => 2), - array('name'=>'PayFast', 'provider'=>'PayFast', 'payment_library_id' => 2), - array('name'=>'Payflow Pro', 'provider'=>'Payflow_Pro', 'payment_library_id' => 2), - array('name'=>'PaymentExpress PxPay', 'provider'=>'PaymentExpress_PxPay', 'payment_library_id' => 2), - array('name'=>'PaymentExpress PxPost', 'provider'=>'PaymentExpress_PxPost', 'payment_library_id' => 2), - array('name'=>'PayPal Express', 'provider'=>'PayPal_Express', 'payment_library_id' => 2), - array('name'=>'PayPal Pro', 'provider'=>'PayPal_Pro', 'payment_library_id' => 2), - array('name'=>'Pin', 'provider'=>'Pin', 'payment_library_id' => 2), - array('name'=>'SagePay Direct', 'provider'=>'SagePay_Direct', 'payment_library_id' => 2), - array('name'=>'SagePay Server', 'provider'=>'SagePay_Server', 'payment_library_id' => 2), - array('name'=>'SecurePay DirectPost', 'provider'=>'SecurePay_DirectPost', 'payment_library_id' => 2), - array('name'=>'Stripe', 'provider'=>'Stripe', 'payment_library_id' => 2), - array('name'=>'TargetPay Direct eBanking', 'provider'=>'TargetPay_Directebanking', 'payment_library_id' => 2), - array('name'=>'TargetPay Ideal', 'provider'=>'TargetPay_Ideal', 'payment_library_id' => 2), - array('name'=>'TargetPay Mr Cash', 'provider'=>'TargetPay_Mrcash', 'payment_library_id' => 2), - array('name'=>'TwoCheckout', 'provider'=>'TwoCheckout', 'payment_library_id' => 2), - array('name'=>'WorldPay', 'provider'=>'WorldPay', 'payment_library_id' => 2) + array('name'=>'BeanStream', 'provider'=>'BeanStream', 'payment_library_id' => 2), + array('name'=>'iTransact', 'provider'=>'iTransact', 'payment_library_id' => 2) ]; + + $updateProviders = array( + 0 => 'AuthorizeNet_AIM', + 1 => 'BeanStream', + 2 => 'iTransact', + 3 => 'FirstData_Connect', + 4 => 'PayPal_Pro', + 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://www.authorize.net/')); + Gateway::where('provider', '=', 'BeanStream')->update(array('sort_order' => 10, 'site_url' => 'http://www.beanstream.com/')); + Gateway::where('provider', '=', 'iTransact')->update(array('sort_order' => 15, 'site_url' => 'http://itransact.com/')); + 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/')); } } \ No newline at end of file diff --git a/app/models/Gateway.php b/app/models/Gateway.php index e0033bbf0059..2a06780630b7 100755 --- a/app/models/Gateway.php +++ b/app/models/Gateway.php @@ -7,6 +7,11 @@ class Gateway extends Eloquent public function paymentlibrary() { - return $this->belongsTo('PaymentLibrary'); + return $this->belongsTo('PaymentLibrary', 'payment_library_id'); + } + + public function getLogoUrl() + { + return '/images/gateways/logo_'.$this->provider.'.png'; } } \ No newline at end of file diff --git a/app/models/PaymentLibrary.php b/app/models/PaymentLibrary.php index a70caa6a9948..b8550c212aee 100644 --- a/app/models/PaymentLibrary.php +++ b/app/models/PaymentLibrary.php @@ -6,6 +6,6 @@ class PaymentLibrary extends Eloquent public function gateways() { - return $this->hasMany('Gateway'); + return $this->hasMany('Gateway', 'payment_library_id'); } } \ No newline at end of file diff --git a/app/views/accounts/payments.blade.php b/app/views/accounts/payments.blade.php index c289d8829fa9..17b4303065d9 100755 --- a/app/views/accounts/payments.blade.php +++ b/app/views/accounts/payments.blade.php @@ -10,6 +10,14 @@ {{ Former::populateField('notify_paid', intval(Auth::user()->notify_paid)) }} {{ Former::legend('Payment Gateway') }} + + {{Former::label('Lorem Ipsum goes here.')}} + + {{ Former::radios('recommendedGateway_id') + ->label('Recommended Gateways') + ->radios($recommendedGateways) + ->class('recommended-gateway')}} + @if ($accountGateway) {{ Former::populateField('gateway_id', $accountGateway->gateway_id) }} @@ -22,12 +30,14 @@ @endforeach @endif - {{ Former::select('gateway_id')->label('Provider')->addOption('', '') - ->fromQuery($gateways, 'name', 'id')->onchange('setFieldsShown()'); }} + {{ Former::select('gateway_id')->label('PayPal & Other Gateways')->addOption('', '') + ->dataClass('gateway-dropdown') + ->fromQuery($gateways, 'name', 'id') + ->onchange('setFieldsShown()'); }} @foreach ($gateways as $gateway) -