getFromDate() and $toDate = $transactionAllAttr->getToDate()) { // $billLo = $billLo->whereBetween('bill_date', [formatDate($fromDate), formatDate($toDate)]); // } // return $billLo->get(); // } // public function updateStatus($id, $status) // { // $billLo = Bill::find($id); // $billLo->update([ // 'status' => $status // ]); // return $this->fetch($id); // } // public function getLastRow() // { // return Bill::orderBy('id', 'desc')->first(); // } // public function getRandomIds($limit = 10) // { // $billLo = Bill::select('id')->limit($limit)->inRandomOrder(); // return array_keys($billLo->get()->toArray(), 'id') ?? null; // } // public function getRandomId($limit = 10) // { // $billLo = Bill::limit($limit)->inRandomOrder(); // return $billLo->first()->id ?? null; // } // public function select2Paginate(BillSelect2PaginateAttr $billLoSelect2PaginateAttr): PaginateCollectionAttr // { // $billLo = Bill::selectRaw('id, no_bill as text, amount'); // if ($supplierId = $billLoSelect2PaginateAttr->getHasSupplier()) { // $billLo = $billLo->whereHas('BillLabourOrder', function ($q) use ($supplierId) { // return $q->where('supplier_id', $supplierId); // }); // } // if ($billLoSelect2PaginateAttr->getUnpaidOnly()) { // $billLo = $billLo->unpaid( // $billLoSelect2PaginateAttr->getExceptPaymentId() // ); // } // return (new PaginateCollectionAttrBuilder) // ->build( // $billLo, // $billLoSelect2PaginateAttr, // new PaginateSchemaBill // ); // } // public function paginate(PaginateBuilderAttr $paginateBuilderAttr): PaginateCollectionAttr // { // return (new PaginateCollectionAttrBuilder) // ->build( // Bill::with('BillLabourOrder.supplier'), // $paginateBuilderAttr, // new PaginateSchemaBill // ); // } public function fetch($id) { return BillLabourOrder::findOrFail($id); } public function create(BillLabourOrderAttr $billLoLabourOrderAttr) { $billLoLabourOrder = BillLabourOrder::create([ "labour_order_id" => $billLoLabourOrderAttr->getLabourOrderId(), "project_id" => $billLoLabourOrderAttr->getProjectId(), "bill_date" => $billLoLabourOrderAttr->getBillDate(), "due_date" => $billLoLabourOrderAttr->getDueDate(), "amount" => $billLoLabourOrderAttr->getAmount(), "status" => $billLoLabourOrderAttr->getStatus(), "balance_due" => $billLoLabourOrderAttr->getBalanceDue(), "bill_name" => $billLoLabourOrderAttr->getBillName() ]); return $this->fetch($billLoLabourOrder->id); } public function update(BillLabourOrderAttr $billLoLabourOrderAttr, $id) { $billLo = $this->fetch($id); $billLo->update([ "labour_order_id" => $billLoLabourOrderAttr->getLabourOrderId(), "project_id" => $billLoLabourOrderAttr->getProjectId(), "bill_date" => $billLoLabourOrderAttr->getBillDate(), "due_date" => $billLoLabourOrderAttr->getDueDate(), "amount" => $billLoLabourOrderAttr->getAmount(), "status" => $billLoLabourOrderAttr->getStatus(), "balance_due" => $billLoLabourOrderAttr->getBalanceDue(), "bill_name" => $billLoLabourOrderAttr->getBillName() ]); return $this->fetch($id); } public function delete($id) { $billLo = $this->fetch($id); $billLo->delete(); return $billLo; } public function select2NoRef(?string $search) { $supplier = LabourOrder::selectRaw('id, lo_number as text'); return (new PaginateCollectionAttrBuilder) ->build( $supplier, (new PaginateBuilderAttr)->setSearchKeyword($search), new PaginateSchemaLabourOrder ); } public function select2Paginate(BillLoSelect2PaginateAttr $billLoSelect2PaginateAttr): PaginateCollectionAttr { $billLo = BillLabourOrder::selectRaw('id, bill_no as text, amount, lo_id, status'); if ($projectId = $billLoSelect2PaginateAttr->getHasProject()) { $billLo = $billLo->whereHas('labourOrder', function ($q) use ($projectId) { return $q->where('project_id', $projectId); }); } if ($billLoSelect2PaginateAttr->getUnpaidOnly()) { $billLo = $billLo->unpaid( $billLoSelect2PaginateAttr->getExceptPaymentId() ); } return (new PaginateCollectionAttrBuilder) ->build( $billLo, $billLoSelect2PaginateAttr, new PaginateSchemaBillLo ); } }