%PDF- %PDF-
Direktori : /var/www/html/hrsys/api/app/Http/Controllers/Api/v1/ |
Current File : /var/www/html/hrsys/api/app/Http/Controllers/Api/v1/MaintenancePaymentsController.php |
<?php namespace App\Http\Controllers\Api\v1; use App\Http\Controllers\Api\ApiController; use App\Http\Requests\Api\v1\MaintenancePayments\CreateMaintenancePaymentRequest; use App\Http\Requests\Api\v1\MaintenancePayments\UpdateMaintenancePaymentRequest; use App\Models\MaintenancePayment; use App\Transformers\DayTransformer; use App\Transformers\MaintenancePaymentTransactionTransformer; use App\Transformers\MaintenancePaymentTransformer; use Illuminate\Database\Eloquent\Builder; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; use Throwable; class MaintenancePaymentsController extends ApiController { /** * @var DayTransformer */ private $transformer; public function __construct(MaintenancePaymentTransformer $transformer) { $this->transformer = $transformer; } public function index(Request $request) { $data = MaintenancePayment::query(); if ($search = $request->get('search')) { $data = $data->where('name', 'like', "%$search%") ->orWhere('description', 'like', "%$search%") ->orWhereHas('client', function (Builder $q) use ($search) { $q->where('name', 'like', "%$search%"); }); } $data = $data->orderBy('is_active', 'desc') ->orderBy('next_payment_date') ->paginate($request->get('per_page')); return $this->collection($data, $this->transformer); } public function show(MaintenancePayment $maintenancePayment) { return $this->item($maintenancePayment, $this->transformer); } public function store(CreateMaintenancePaymentRequest $request) { try { $payment = MaintenancePayment::createItem($request->only([ 'name', 'description', 'amount', 'currency', 'start_date', 'cycle', 'client_id', 'type', ])); return $this->item($payment, $this->transformer); } catch (Throwable $e) { return $this->wrongArguments([ 'message' => $e->getMessage(), ]); } } /** * @param UpdateMaintenancePaymentRequest $request * @param MaintenancePayment $maintenancePayment * @return JsonResponse */ public function update(UpdateMaintenancePaymentRequest $request, MaintenancePayment $maintenancePayment) { try { $payment = $maintenancePayment->updateItem($request->only([ 'name', 'description', 'amount', 'currency', 'cycle', ])); return $this->item($payment, $this->transformer); } catch (Throwable $e) { return $this->wrongArguments([ 'message' => $e->getMessage(), ]); } } public function paymentReceived(MaintenancePayment $payment) { try { $payment->paymentReceived(); } catch (Throwable $e) { return $this->wrongArguments($e->getMessage()); } return $this->item($payment, $this->transformer); } public function cancel(MaintenancePayment $payment) { try { $payment->cancel(); } catch (Throwable $e) { return $this->wrongArguments($e->getMessage()); } return $this->item($payment, $this->transformer); } public function getTransactions(MaintenancePayment $payment) { return $this->collection($payment->transactions, new MaintenancePaymentTransactionTransformer()); } }