level == 'ARSITEK' || Auth::user()->level == 'DRAFTER' || Auth::user()->level == 'QUANTITY SURVEYOR' || Auth::user()->level == 'SUPERVISI - ALUMNI') { $rab = Rab::whereDoesntHave('mp_planning')->whereHas('client', function($q){ $q->where('id_user', Auth::user()->id); })->get(); } else { $rab = Rab::whereDoesntHave('mp_planning')->get(); } return view('staff.mp-planning-create', compact('rab')); } /** * Store a newly created resource in storage. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ public function store(Request $request) { $id = $request->get('id_rab'); $mp_planning = MpPlanning::where('id_rab',$id)->first(); if ($mp_planning) { $mp_planning->jumlah_tukang = $request->jumlah_tukang; $mp_planning->upah_tukang_rata_rata = str_replace('.', '', $request->upah_tukang_rata_rata); $mp_planning->save(); }else{ MpPlanning::create([ 'id_rab' => $id, 'jumlah_tukang' => $request->jumlah_tukang, 'upah_tukang_rata_rata' => str_replace('.', '', $request->upah_tukang_rata_rata), 'id_user' => Auth::user()->id ]); } return redirect()->route('mp_planning.show',$id)->with('msg','MP Planning berhasil dibuat'); } /** * Display the specified resource. * * @param int $id * @return \Illuminate\Http\Response */ public function show(Request $request,$id) { if (\Request::ajax()) { if (isset($_GET['act'])) { if ($_GET['act'] == 'mpplanningdata') { $columns = array( 0 => 'id', ); if(Auth::user()->level == 'ARSITEK' || Auth::user()->level == 'DRAFTER' || Auth::user()->level == 'QUANTITY SURVEYOR' || Auth::user()->level == 'SUPERVISI - ALUMNI') { $totalData = MpPlanning::whereHas('rab.client', function($q) { $q->where('clients.id_user', Auth::user()->id); })->count(); } else { $totalData = MpPlanning::count(); } $totalFiltered = $totalData; $limit = $request->input('length'); $start = $request->input('start'); $order = $columns[$request->input('order.0.column')]; $dir = $request->input('order.0.dir'); if (empty($request->input('search.value'))) { if(Auth::user()->level == 'ARSITEK' || Auth::user()->level == 'DRAFTER' || Auth::user()->level == 'QUANTITY SURVEYOR' || Auth::user()->level == 'SUPERVISI - ALUMNI') { $rabs = MpPlanning::whereHas('rab.client', function($q) { $q->where('clients.id_user', Auth::user()->id); }) ->offset($start) ->limit($limit) ->orderBy($order, $dir) ->get(); } else { $rabs = MpPlanning::offset($start) ->limit($limit) ->orderBy($order, $dir) ->get(); } }else{ $search = $request->input('search.value'); if(Auth::user()->level == 'ARSITEK' || Auth::user()->level == 'DRAFTER' || Auth::user()->level == 'QUANTITY SURVEYOR' || Auth::user()->level == 'SUPERVISI - ALUMNI') { $rabs = MpPlanning::whereHas('rab.client', function($q) { $q->where('clients.id_user', Auth::user()->id); })->orWhereHas('rab', function($q) use($search) { $q->where('nama_rab', 'LIKE', "%{$search}%"); }) ->offset($start) ->limit($limit) ->orderBy($order, $dir) ->get(); $totalFiltered = MpPlanning::whereHas('rab.client', function($q) { $q->where('clients.id_user', Auth::user()->id); })->orWhereHas('rab', function($q) use($search) { $q->where('nama_rab', 'LIKE', "%{$search}%"); }) ->count(); } else { $rabs = MpPlanning::whereHas('rab', function($q) use($search) { $q->where('nama_rab', 'LIKE', "%{$search}%"); }) ->offset($start) ->limit($limit) ->orderBy($order, $dir) ->get(); $totalFiltered = MpPlanning::whereHas('rab', function($q) use($search) { $q->where('nama_rab', 'LIKE', "%{$search}%"); }) ->count(); } } $data = array(); if (!empty($rabs)) { foreach ($rabs as $row) { $nestedData['rab'] = $row->rab->nama_rab; $nestedData['target'] = round(MpPlanningController::getTarget($row->id_rab),2).' hari'; $nestedData['jumlah_tukang'] = $row->jumlah_tukang; $nestedData['upah'] = 'Rp' . number_format($row->upah_tukang_rata_rata,2,',','.'); if($row->id_user != NULL) { $nestedData['created_by'] = $row->user->fullname; } else { $nestedData['created_by'] = ''; } $nestedData['opsi'] = ''; if(RoleController::access('mp_planning', 'edit') > 0) { $nestedData['opsi'] .= " edit "; } if(RoleController::access('mp_planning', 'delete') > 0) { $nestedData['opsi'] .= "
" . csrf_field() . " " . method_field('delete') . "
"; } if(RoleController::access('mp_planning', 'view') > 0) { $nestedData['opsi'] .= " detail "; } $data[] = $nestedData; } } $json_data = array( "draw" => intval($request->input('draw')), "recordsTotal" => intval($totalData), "recordsFiltered" => intval($totalFiltered), "data" => $data, ); echo json_encode($json_data); } } }else{ $rab = Rab::findOrFail($id); $rabDetails = AhsKategori::with(['subkategoris.ahsS' => function($q) use ($rab){ $q->whereHas('rabDetail',function($q2) use ($rab){ $q2->where('id_rab',$rab->id); })->with(['rabDetail' => function($q2) use ($rab){ $q2->where('id_rab',$rab->id); }]); }])->with(['subkategoris.vendors' => function($q) use ($rab){ $q->whereHas('rabDetail',function($q2) use ($rab){ $q2->where('id_rab',$rab->id); })->with(['rabDetail' => function($q2) use ($rab){ $q2->where('id_rab',$rab->id); }]); }])->orderBy('urutan','asc')->get(); return view('staff.mp-planning-detail',compact('rab','rabDetails')); } } public static function getTotalUpah($id_ahs,$id_rab) { $rab = Rab::where('id',$id_rab)->first(); if ($rab) { $total_upah = AhsDetailUpah::selectRaw('sum(ahs_detail_upah.koefisien * upah.upah) as total') ->join('upah','ahs_detail_upah.id_upah','upah.id') ->where('id_ahs',$id_ahs)->first()->total; if ($rab->id) { $rab_detail = RabDetail::where([['id_ahs',$id_ahs],['id_rab',$rab->id]])->first(); if ($rab_detail) { return $total_upah * $rab_detail->volume; }else{ return 0; } }else{ return 0; } } } public static function getMpPlanning($id_ahs,$id_rab) { $rab = Rab::where('id',$id_rab)->first(); if ($rab) { $mp_planning = MpPlanning::where('id_rab',$rab->id)->first(); if ($mp_planning) { $total_upah = MpPlanningController::getTotalUpah($id_ahs,$id_rab); return $total_upah / ($mp_planning->jumlah_tukang * $mp_planning->upah_tukang_rata_rata); }else{ return 0; } }else{ return '-'; } } public static function getTarget($id_rab) { $rab = Rab::where('id',$id_rab)->first(); $mp_planning = 0; foreach ($rab->rabDetails as $row) { $mp_planning += MpPlanningController::getMpPlanning($row->id_ahs,$rab->id); } return $mp_planning; } /** * Show the form for editing the specified resource. * * @param int $id * @return \Illuminate\Http\Response */ public function edit($id) { $rab = Rab::findOrFail($id); $rabDetails = AhsKategori::with(['subkategoris.ahsS' => function($q) use ($rab){ $q->whereHas('rabDetail',function($q2) use ($rab){ $q2->where('id_rab',$rab->id); })->with(['rabDetail' => function($q2) use ($rab){ $q2->where('id_rab',$rab->id); }]); }])->with(['subkategoris.vendors' => function($q) use ($rab){ $q->whereHas('rabDetail',function($q2) use ($rab){ $q2->where('id_rab',$rab->id); })->with(['rabDetail' => function($q2) use ($rab){ $q2->where('id_rab',$rab->id); }]); }])->orderBy('urutan','asc')->get(); return view('staff.mp-planning-edit',compact('rab','rabDetails')); } /** * Update the specified resource in storage. * * @param \Illuminate\Http\Request $request * @param int $id * @return \Illuminate\Http\Response */ public function update(Request $request, $id) { $mp_planning = MpPlanning::where('id_rab',$id)->first(); if ($mp_planning) { $mp_planning->jumlah_tukang = $request->jumlah_tukang; $mp_planning->upah_tukang_rata_rata = str_replace('.', '', $request->upah_tukang_rata_rata); $mp_planning->save(); }else{ MpPlanning::create([ 'id_rab' => $id, 'jumlah_tukang' => $request->jumlah_tukang, 'upah_tukang_rata_rata' => str_replace('.', '', $request->upah_tukang_rata_rata), ]); } return redirect()->route('mp_planning.show',$id)->with('msg','MP Planning berhasil dibuat'); } /** * Remove the specified resource from storage. * * @param int $id * @return \Illuminate\Http\Response */ public function destroy($id) { MpPlanning::destroy($id); return redirect()->route('mp_planning.index')->with('msg', 'Mp Planning Berhasil Dihapus'); } public function getRab(Request $request) { $id_rab = $request->get('id_rab'); $rab = Rab::findOrFail($id_rab); $rabDetails = AhsKategori::with(['subkategoris.ahsS' => function($q) use ($rab){ $q->whereHas('rabDetail',function($q2) use ($rab){ $q2->where('id_rab',$rab->id); })->with(['rabDetail' => function($q2) use ($rab){ $q2->where('id_rab',$rab->id); }]); }])->with(['subkategoris.vendors' => function($q) use ($rab){ $q->whereHas('rabDetail',function($q2) use ($rab){ $q2->where('id_rab',$rab->id); })->with(['rabDetail' => function($q2) use ($rab){ $q2->where('id_rab',$rab->id); }]); }])->orderBy('urutan','asc')->get(); $html = ''; $html .= '
'; $total = 0; $total_planning = 0; foreach($rabDetails as $row) { $tampilkan_kategori = false; foreach($row->subkategoris as $row2) { if($row2->ahsS->count() > 0 or $row2->vendors->count() > 0) { $tampilkan_kategori = true; } } $html .= ''; if($tampilkan_kategori) { $html .= ''; } foreach($row->subkategoris as $row2) { if($row2->ahsS->count() > 0 or $row2->vendors->count() > 0) { $html .= ''; $subtotal = 0; foreach($row2->ahsS as $row3) { $html .= ''; $total_planning += MpPlanningController::getMpPlanning($row3->id,$rab->id); $subtotal += $row3->rabDetail->subtotal; } foreach($row2->vendors as $row3) { $html .= ''; $total_planning += MpPlanningController::getMpPlanning($row3->id,$rab->id); $subtotal += $row3->rabDetail->subtotal; } $html .= ''; $total += $subtotal; } } $html .= ''; } $html .= '
'. $row->nama_kategori .'
'. $row2->nama_subkategori .'
Pekerjaan Dimensi & Spesifikasi Deskripsi Volume Satuan Harga Satuan Total Harga Total Upah Target Hari
'. $row3->nama_pekerjaan .' '. $row3->dimensi_spesifikasi .' '. $row3->rabDetail->deskripsi .' '. $row3->rabDetail->volume .' '. $row3->satuan .' '. 'Rp'. number_format($row3->rabDetail->harga,0,"",".") .' '. 'Rp'. number_format($row3->rabDetail->subtotal,0,"",".") .' Rp'. number_format(MpPlanningController::getTotalUpah($row3->id,$rab->id),0,"",".") .' '. round(MpPlanningController::getMpPlanning($row3->id,$rab->id),2) .'
'. $row3->vendor->nama_pekerjaan .' '. $row3->vendor->dimensi_spesifikasi .' '. $row3->rabDetail->deskripsi .' '. $row3->rabDetail->volume .' '. $row3->vendor->satuan .' Rp'.number_format($row3->rabDetail->harga,0,"",".") .' Rp'. number_format($row3->rabDetail->subtotal,0,"",".") .' - -
Subtotal : Rp'. number_format($subtotal,0,"",".") .'  
Total : Rp' .number_format($total,0,"",".") .'   '. round(MpPlanningController::getTarget($rab->id),2) .'
'; if (RoleController::access('mp_planning', 'create') > 0) { $html .= ' '; } $html .= '
'; echo $html; } }