Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public function index(Request $request)
- {
- try {
- $limit = 20;
- $query = WorkGroup::query()
- ->with([
- 'type',
- 'group_subs' => function ($q1) use ($request) {
- $q1->leftJoin('work_group_subs AS subGroup', function ($q2) use ($request) {
- $q2->on('work_group_subs.id', '<', 'subGroup.id')
- ->on('work_group_subs.sub_id', '=', 'subGroup.sub_id')
- ->where('subGroup.version_id', '<=', DB::raw($request->version_id))
- ->whereNull('subGroup.deleted_at');
- })->whereNull('subGroup.id');
- if ($request->has('version_id')) {
- $q1->where('work_group_subs.version_id', '<=', $request->version_id);
- } else {
- $q1->where('work_group_subs.version_id', 1);
- }
- $q1->oldest('work_group_subs.order_by')
- ->select('work_group_subs.*');
- },
- 'group_subs.description_mains' => function ($q1) use ($request) {
- $q1->leftJoin('work_description_mains AS work', function ($q2) use ($request) {
- $q2->on('work_description_mains.id', '<', 'work.id')
- ->on('work_description_mains.work_desc_main_id', '=', 'work.work_desc_main_id')
- ->where('work.version_id', '<=', DB::raw($request->version_id))
- ->whereNull('work.deleted_at');
- })->whereNull('work.id');
- if ($request->has('version_id')) {
- $q1->where('work_description_mains.version_id', '<=', $request->version_id);
- } else {
- $q1->where('work_description_mains.version_id', 1);
- }
- $q1->oldest('work_description_mains.order_by')
- ->select('work_description_mains.*');
- },
- 'group_subs.description_mains.work_descriptions' => function ($q1) use ($request) {
- $q1->leftJoin('work_descriptions AS description', function ($q2) use ($request) {
- $q2->on('work_descriptions.id', '<', 'description.id')
- ->on('work_descriptions.work_desc_id', '=', 'description.work_desc_id')
- ->where('description.version_id', '<=', DB::raw($request->version_id))
- ->whereNull('description.deleted_at');
- })->whereNull('description.id');
- if ($request->has('version_id')) {
- $q1->where('work_descriptions.version_id', '<=', $request->version_id);
- } else {
- $q1->where('work_descriptions.version_id', 1);
- }
- $q1->select('work_descriptions.*');
- },
- 'group_subs.description_mains.work_descriptions.work_cost' => function ($q1) use ($request) {
- $q1->where('work_costs.worker_id', 4)
- ->leftJoin('work_costs AS cost', function ($q2) use ($request) {
- $q2->on('work_costs.id', '<', 'cost.id')
- ->on('work_costs.work_cost_id', '=', 'cost.work_cost_id')
- ->where('cost.version_id', '<=', DB::raw($request->version_id))
- ->whereNull('cost.deleted_at');
- })->whereNull('cost.id');
- if ($request->has('version_id')) {
- $q1->where('work_costs.version_id', '<=', $request->version_id);
- } else {
- $q1->where('work_costs.version_id', 1);
- }
- $q1->select('work_costs.*');
- },
- 'group_subs.description_mains.work_descriptions.work_cost_technician' => function ($q1) use ($request) {
- $q1->where('work_costs.worker_id', 1)
- ->leftJoin('work_costs AS cost', function ($q2) use ($request) {
- $q2->on('work_costs.id', '<', 'cost.id')
- ->on('work_costs.work_cost_id', '=', 'cost.work_cost_id')
- ->where('cost.version_id', '<=', DB::raw($request->version_id))
- ->whereNull('cost.deleted_at');
- })->whereNull('cost.id');
- if ($request->has('version_id')) {
- $q1->where('work_costs.version_id', '<=', $request->version_id);
- } else {
- $q1->where('work_costs.version_id', 1);
- }
- $q1->select('work_costs.*');
- }
- ]);
- $query->leftJoin('work_groups AS group', function ($q) use ($request) {
- $q->on('work_groups.id', '<', 'group.id')
- ->on('work_groups.group_id', '=', 'group.group_id')
- ->where('group.version_id', '<=', DB::raw($request->version_id))
- ->whereNull('group.deleted_at');
- })->whereNull('group.id');
- if ($request->has('version_id')) {
- $query->where('work_groups.version_id', '<=', $request->version_id);
- } else {
- $query->where('work_groups.version_id', 1);
- }
- $query->oldest('work_groups.order_by')
- ->select('work_groups.*');
- $groups = $query->paginate($limit);
- $page = paginator($groups, $limit);
- return $this->sendResponse(WorkGroupResource::collection($groups), 'Version retrieved successfully.', $page);
- } catch (\Exception $e) {
- return $this->sendError("Version can't retrieved!", $e->getMessage());
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement