diff --git a/app/Http/Controllers/AccountController.php b/app/Http/Controllers/AccountController.php index a2c2322bffe0..fc92f67890c7 100644 --- a/app/Http/Controllers/AccountController.php +++ b/app/Http/Controllers/AccountController.php @@ -180,22 +180,8 @@ class AccountController extends BaseController $newPlan['price'] = Utils::getPlanPrice($newPlan); $credit = 0; - if (! empty($planDetails['started']) && $plan == PLAN_FREE) { - // Downgrade - $refund_deadline = clone $planDetails['started']; - $refund_deadline->modify('+30 days'); - - if ($plan == PLAN_FREE && $refund_deadline >= date_create()) { - if ($payment = $account->company->payment) { - $ninjaAccount = $this->accountRepo->getNinjaAccount(); - $paymentDriver = $ninjaAccount->paymentDriver(); - $paymentDriver->refundPayment($payment); - Session::flash('message', trans('texts.plan_refunded')); - \Log::info("Refunded Plan Payment: {$account->name} - {$user->email} - Deadline: {$refund_deadline->format('Y-m-d')}"); - } else { - Session::flash('message', trans('texts.updated_plan')); - } - } + if ($plan == PLAN_FREE && $company->processRefund(Auth::user())) { + Session::flash('warning', trans('texts.plan_refunded')); } $hasPaid = false; @@ -235,6 +221,8 @@ class AccountController extends BaseController $company->plan = $plan; $company->save(); + Session::flash('message', trans('texts.updated_plan')); + return Redirect::to('settings/account_management'); } } @@ -1341,6 +1329,9 @@ class AccountController extends BaseController $account = Auth::user()->account; \Log::info("Canceled Account: {$account->name} - {$user->email}"); + $company = $account->company; + $refunded = $company->processRefund(Auth::user()); + Document::scope()->each(function ($item, $key) { $item->delete(); }); @@ -1356,6 +1347,10 @@ class AccountController extends BaseController Auth::logout(); Session::flush(); + if ($refunded) { + Session::flash('warning', trans('texts.plan_refunded')); + } + return Redirect::to('/')->with('clearGuestKey', true); } diff --git a/app/Models/Company.php b/app/Models/Company.php index 6756bd072a52..cfa121d556f4 100644 --- a/app/Models/Company.php +++ b/app/Models/Company.php @@ -140,4 +140,32 @@ class Company extends Eloquent return false; } + + public function processRefund($user) + { + if (! $this->payment) { + return false; + } + + $account = $this->accounts()->first(); + $planDetails = $account->getPlanDetails(false, false); + + if (! empty($planDetails['started'])) { + $deadline = clone $planDetails['started']; + $deadline->modify('+30 days'); + + if ($deadline >= date_create()) { + $accountRepo = app('App\Ninja\Repositories\AccountRepository'); + $ninjaAccount = $accountRepo->getNinjaAccount(); + $paymentDriver = $ninjaAccount->paymentDriver(); + $paymentDriver->refundPayment($this->payment); + + \Log::info("Refunded Plan Payment: {$account->name} - {$user->email} - Deadline: {$deadline->format('Y-m-d')}"); + + return true; + } + } + + return false; + } } diff --git a/resources/views/invoices/view.blade.php b/resources/views/invoices/view.blade.php index d35f5530c48f..e86bb0a78be4 100644 --- a/resources/views/invoices/view.blade.php +++ b/resources/views/invoices/view.blade.php @@ -127,10 +127,11 @@ @endif @else {!! Button::normal(trans('texts.download_pdf'))->withAttributes(['onclick' => 'onDownloadClick()'])->large() !!} - @if ($account->isNinjaAccount()) - {!! Button::primary(trans('texts.return_to_app'))->asLinkTo(URL::to('/settings/account_management'))->large() !!} - @endif @endif + + @if ($account->isNinjaAccount()) + {!! Button::primary(trans('texts.return_to_app'))->asLinkTo(URL::to('/settings/account_management'))->large() !!} + @endif @endif