From 4bc92a7aa1670c73e42a281818d37639e934e462 Mon Sep 17 00:00:00 2001 From: David Bomba Date: Wed, 27 Nov 2019 20:47:59 +1100 Subject: [PATCH] Stub GMail Driver (#3099) * fix for blank client settings * Force all custom fields to strings * Fixes for bulk actions * Fixes for company POST route.. * Change text from Bitcoin to CRYPTO * Implement default_gateway_type_id in transformer * use scopes for company filtering * Implement validation for portal_domain * Add Google API client * Add activities to company transformer --- app/Constants.php | 2 +- app/Filters/ClientFilters.php | 3 +- app/Filters/InvoiceFilters.php | 4 +- app/Filters/PaymentFilters.php | 2 +- app/Filters/ProductFilters.php | 2 +- app/Filters/QuoteFilters.php | 2 +- app/Filters/RecurringInvoiceFilters.php | 2 +- app/Filters/RecurringQuoteFilters.php | 2 +- app/Helpers/Mail/GmailTransportConfig.php | 76 +++++++++++++++++++ app/Http/Controllers/ActivityController.php | 5 +- app/Http/Controllers/Auth/LoginController.php | 4 +- app/Http/Controllers/CompanyController.php | 2 + app/Http/Controllers/InvoiceController.php | 2 +- app/Http/Controllers/TemplateController.php | 9 ++- .../Requests/Company/StoreCompanyRequest.php | 10 ++- .../Requests/Company/UpdateCompanyRequest.php | 5 +- app/Models/BaseModel.php | 4 +- app/Models/Company.php | 7 +- app/Models/Payment.php | 2 +- app/Models/PaymentType.php | 2 +- app/Models/RecurringInvoice.php | 3 + app/Models/StaticModel.php | 10 +++ app/PaymentDrivers/StripePaymentDriver.php | 4 +- app/Policies/UserPolicy.php | 2 +- app/Repositories/CompanyRepository.php | 2 +- app/Transformers/CompanyTransformer.php | 10 +++ app/Transformers/GatewayTransformer.php | 2 +- composer.json | 1 + database/seeds/GatewayTypesSeeder.php | 2 +- database/seeds/PaymentLibrariesSeeder.php | 9 ++- database/seeds/PaymentTypesSeeder.php | 2 +- tests/Feature/CompanyTest.php | 12 +++ 32 files changed, 171 insertions(+), 35 deletions(-) create mode 100644 app/Helpers/Mail/GmailTransportConfig.php diff --git a/app/Constants.php b/app/Constants.php index 6c21bd04a2..afbc0253cf 100644 --- a/app/Constants.php +++ b/app/Constants.php @@ -22,7 +22,7 @@ define('BANK_LIBRARY_OFX', 1); define('GATEWAY_TYPE_CREDIT_CARD', 1); define('GATEWAY_TYPE_BANK_TRANSFER', 2); define('GATEWAY_TYPE_PAYPAL', 3); -define('GATEWAY_TYPE_BITCOIN', 4); +define('GATEWAY_TYPE_CRYPTO', 4); define('GATEWAY_TYPE_DWOLLA', 5); define('GATEWAY_TYPE_CUSTOM1', 6); define('GATEWAY_TYPE_ALIPAY', 7); diff --git a/app/Filters/ClientFilters.php b/app/Filters/ClientFilters.php index 5c0ec86b5d..f00a07ee1a 100644 --- a/app/Filters/ClientFilters.php +++ b/app/Filters/ClientFilters.php @@ -188,7 +188,8 @@ class ClientFilters extends QueryFilters public function entityFilter() { - return $this->builder->whereCompanyId(auth()->user()->company()->id); + //return $this->builder->whereCompanyId(auth()->user()->company()->id); + return $this->builder->company(); } diff --git a/app/Filters/InvoiceFilters.php b/app/Filters/InvoiceFilters.php index b94fb80f70..257e464ec4 100644 --- a/app/Filters/InvoiceFilters.php +++ b/app/Filters/InvoiceFilters.php @@ -168,7 +168,9 @@ class InvoiceFilters extends QueryFilters if(auth('contact')->user()) return $this->contactViewFilter(); else - return $this->builder->whereCompanyId(auth()->user()->company()->id); + return $this->builder->company(); + +// return $this->builder->whereCompanyId(auth()->user()->company()->id); } diff --git a/app/Filters/PaymentFilters.php b/app/Filters/PaymentFilters.php index 9079eb13b3..407e9cb05e 100644 --- a/app/Filters/PaymentFilters.php +++ b/app/Filters/PaymentFilters.php @@ -119,7 +119,7 @@ class PaymentFilters extends QueryFilters if(auth('contact')->user()) return $this->contactViewFilter(); else - return $this->builder->whereCompanyId(auth()->user()->company()->id); + return $this->builder->company(); } diff --git a/app/Filters/ProductFilters.php b/app/Filters/ProductFilters.php index 20204992b8..866d357680 100644 --- a/app/Filters/ProductFilters.php +++ b/app/Filters/ProductFilters.php @@ -115,7 +115,7 @@ class ProductFilters extends QueryFilters public function entityFilter() { - return $this->builder->whereCompanyId(auth()->user()->company()->id); + return $this->builder->company(); } diff --git a/app/Filters/QuoteFilters.php b/app/Filters/QuoteFilters.php index 157e71fdb1..22196cd60c 100644 --- a/app/Filters/QuoteFilters.php +++ b/app/Filters/QuoteFilters.php @@ -113,7 +113,7 @@ class QuoteFilters extends QueryFilters public function entityFilter() { - return $this->builder->whereCompanyId(auth()->user()->company()->id); + return $this->builder->company(); } diff --git a/app/Filters/RecurringInvoiceFilters.php b/app/Filters/RecurringInvoiceFilters.php index a2195690c6..068000bc2f 100644 --- a/app/Filters/RecurringInvoiceFilters.php +++ b/app/Filters/RecurringInvoiceFilters.php @@ -113,7 +113,7 @@ class RecurringInvoiceFilters extends QueryFilters public function entityFilter() { - return $this->builder->whereCompanyId(auth()->user()->company()->id); + return $this->builder->company(); } diff --git a/app/Filters/RecurringQuoteFilters.php b/app/Filters/RecurringQuoteFilters.php index b21ddb7b8c..1f3dbd6450 100644 --- a/app/Filters/RecurringQuoteFilters.php +++ b/app/Filters/RecurringQuoteFilters.php @@ -113,7 +113,7 @@ class RecurringQuoteFilters extends QueryFilters public function entityFilter() { - return $this->builder->whereCompanyId(auth()->user()->company()->id); + return $this->builder->company(); } diff --git a/app/Helpers/Mail/GmailTransportConfig.php b/app/Helpers/Mail/GmailTransportConfig.php new file mode 100644 index 0000000000..1672d648ca --- /dev/null +++ b/app/Helpers/Mail/GmailTransportConfig.php @@ -0,0 +1,76 @@ +setUsername('YOUR_GMAIL_USERNAME') +// ->setPassword('YOUR_GMAIL_PASSWORD') +// ; +// +// $transport = \Swift_SmtpTransport::newInstance($host, $port); + // set encryption + if (isset($encryption)) $transport->setEncryption($encryption); + // set username and password + if (isset($username)) + { + $transport->setUsername($username); + $transport->setPassword($password); + } + +// +// +// // Create the Transport + + +// // Create the Mailer using your created Transport +// $mailer = new Swift_Mailer($transport); + +/********************* We may need to fetch a new token on behalf of the client ******************************/ + + $transport = (new Swift_SmtpTransport('smtp.gmail.com', 587, 'tls')) + ->setAuthMode('XOAUTH2') + ->setUsername('turbo124@gmail.com') + ->setPassword(''); + + // set new swift mailer + Mail::setSwiftMailer(new \Swift_Mailer($transport)); + + + Mail::to('david@romulus.com.au') + ->send('test'); + } + + +} + + + + + + + + + + diff --git a/app/Http/Controllers/ActivityController.php b/app/Http/Controllers/ActivityController.php index 66ff2b2da7..1fef5a8df7 100644 --- a/app/Http/Controllers/ActivityController.php +++ b/app/Http/Controllers/ActivityController.php @@ -65,10 +65,11 @@ class ActivityController extends BaseController public function index() { - $activities = Activity::whereCompanyId(auth()->user()->company()->id) - ->orderBy('created_at', 'DESC') + $activities = Activity::orderBy('created_at', 'DESC')->company() ->take(50); + + return $this->listResponse($activities); } diff --git a/app/Http/Controllers/Auth/LoginController.php b/app/Http/Controllers/Auth/LoginController.php index dcadfe3f28..f1a4de8b6d 100644 --- a/app/Http/Controllers/Auth/LoginController.php +++ b/app/Http/Controllers/Auth/LoginController.php @@ -249,7 +249,7 @@ class LoginController extends BaseController if(request()->has('code')) return $this->handleProviderCallback($provider); else - return Socialite::driver($provider)->scopes()->redirect(); + return Socialite::driver($provider)->scopes('gmail.send')->redirect(); } @@ -261,7 +261,7 @@ class LoginController extends BaseController if(request()->has('code')) return $this->handleProviderCallbackAndCreate($provider); else - return Socialite::driver($provider)->redirectUrl($redirect_url)->redirect(); + return Socialite::driver($provider)->scopes('gmail.send')->redirectUrl($redirect_url)->redirect(); } diff --git a/app/Http/Controllers/CompanyController.php b/app/Http/Controllers/CompanyController.php index fdec90c3c9..ec2e3fe936 100644 --- a/app/Http/Controllers/CompanyController.php +++ b/app/Http/Controllers/CompanyController.php @@ -207,6 +207,8 @@ class CompanyController extends BaseController $company = CreateCompany::dispatchNow($request->all(), auth()->user()->company()->account); + $company = $this->company_repo->save($request->all(), $company); + $company->saveSettings($request->input('settings'), $company); $this->uploadLogo($request->file('company_logo'), $company, $company); diff --git a/app/Http/Controllers/InvoiceController.php b/app/Http/Controllers/InvoiceController.php index 579438f07d..fe4977cde5 100644 --- a/app/Http/Controllers/InvoiceController.php +++ b/app/Http/Controllers/InvoiceController.php @@ -519,7 +519,7 @@ class InvoiceController extends BaseController $ids = request()->input('ids'); - $invoices = Invoice::withTrashed()->find($this->transformKeys($ids))->whereCompanyId(auth()->user()->companyId()); + $invoices = Invoice::withTrashed()->find($this->transformKeys($ids))->company(); if(!$invoices) return response()->json(['message'=>'No Invoices Found']); diff --git a/app/Http/Controllers/TemplateController.php b/app/Http/Controllers/TemplateController.php index d3d4ad4f81..f8b2d15b00 100644 --- a/app/Http/Controllers/TemplateController.php +++ b/app/Http/Controllers/TemplateController.php @@ -130,9 +130,14 @@ class TemplateController extends BaseController */ public function show($entity, $entity_id) { - $text = request()->input('text'); + + $class = 'App\Models\\'.ucfirst($entity); - return response()->json($text, 200); + $entity_obj = $class::find($entity_id)->company(); + + $markdown = request()->input('text'); + + return response()->json($markdown, 200); } diff --git a/app/Http/Requests/Company/StoreCompanyRequest.php b/app/Http/Requests/Company/StoreCompanyRequest.php index 37a7abf940..a9999a0045 100644 --- a/app/Http/Requests/Company/StoreCompanyRequest.php +++ b/app/Http/Requests/Company/StoreCompanyRequest.php @@ -33,11 +33,17 @@ class StoreCompanyRequest extends Request { //$this->sanitize(); $rules = []; + $input = $this->all(); //$rules['name'] = 'required'; $rules['company_logo'] = 'mimes:jpeg,jpg,png,gif|max:10000'; // max 10000kb - $rules['settings'] = new ValidSettingsRule(); - $rules['portal_domain'] = 'url'; + $rules['settings'] = new ValidSettingsRule(); + + if(isset($rules['portal_mode']) && ($rules['portal_mode'] == 'domain' || $rules['portal_mode'] == 'iframe')) + $rules['portal_domain'] = 'sometimes|url'; + else + $rules['portal_domain'] = 'nullable|alpha_num'; + return $rules; } diff --git a/app/Http/Requests/Company/UpdateCompanyRequest.php b/app/Http/Requests/Company/UpdateCompanyRequest.php index 78c085f926..4a5b0d4495 100644 --- a/app/Http/Requests/Company/UpdateCompanyRequest.php +++ b/app/Http/Requests/Company/UpdateCompanyRequest.php @@ -43,8 +43,11 @@ class UpdateCompanyRequest extends Request $rules['size_id'] = 'integer|nullable'; $rules['country_id'] = 'integer|nullable'; $rules['work_email'] = 'email|nullable'; - $rules['portal_domain'] = 'url'; + if(isset($rules['portal_mode']) && ($rules['portal_mode'] == 'domain' || $rules['portal_mode'] == 'iframe')) + $rules['portal_domain'] = 'sometimes|url'; + else + $rules['portal_domain'] = 'nullable|alpha_num'; return $rules; diff --git a/app/Models/BaseModel.php b/app/Models/BaseModel.php index 4e9060a66f..2c649c15ae 100644 --- a/app/Models/BaseModel.php +++ b/app/Models/BaseModel.php @@ -67,9 +67,9 @@ class BaseModel extends Model /* V2 type of scope */ - public function scopeCompany($query, $company_id) + public function scopeCompany($query) { - $query->where('company_id', $company_id); + $query->where('company_id', auth()->user()->companyId()); return $query; } diff --git a/app/Models/Company.php b/app/Models/Company.php index 1d89f8278f..bcfa0e8c4a 100644 --- a/app/Models/Company.php +++ b/app/Models/Company.php @@ -101,9 +101,7 @@ class Company extends BaseModel public function users() { - return $this->hasManyThrough(User::class, CompanyUser::class, 'company_id', 'id', 'id', 'user_id'); - } /** @@ -114,6 +112,11 @@ class Company extends BaseModel return $this->hasMany(Client::class)->withTrashed(); } + public function activities() + { + return $this->hasMany(Activity::class); + } + /** * @return \Illuminate\Database\Eloquent\Relations\HasMany */ diff --git a/app/Models/Payment.php b/app/Models/Payment.php index 9ad7108c6c..a3dce29490 100644 --- a/app/Models/Payment.php +++ b/app/Models/Payment.php @@ -37,7 +37,7 @@ class Payment extends BaseModel const TYPE_CREDIT_CARD = 1; const TYPE_BANK_TRANSFER = 2; const TYPE_PAYPAL = 3; - const TYPE_BITCOIN = 4; + const TYPE_CRYPTO = 4; const TYPE_DWOLLA = 5; const TYPE_CUSTOM1 = 6; const TYPE_ALIPAY = 7; diff --git a/app/Models/PaymentType.php b/app/Models/PaymentType.php index aa54e850a1..7bf5ca81b6 100644 --- a/app/Models/PaymentType.php +++ b/app/Models/PaymentType.php @@ -42,7 +42,7 @@ class PaymentType extends StaticModel const SOFORT = 29; const SEPA = 30; const GOCARDLESS = 31; - const BITCOIN = 32; + const CRYPTO = 32; public static function parseCardType($cardName) { diff --git a/app/Models/RecurringInvoice.php b/app/Models/RecurringInvoice.php index f7c504823d..94cc67b335 100644 --- a/app/Models/RecurringInvoice.php +++ b/app/Models/RecurringInvoice.php @@ -51,6 +51,7 @@ class RecurringInvoice extends BaseModel const FREQUENCY_SIX_MONTHS = 9; const FREQUENCY_ANNUALLY = 10; const FREQUENCY_TWO_YEARS = 11; + const FREQUENCY_THREE_YEARS = 12; const RECURS_INDEFINITELY = -1; @@ -164,6 +165,8 @@ class RecurringInvoice extends BaseModel return Carbon::parse($this->next_send_date->addYear()); case RecurringInvoice::FREQUENCY_TWO_YEARS: return Carbon::parse($this->next_send_date->addYears(2)); + case RecurringInvoice::FREQUENCY_THREE_YEARS: + return Carbon::parse($this->next_send_date->addYears(3)); default: return null; } diff --git a/app/Models/StaticModel.php b/app/Models/StaticModel.php index 6eb46c56f5..aaef1d1474 100644 --- a/app/Models/StaticModel.php +++ b/app/Models/StaticModel.php @@ -29,4 +29,14 @@ class StaticModel extends Model return (string)$this->attributes['id']; } + /* + V2 type of scope + */ + public function scopeCompany($query) + { + $query->where('company_id', auth()->user()->companyId()); + + return $query; + } + } diff --git a/app/PaymentDrivers/StripePaymentDriver.php b/app/PaymentDrivers/StripePaymentDriver.php index 51fe3ea542..4a24dc52c9 100644 --- a/app/PaymentDrivers/StripePaymentDriver.php +++ b/app/PaymentDrivers/StripePaymentDriver.php @@ -82,7 +82,7 @@ class StripePaymentDriver extends BasePaymentDriver $types[] = GatewayType::SEPA; if ($this->company_gateway->getBitcoinEnabled()) - $types[] = GatewayType::BITCOIN; + $types[] = GatewayType::CRYPTO; if ($this->company_gateway->getAlipayEnabled()) $types[] = GatewayType::ALIPAY; @@ -113,7 +113,7 @@ class StripePaymentDriver extends BasePaymentDriver case GatewayType::SEPA: return 'portal.default.gateways.stripe.sepa'; break; - case GatewayType::BITCOIN: + case GatewayType::CRYPTO: return 'portal.default.gateways.stripe.other'; break; case GatewayType::ALIPAY: diff --git a/app/Policies/UserPolicy.php b/app/Policies/UserPolicy.php index 751b8eab59..f3bafd70e5 100644 --- a/app/Policies/UserPolicy.php +++ b/app/Policies/UserPolicy.php @@ -43,7 +43,7 @@ class UserPolicy extends EntityPolicy */ public function edit(User $user, $user_entity) : bool { - $company_user = CompanyUser::whereUserId($user_entity->id)->whereCompanyId($user->companyId())->first(); + $company_user = CompanyUser::whereUserId($user_entity->id)->company()->first(); return ($user->isAdmin() && $company_user); diff --git a/app/Repositories/CompanyRepository.php b/app/Repositories/CompanyRepository.php index b44c9821ba..cbe22a1c60 100644 --- a/app/Repositories/CompanyRepository.php +++ b/app/Repositories/CompanyRepository.php @@ -48,7 +48,7 @@ class CompanyRepository extends BaseRepository public function save(array $data, Company $company) : ?Company { - if(isset($data['custom_fields'])) + if(isset($data['custom_fields']) && is_array($data['custom_fields'])) $data['custom_fields'] = $this->parseCustomFields($data['custom_fields']); $company->fill($data); diff --git a/app/Transformers/CompanyTransformer.php b/app/Transformers/CompanyTransformer.php index 82b3a5b5a6..3bf8574e96 100644 --- a/app/Transformers/CompanyTransformer.php +++ b/app/Transformers/CompanyTransformer.php @@ -13,6 +13,7 @@ namespace App\Transformers; use App\Models\Account; +use App\Models\Activity; use App\Models\Client; use App\Models\Company; use App\Models\CompanyGateway; @@ -20,6 +21,7 @@ use App\Models\CompanyUser; use App\Models\GroupSetting; use App\Models\TaxRate; use App\Models\User; +use App\Transformers\ActivityTransformer; use App\Transformers\CompanyGatewayTransformer; use App\Transformers\CompanyUserTransformer; use App\Transformers\GroupSettingTransformer; @@ -58,6 +60,7 @@ class CompanyTransformer extends EntityTransformer 'company_user', 'groups', 'company_gateways', + 'activities' ]; @@ -107,6 +110,13 @@ class CompanyTransformer extends EntityTransformer return $this->includeItem($company->company_users->where('user_id', auth()->user()->id)->first(), $transformer, CompanyUser::class); } + public function includeActivities(Company $company) + { + $transformer = new ActivityTransformer($this->serializer); + + return $this->includeCollection($company->activities, $transformer, Activity::class); + } + public function includeUsers(Company $company) { $transformer = new UserTransformer($this->serializer); diff --git a/app/Transformers/GatewayTransformer.php b/app/Transformers/GatewayTransformer.php index 79ff515f3b..ac684df1e1 100644 --- a/app/Transformers/GatewayTransformer.php +++ b/app/Transformers/GatewayTransformer.php @@ -45,7 +45,7 @@ class GatewayTransformer extends EntityTransformer 'provider' => (string)$gateway->provider ?: '', 'visible' => (bool)$gateway->visible, 'sort_order' => (int)$gateway->sort_order, - //'recommended' => (bool)$gateway->recommended, + 'default_gateway_type_id' => (bool)$gateway->default_gateway_type_id, 'site_url' => (string)$gateway->site_url ?: '', 'is_offsite' => (bool)$gateway->is_offsite, 'is_secure' => (bool)$gateway->is_secure, diff --git a/composer.json b/composer.json index 1e529f4c0b..9de5e01fa1 100644 --- a/composer.json +++ b/composer.json @@ -23,6 +23,7 @@ "asgrim/ofxparser": "^1.2", "davejamesmiller/laravel-breadcrumbs": "5.x", "fideloper/proxy": "^4.0", + "google/apiclient": "^2.0", "hashids/hashids": "^3.0", "intervention/image": "^2.4", "laracasts/presenter": "^0.2.1", diff --git a/database/seeds/GatewayTypesSeeder.php b/database/seeds/GatewayTypesSeeder.php index 533d3a7f41..1d1122326b 100644 --- a/database/seeds/GatewayTypesSeeder.php +++ b/database/seeds/GatewayTypesSeeder.php @@ -13,7 +13,7 @@ class GatewayTypesSeeder extends Seeder ['alias' => 'credit_card', 'name' => 'Credit Card'], ['alias' => 'bank_transfer', 'name' => 'Bank Transfer'], ['alias' => 'paypal', 'name' => 'PayPal'], - ['alias' => 'bitcoin', 'name' => 'Bitcoin'], + ['alias' => 'crypto', 'name' => 'Crypto'], ['alias' => 'dwolla', 'name' => 'Dwolla'], ['alias' => 'custom1', 'name' => 'Custom'], ['alias' => 'alipay', 'name' => 'Alipay'], diff --git a/database/seeds/PaymentLibrariesSeeder.php b/database/seeds/PaymentLibrariesSeeder.php index bb924cc457..770646b369 100644 --- a/database/seeds/PaymentLibrariesSeeder.php +++ b/database/seeds/PaymentLibrariesSeeder.php @@ -1,6 +1,7 @@ 'NetBanx', 'provider' => 'NetBanx', 'key' => '334d419939c06bd99b4dfd8a49243f0f', 'fields' => '{"accountNumber":"","storeId":"","storePassword":"","testMode":false}'], ['name' => 'PayFast', 'provider' => 'PayFast', 'is_offsite' => true, 'key' => 'd6814fc83f45d2935e7777071e629ef9', 'fields' => '{"merchantId":"","merchantKey":"","pdtKey":"","passphrase":"","testMode":false}'], ['name' => 'Payflow Pro', 'provider' => 'Payflow_Pro', 'key' => '0d97c97d227f91c5d0cb86d01e4a52c9', 'fields' => '{"username":"","password":"","vendor":"","partner":"","testMode":false}'], - ['name' => 'PaymentExpress PxPay', 'provider' => 'PaymentExpress_PxPay', 'key' => 'a66b7062f4c8212d2c428209a34aa6bf', 'fields' => '{"username":"","password":"","pxPostUsername":"","pxPostPassword":"","testMode":false}'], - ['name' => 'PaymentExpress PxPost', 'provider' => 'PaymentExpress_PxPost', 'key' => '7e6fc08b89467518a5953a4839f8baba', 'fields' => '{"username":"","password":"","testMode":false}'], - ['name' => 'PayPal Express', 'provider' => 'PayPal_Express', 'is_offsite' => true, 'sort_order' => 4, 'key' => '38f2c48af60c7dd69e04248cbb24c36e', 'fields' => '{"username":"","password":"","signature":"","testMode":false,"solutionType":["Sole","Mark"],"landingPage":["Billing","Login"],"brandName":"","headerImageUrl":"","logoImageUrl":"","borderColor":""}'], - ['name' => 'PayPal Pro', 'provider' => 'PayPal_Pro', 'key' => '80af24a6a69f5c0bbec33e930ab40665', 'fields' => '{"username":"","password":"","signature":"","testMode":false}'], + ['name' => 'PaymentExpress PxPay', 'provider' => 'PaymentExpress_PxPay', 'key' => 'a66b7062f4c8212d2c428209a34aa6bf', 'fields' => '{"username":"","password":"","pxPostUsername":"","pxPostPassword":"","testMode":false}','default_gateway_type_id' => GatewayType::PAYPAL], + ['name' => 'PaymentExpress PxPost', 'provider' => 'PaymentExpress_PxPost', 'key' => '7e6fc08b89467518a5953a4839f8baba', 'fields' => '{"username":"","password":"","testMode":false}','default_gateway_type_id' => GatewayType::PAYPAL], + ['name' => 'PayPal Express', 'provider' => 'PayPal_Express', 'is_offsite' => true, 'sort_order' => 4, 'key' => '38f2c48af60c7dd69e04248cbb24c36e', 'fields' => '{"username":"","password":"","signature":"","testMode":false,"solutionType":["Sole","Mark"],"landingPage":["Billing","Login"],"brandName":"","headerImageUrl":"","logoImageUrl":"","borderColor":""}','default_gateway_type_id' => GatewayType::PAYPAL], + ['name' => 'PayPal Pro', 'provider' => 'PayPal_Pro', 'key' => '80af24a6a69f5c0bbec33e930ab40665', 'fields' => '{"username":"","password":"","signature":"","testMode":false}','default_gateway_type_id' => GatewayType::PAYPAL], ['name' => 'Pin', 'provider' => 'Pin', 'key' => '0749cb92a6b36c88bd9ff8aabd2efcab', 'fields' => '{"secretKey":"","testMode":false}'], ['name' => 'SagePay Direct', 'provider' => 'SagePay_Direct', 'key' => '4c8f4e5d0f353a122045eb9a60cc0f2d', 'fields' => '{"vendor":"","testMode":false,"referrerId":""}'], ['name' => 'SecurePay DirectPost', 'provider' => 'SecurePay_DirectPost', 'key' => '8036a5aadb2bdaafb23502da8790b6a2', 'fields' => '{"merchantId":"","transactionPassword":"","testMode":false,"enable_ach":"","enable_sofort":"","enable_apple_pay":"","enable_alipay":""}'], diff --git a/database/seeds/PaymentTypesSeeder.php b/database/seeds/PaymentTypesSeeder.php index 1cdef66ac3..cb2e86d64b 100644 --- a/database/seeds/PaymentTypesSeeder.php +++ b/database/seeds/PaymentTypesSeeder.php @@ -41,7 +41,7 @@ class PaymentTypesSeeder extends Seeder ['name' => 'Sofort', 'gateway_type_id' => GATEWAY_TYPE_SOFORT], ['name' => 'SEPA', 'gateway_type_id' => GATEWAY_TYPE_SEPA], ['name' => 'GoCardless', 'gateway_type_id' => GATEWAY_TYPE_GOCARDLESS], - ['name' => 'Bitcoin', 'gateway_type_id' => GATEWAY_TYPE_BITCOIN], + ['name' => 'Crypto', 'gateway_type_id' => GATEWAY_TYPE_CRYPTO], ]; foreach ($paymentTypes as $paymentType) { diff --git a/tests/Feature/CompanyTest.php b/tests/Feature/CompanyTest.php index 117a79c8d5..4eea974245 100644 --- a/tests/Feature/CompanyTest.php +++ b/tests/Feature/CompanyTest.php @@ -18,6 +18,7 @@ use Illuminate\Http\Request; use Illuminate\Http\UploadedFile; use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Session; +use Illuminate\Validation\ValidationException; use Tests\TestCase; /** @@ -40,6 +41,8 @@ class CompanyTest extends TestCase Model::reguard(); + + } public function testCompanyList() @@ -124,13 +127,22 @@ class CompanyTest extends TestCase $settings->quote_design_id = 1; $company->settings = $settings; + // $this->withoutExceptionHandling(); + // try{ $response = $this->withHeaders([ 'X-API-SECRET' => config('ninja.api_secret'), 'X-API-TOKEN' => $token, ])->put('/api/v1/companies/'.$this->encodePrimaryKey($company->id), $company->toArray()) ->assertStatus(200)->decodeResponseJson(); + // } + // catch(ValidationException $e) { + // // \Log::error('in the validator'); + // $message = json_decode($e->validator->getMessageBag(),1); + // \Log::error($message); + // $this->assertNotNull($message); + // } $response = $this->withHeaders([ 'X-API-SECRET' => config('ninja.api_secret'),