repo = $repo; } public function index(Request $request) { $subscriptions = $this->repo->getSubscriptions($request->get('q'), $request->get('vendor_id')); return view('subscriptions.index', compact('subscriptions')); } public function create() { $projects = $this->repo->getProjectsList(); $vendors = $this->repo->getVendorsList(); $subscriptionTypes = $this->getSubscriptionTypes(); return view('subscriptions.create', compact('projects', 'vendors', 'subscriptionTypes')); } public function store(FormRequest $subscriptionCreateRequest) { $subscriptionCreateRequest->approveFor(new Subscription); flash()->success(trans('subscription.created')); return redirect()->route('subscriptions.index'); } public function show(Subscription $subscription) { $pageTitle = $this->getPageTitle('detail', $subscription); return view('subscriptions.show', compact('subscription', 'pageTitle')); } public function edit(Subscription $subscription) { $projects = $this->repo->getProjectsList(); $vendors = $this->repo->getVendorsList(); $subscriptionTypes = $this->getSubscriptionTypes(); $pageTitle = $this->getPageTitle('edit', $subscription); return view('subscriptions.edit', compact('subscription', 'projects', 'vendors', 'subscriptionTypes', 'pageTitle')); } public function update(FormRequest $subscriptionUpdateRequest, Subscription $subscription) { $subscriptionUpdateRequest->approveFor($subscription); flash()->success(trans('subscription.updated')); return redirect()->route('subscriptions.edit', $subscription->id); } public function destroy(FormRequest $subscriptionDeleteRequest, Subscription $subscription) { $subscriptionDeleteRequest->approveToDelete($subscription); flash()->success(trans('subscription.deleted')); return redirect()->route('subscriptions.index'); } private function getSubscriptionTypes() { return [ 1 => trans('subscription.types.domain'), 2 => trans('subscription.types.hosting'), ]; } private function getPageTitle($pageType, $subscription) { return trans('subscription.'.$pageType).' - '.$subscription->name.' - '.$subscription->customer->name; } }