You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
111 lines
3.6 KiB
111 lines
3.6 KiB
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use App\Entities\Subscriptions\Subscription;
|
|
use App\Entities\Subscriptions\SubscriptionsRepository;
|
|
use App\Http\Controllers\Controller;
|
|
use App\Http\Requests\Subscriptions\CreateRequest;
|
|
use App\Http\Requests\Subscriptions\DeleteRequest;
|
|
use App\Http\Requests\Subscriptions\UpdateRequest;
|
|
use Illuminate\Http\Request;
|
|
|
|
class SubscriptionsController extends Controller
|
|
{
|
|
|
|
private $repo;
|
|
|
|
public function __construct(SubscriptionsRepository $repo)
|
|
{
|
|
$this->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(CreateRequest $request)
|
|
{
|
|
$project = \App\Entities\Projects\Project::findOrFail($request->get('project_id'));
|
|
|
|
$subscription = new Subscription;
|
|
$subscription->project_id = $project->id;
|
|
$subscription->vendor_id = $request->get('vendor_id');
|
|
$subscription->customer_id = $project->customer_id;
|
|
$subscription->name = $request->get('name');
|
|
$subscription->price = $request->get('price');
|
|
$subscription->start_date = $request->get('start_date');
|
|
$subscription->due_date = $request->get('due_date');
|
|
$subscription->type_id = $request->get('type_id');
|
|
$subscription->notes = $request->get('notes');
|
|
$subscription->save();
|
|
|
|
flash()->success(trans('subscription.created'));
|
|
return redirect()->route('subscriptions.index');
|
|
}
|
|
|
|
public function show(Subscription $subscription)
|
|
{
|
|
return view('subscriptions.show', compact('subscription'));
|
|
}
|
|
|
|
public function edit(Subscription $subscription)
|
|
{
|
|
$projects = $this->repo->getProjectsList();
|
|
$vendors = $this->repo->getVendorsList();
|
|
$subscriptionTypes = $this->getSubscriptionTypes();
|
|
|
|
return view('subscriptions.edit', compact('subscription', 'projects', 'vendors', 'subscriptionTypes'));
|
|
}
|
|
|
|
public function update(UpdateRequest $request, Subscription $subscription)
|
|
{
|
|
$project = \App\Entities\Projects\Project::findOrFail($request->get('project_id'));
|
|
|
|
$subscriptionData = $request->except(['_method', '_token']);
|
|
$subscriptionData['customer_id'] = $project->customer_id;
|
|
|
|
$subscription->update($subscriptionData);
|
|
|
|
flash()->success(trans('subscription.updated'));
|
|
return redirect()->route('subscriptions.edit', $subscription->id);
|
|
}
|
|
|
|
public function delete(Subscription $subscription)
|
|
{
|
|
return view('subscriptions.delete', compact('subscription'));
|
|
}
|
|
|
|
public function destroy(DeleteRequest $request, Subscription $subscription)
|
|
{
|
|
if ($subscription->id == $request->get('subscription_id')) {
|
|
$subscription->delete();
|
|
flash()->success(trans('subscription.deleted'));
|
|
} else {
|
|
flash()->error(trans('subscription.undeleted'));
|
|
}
|
|
|
|
return redirect()->route('subscriptions.index');
|
|
}
|
|
|
|
public function getSubscriptionTypes()
|
|
{
|
|
return [
|
|
1 => trans('subscription.types.domain'),
|
|
2 => trans('subscription.types.hosting'),
|
|
];
|
|
}
|
|
|
|
}
|