%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/PaymentsController.php |
<?php namespace App\Http\Controllers\Api\v1; use App\Http\Controllers\Api\ApiController; use App\Http\Requests\Api\v1\Payments\CreatePaymentRequest; use App\Models\BaseModel; use App\Models\Payment; use App\Models\Project; use App\Transformers\DayTransformer; use App\Transformers\PaymentTransformer; use Illuminate\Database\Eloquent\Builder; use Illuminate\Http\Request; use Throwable; class PaymentsController extends ApiController { /** * @var DayTransformer */ private $transformer; public function __construct(PaymentTransformer $transformer) { $this->transformer = $transformer; } public function index(Request $request) { $user = BaseModel::getLoggedInUser(); $data = Payment::query()->private($user); if ($projectId = $request->get('projectId')) { $data = $data->where('project_id', $projectId); } if ($search = $request->get('search')) { $data = $data->whereHas('project', function (Builder $q) use ($search) { $q->where('name', 'like', "%$search%") ->orWhere('code', 'like', "%search%"); }); } $data = $data->paginate($request->get('per_page')); return $this->collection($data, $this->transformer); } public function store(CreatePaymentRequest $request) { try { $day = Payment::createItem($request->only([ 'amount', 'project_id', ])); return $this->item($day, $this->transformer); } catch (Throwable $e) { return $this->wrongArguments([ 'message' => $e->getMessage(), ]); } } public function destroy($payment) { Payment::destroy($payment); return $this->noContent(); } public function paymentReceived(Payment $payment) { try { $payment->paid(); } catch (Throwable $e) { return $this->wrongArguments($e->getMessage()); } return $this->item($payment, $this->transformer); } public function getProject(Project $project) { $data = $project->getPaymentInfo(); return response()->json([ 'data' => $data, ], 200); } public function getMonthly(Request $request) { return Payment::getMonthly(); } public function awaitingPayment(Request $request) { return Payment::awaitingPayment(); } }