parent_id) { $result = unitPrice::with(['unitPriceSubcategory', 'fees', 'materials', 'vendorProducts', 'qualityControls.qualityControlDetails', 'childs' => function ($q) { $q->with('fees', 'materials', 'vendorProducts', 'parent', 'qualityControls.qualityControlDetails'); }])->findOrFail($id); } else { $result = UnitPrice::with('unitPriceSubcategory', 'fees', 'materials', 'vendorProducts', 'parent', 'qualityControls.qualityControlDetails')->findOrFail($id); } return $result; } public function unitPriceBySubcategory($unitPriceSubcategoryid, $budgetPlanId, $queryString) { if ($budgetPlanId) { if ($queryString) { $res = UnitPrice::with(['fees', 'materials', 'vendorProducts', 'childs' => function ($q) use ($budgetPlanId) { $q->with(['fees', 'materials', 'vendorProducts', 'budgetPlanPrice' => function ($p) use ($budgetPlanId) { $p->where('budget_plan_id', $budgetPlanId); }]); $q->orderBy('sequence_number', 'asc'); $q->where('hidden', 0); $q->where('status', 'approved'); }, 'budgetPlanPrice' => function ($q) use ($budgetPlanId) { $q->where('budget_plan_id', $budgetPlanId); }]) ->where('unit_price_subcategory_id', $unitPriceSubcategoryid) ->where('parent_id', null) ->where('hidden', 0) ->where('status', 'approved') ->orderBy('sequence_number', 'asc') ->get(); } else { $res = UnitPrice::with(['fees', 'materials', 'vendorProducts', 'childs' => function ($q) use ($budgetPlanId) { $q->with(['fees', 'materials', 'vendorProducts', 'budgetPlanPrice' => function ($p) use ($budgetPlanId) { $p->where('budget_plan_id', $budgetPlanId); }]); $q->orderBy('sequence_number', 'asc'); $q->where('status', 'approved'); }, 'budgetPlanPrice' => function ($q) use ($budgetPlanId) { $q->where('budget_plan_id', $budgetPlanId); }]) ->where('unit_price_subcategory_id', $unitPriceSubcategoryid) ->whereHas('budgetPlanPrice', function ($q) use ($budgetPlanId){ $q->where('budget_plan_id', $budgetPlanId); }) ->where('parent_id', null) ->where('status', 'approved') ->orderBy('sequence_number', 'asc') ->get(); } } else { if ($queryString) { $res = UnitPrice::where('unit_price_subcategory_id', $unitPriceSubcategoryid) ->with(['fees', 'materials', 'vendorProducts', 'childs' => function ($q) { $q->with(['fees', 'materials', 'vendorProducts']); $q->orderBy('sequence_number', 'asc'); $q->where('hidden', 0); $q->where('status', 'approved'); }]) ->where('parent_id', null) ->where('hidden', 0) ->where('status', 'approved') ->orderBy('sequence_number', 'asc') ->get(); } else { $res = UnitPrice::where('unit_price_subcategory_id', $unitPriceSubcategoryid) ->with(['fees', 'materials', 'vendorProducts', 'childs' => function ($q) { $q->with(['fees', 'materials', 'vendorProducts']); $q->orderBy('sequence_number', 'asc'); $q->where('status', 'approved'); }]) ->where('parent_id', null) ->where('status', 'approved') ->orderBy('sequence_number', 'asc') ->get(); } } return $res; } public function sequenceNumber($request) { foreach ($request ?? [] as $key => $value) { $result = $this->fetch($value); $result->update([ 'sequence_number' => $key ]); } return true; } public function unitPriceWhereSubcategoryId($id) { return UnitPrice::where('unit_price_subcategory_id', $id) ->with(['fees', 'materials', 'vendorProducts', 'childs' => function ($q) { $q->with('fees', 'materials', 'vendorProducts'); }]) ->get(); } public function forPoMaterial($materialId, $unitPriceId) { return DB::connection('mysql_proj')->table('unit_price_materials') ->where("unit_price_id", $unitPriceId) ->where("material_id", $materialId) ->first()->qty ?? 0; } public function forPoVendorProduct($vendorProductId, $budgetPlanId) { return UnitPrice::selectRaw('id, name')->with(['budgetPlanPrice' => function ($query) use ($budgetPlanId) { $query->selectRaw('id, budget_plan_id, unit_price_id, qty'); $query->where('budget_plan_id', $budgetPlanId); }, 'vendorProducts' => function ($query) use ($vendorProductId) { $query->where('id', $vendorProductId); }])->whereHas('vendorProducts', function ($query) use ($vendorProductId) { $query->where('id', $vendorProductId); })->whereHas('budgetPlanPrice', function ($query) use ($budgetPlanId) { $query->where('budget_plan_id', $budgetPlanId); })->get(); } }