diff --git a/app/Entities/BaseRepository.php b/app/Entities/BaseRepository.php index 67895bd..860569c 100755 --- a/app/Entities/BaseRepository.php +++ b/app/Entities/BaseRepository.php @@ -4,7 +4,6 @@ namespace App\Entities; use App\Entities\Users\User; use App\Entities\Projects\Job; -use App\Entities\Partners\Vendor; use App\Entities\Projects\Project; use App\Entities\Partners\Customer; @@ -28,21 +27,6 @@ abstract class BaseRepository extends EloquentRepository } /** - * Get list of customers and vendors. - * - * @return array - */ - public function getCustomersAndVendorsList() - { - $partners = [ - __('customer.customer') => Customer::orderBy('name')->pluck('name', 'id')->all(), - __('vendor.vendor') => Vendor::orderBy('name')->pluck('name', 'id')->all(), - ]; - - return $partners; - } - - /** * Get collection of workers. * * @return \Illuminate\Database\Eloquent\Collection @@ -53,28 +37,6 @@ abstract class BaseRepository extends EloquentRepository } /** - * Get collection of vendors. - * - * @return \Illuminate\Database\Eloquent\Collection - */ - public function getVendorsList() - { - return Vendor::where('is_active', 1) - ->orderBy('name') - ->pluck('name', 'id'); - } - - /** - * Get collection of projects. - * - * @return \Illuminate\Database\Eloquent\Collection - */ - public function getProjectsList() - { - return Project::orderBy('name')->pluck('name', 'id'); - } - - /** * Get Job by it's id. * * @param int $jobId diff --git a/app/Entities/Subscriptions/SubscriptionsRepository.php b/app/Entities/Subscriptions/SubscriptionsRepository.php deleted file mode 100755 index ec203d1..0000000 --- a/app/Entities/Subscriptions/SubscriptionsRepository.php +++ /dev/null @@ -1,52 +0,0 @@ -model->orderBy('status_id', 'desc') - ->orderBy('due_date') - ->where(function ($query) use ($q, $customerId) { - if ($customerId) { - $query->where('customer_id', $customerId); - } - - if ($q) { - $query->where('name', 'like', '%'.$q.'%'); - } - }) - ->with('customer', 'vendor') - ->paginate($this->_paginate); - } -} diff --git a/app/Http/Controllers/Controller.php b/app/Http/Controllers/Controller.php index 03e02a2..597e461 100644 --- a/app/Http/Controllers/Controller.php +++ b/app/Http/Controllers/Controller.php @@ -2,6 +2,9 @@ namespace App\Http\Controllers; +use App\Entities\Partners\Vendor; +use App\Entities\Projects\Project; +use App\Entities\Partners\Customer; use Illuminate\Foundation\Bus\DispatchesJobs; use Illuminate\Routing\Controller as BaseController; use Illuminate\Foundation\Validation\ValidatesRequests; @@ -10,4 +13,39 @@ use Illuminate\Foundation\Auth\Access\AuthorizesRequests; class Controller extends BaseController { use AuthorizesRequests, DispatchesJobs, ValidatesRequests; + + /** + * Get collection of projects. + * + * @return \Illuminate\Database\Eloquent\Collection + */ + public function getProjectsList() + { + return Project::orderBy('name')->pluck('name', 'id'); + } + + /** + * Get collection of vendors. + * + * @return \Illuminate\Database\Eloquent\Collection + */ + public function getVendorsList() + { + return Vendor::where('is_active', 1) + ->orderBy('name') + ->pluck('name', 'id'); + } + + /** + * Get list of customers and vendors. + * + * @return array + */ + public function getCustomersAndVendorsList() + { + return [ + __('customer.customer') => Customer::orderBy('name')->pluck('name', 'id')->all(), + __('vendor.vendor') => Vendor::orderBy('name')->pluck('name', 'id')->all(), + ]; + } } diff --git a/app/Http/Controllers/PaymentsController.php b/app/Http/Controllers/PaymentsController.php index 7f26ab5..6c1bc4a 100755 --- a/app/Http/Controllers/PaymentsController.php +++ b/app/Http/Controllers/PaymentsController.php @@ -54,8 +54,8 @@ class PaymentsController extends Controller */ public function create() { - $projects = $this->repo->getProjectsList(); - $partners = $this->repo->getCustomersAndVendorsList(); + $projects = $this->getProjectsList(); + $partners = $this->getCustomersAndVendorsList(); $project = Project::find(request('project_id')); return view('payments.create', compact('projects', 'partners', 'project')); @@ -94,14 +94,14 @@ class PaymentsController extends Controller */ public function edit(Payment $payment) { - $projects = $this->repo->getProjectsList(); + $projects = $this->getProjectsList(); if ($payment->partner_type == 'App\Entities\Users\User') { $partners = $this->repo->getWorkersList(); } elseif ($payment->partner_type == 'App\Entities\Partners\Customer') { $partners = [__('customer.customer') => $this->repo->getCustomersList()]; } else { - $partners = [__('vendor.vendor') => $this->repo->getVendorsList()]; + $partners = [__('vendor.vendor') => $this->getVendorsList()]; } return view('payments.edit', compact('payment', 'projects', 'partners')); diff --git a/app/Http/Controllers/Projects/JobsController.php b/app/Http/Controllers/Projects/JobsController.php index 01256d8..27a8eb9 100755 --- a/app/Http/Controllers/Projects/JobsController.php +++ b/app/Http/Controllers/Projects/JobsController.php @@ -40,7 +40,7 @@ class JobsController extends Controller { $selectedProject = null; $workers = $this->repo->getWorkersList(); - $projects = $this->repo->getProjectsList(); + $projects = $this->getProjectsList(); if ($request->has('project_id')) { $selectedProject = Project::find($request->get('project_id')); diff --git a/app/Http/Controllers/SubscriptionsController.php b/app/Http/Controllers/SubscriptionsController.php index 0d767cb..ae0b3eb 100755 --- a/app/Http/Controllers/SubscriptionsController.php +++ b/app/Http/Controllers/SubscriptionsController.php @@ -5,7 +5,6 @@ namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Entities\Subscriptions\Type; use App\Entities\Subscriptions\Subscription; -use App\Entities\Subscriptions\SubscriptionsRepository; use App\Http\Requests\SubscriptionRequest as FormRequest; /** @@ -16,21 +15,6 @@ use App\Http\Requests\SubscriptionRequest as FormRequest; class SubscriptionsController extends Controller { /** - * @var \App\Entities\Subscriptions\SubscriptionsRepository - */ - private $repo; - - /** - * Create new Subscription Controller. - * - * @param \App\Entities\Subscriptions\SubscriptionsRepository $repo - */ - public function __construct(SubscriptionsRepository $repo) - { - $this->repo = $repo; - } - - /** * Show subscription list. * * @param \Illuminate\Http\Request $request @@ -38,7 +22,7 @@ class SubscriptionsController extends Controller */ public function index(Request $request) { - $subscriptions = $this->repo->getSubscriptions( + $subscriptions = $this->getSubscriptionListing( $request->get('q'), $request->get('vendor_id') ); @@ -53,8 +37,8 @@ class SubscriptionsController extends Controller */ public function create() { - $projects = $this->repo->getProjectsList(); - $vendors = $this->repo->getVendorsList(); + $projects = $this->getProjectsList(); + $vendors = $this->getVendorsList(); return view('subscriptions.create', compact('projects', 'vendors')); } @@ -67,9 +51,8 @@ class SubscriptionsController extends Controller */ public function store(FormRequest $subscriptionCreateRequest) { - $subscriptionCreateRequest->approveFor(new Subscription()); - - flash(trans('subscription.created'), 'success'); + $subscriptionCreateRequest->approveToCreate(new Subscription()); + flash(__('subscription.created'), 'success'); return redirect()->route('subscriptions.index'); } @@ -95,8 +78,8 @@ class SubscriptionsController extends Controller */ public function edit(Subscription $subscription) { - $projects = $this->repo->getProjectsList(); - $vendors = $this->repo->getVendorsList(); + $projects = $this->getProjectsList(); + $vendors = $this->getVendorsList(); $pageTitle = $this->getPageTitle('edit', $subscription); @@ -112,9 +95,8 @@ class SubscriptionsController extends Controller */ public function update(FormRequest $subscriptionUpdateRequest, Subscription $subscription) { - $subscriptionUpdateRequest->approveFor($subscription); - - flash(trans('subscription.updated'), 'success'); + $subscriptionUpdateRequest->approveToUpdate($subscription); + flash(__('subscription.updated'), 'success'); return redirect()->route('subscriptions.edit', $subscription->id); } @@ -129,8 +111,7 @@ class SubscriptionsController extends Controller public function destroy(FormRequest $subscriptionDeleteRequest, Subscription $subscription) { $subscriptionDeleteRequest->approveToDelete($subscription); - - flash(trans('subscription.deleted'), 'success'); + flash(__('subscription.deleted'), 'success'); return redirect()->route('subscriptions.index'); } @@ -154,6 +135,29 @@ class SubscriptionsController extends Controller */ private function getPageTitle($pageType, $subscription) { - return trans('subscription.'.$pageType).' - '.$subscription->name.' - '.$subscription->customer->name; + return __('subscription.'.$pageType).' - '.$subscription->name.' - '.$subscription->customer->name; + } + + /** + * Get subscrioption list. + * + * @param string $searchQuery + * @param int $customerId + * @return \Illuminate\Pagination\LengthAwarePaginator + */ + private function getSubscriptionListing($searchQuery, $customerId) + { + $subscriptionQuery = Subscription::orderBy('status_id', 'desc') + ->orderBy('due_date') + ->with('customer', 'vendor'); + + if ($searchQuery) { + $subscriptionQuery->where('name', 'like', '%'.$searchQuery.'%'); + } + if ($customerId) { + $subscriptionQuery->where('customer_id', $customerId); + } + + return $subscriptionQuery->paginate(25); } } diff --git a/app/Http/Requests/SubscriptionRequest.php b/app/Http/Requests/SubscriptionRequest.php index 8d0695c..dc2c293 100644 --- a/app/Http/Requests/SubscriptionRequest.php +++ b/app/Http/Requests/SubscriptionRequest.php @@ -25,10 +25,6 @@ class SubscriptionRequest extends Request public function rules() { switch ($this->method()) { - case 'POST': - return $this->getCreateRules(); - break; - case 'PATCH': return $this->getUpdateRules(); break; @@ -38,6 +34,7 @@ class SubscriptionRequest extends Request break; default: + return $this->getCreateRules(); break; } } @@ -52,7 +49,7 @@ class SubscriptionRequest extends Request 'project_id' => 'required|numeric|exists:projects,id', 'vendor_id' => 'required|numeric|exists:vendors,id', 'type_id' => 'required|numeric', - 'remark' => 'max:255', + 'notes' => 'nullable|max:255', ]; } @@ -66,7 +63,7 @@ class SubscriptionRequest extends Request 'project_id' => 'required|numeric|exists:projects,id', 'vendor_id' => 'required|numeric|exists:vendors,id', 'type_id' => 'required|numeric', - 'remark' => 'max:255', + 'notes' => 'nullable|max:255', ]; } @@ -79,28 +76,33 @@ class SubscriptionRequest extends Request ]; } - public function approveFor(Subscription $subscription) + public function approveToCreate(Subscription $subscription) { $project = Project::findOrFail($this->get('project_id')); - if ($subscription->exists) { - $subscriptionData = $this->except(['_method', '_token']); - $subscriptionData['customer_id'] = $project->customer_id; - - $subscription->update($subscriptionData); - } else { - $subscription->project_id = $project->id; - $subscription->vendor_id = $this->get('vendor_id'); - $subscription->customer_id = $project->customer_id; - $subscription->name = $this->get('name'); - $subscription->price = $this->get('price'); - $subscription->start_date = $this->get('start_date'); - $subscription->due_date = $this->get('due_date'); - $subscription->type_id = $this->get('type_id'); - $subscription->notes = $this->get('notes'); - - $subscription->save(); - } + $subscription->project_id = $project->id; + $subscription->vendor_id = $this->get('vendor_id'); + $subscription->customer_id = $project->customer_id; + $subscription->name = $this->get('name'); + $subscription->price = $this->get('price'); + $subscription->start_date = $this->get('start_date'); + $subscription->due_date = $this->get('due_date'); + $subscription->type_id = $this->get('type_id'); + $subscription->notes = $this->get('notes'); + + $subscription->save(); + + return $subscription; + } + + public function approveToUpdate(Subscription $subscription) + { + $project = Project::findOrFail($this->get('project_id')); + + $subscriptionData = $this->except(['_method', '_token']); + $subscriptionData['customer_id'] = $project->customer_id; + + $subscription->update($subscriptionData); return $subscription; }