middleware(function ($request, $next) { return $next($request); }); } public function index(Request $request) { $menu_master = ''; set_time_limit(0); $materials = Material::all(); $upahs = Upah::all(); $ahsKategoris = AhsKategori::orderBy('urutan', 'asc')->get(); $vendorKategoris = VendorKategori::orderBy('urutan', 'asc')->get(); if ($request->load === "my_ahs") { $ahsKategoris = AhsKategori::whereHas('subkategoris.ahsS', function ($q) { $q->where([["user_id", Auth::user()->id],["status", "non approve"]]); })->orWhereHas('subkategoris.vendors', function ($q) { $q->where([["user_id", Auth::user()->id],["status", "non approve"]]); })->get(); return view('staff.list-my-ahs', compact('ahsKategoris', 'vendorKategoris', 'upahs', 'materials', 'menu_master')); } return view('staff.list-ahs', compact('ahsKategoris', 'vendorKategoris', 'upahs', 'materials', 'menu_master')); } /** * Show the form for creating a new resource. * * @return \Illuminate\Http\Response */ public function create() { // } /** * Store a newly created resource in storage. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ public static function getAhs($id_ahs_subkategori) { $ahsKategori = AhsKategori::where('id', $id_ahs_subkategori)->first(); $past = AhsKategori::where('id', $id_ahs_subkategori)->first()->vendors; $ahsKategori->ahsS = $ahsKategori->ahsS->merge($past); dd($ahsKategoris->ahsS); } public function store(Request $request) { DB::unprepared(' SET FOREIGN_KEY_CHECKS=0'); if ($request->act == 'create-category') { AhsKategori::create([ 'nama_kategori' => preg_replace("/[^a-zA-Z0-9\s\.,-:\/\^(\")]/", "", $request->nama_kategori), 'urutan' => AhsKategori::orderBy('urutan', 'desc')->first()?AhsKategori::orderBy('urutan', 'desc')->first()->urutan + 1:0, ]); } elseif ($request->act == 'create-subcategory') { AhsSubkategori::create([ 'nama_subkategori' => preg_replace("/[^a-zA-Z0-9\s\.,-:\/\^(\")]/", "", $request->nama_subkategori), 'id_ahs_kategori' => $request->id, ]); } elseif ($request->act == 'add-ahs') { $cek = Ahs::where('nama_pekerjaan', $request->nama_pekerjaan)->first(); if ($cek) { return redirect()->back()->with('error', 'nama pekerjaan sudah ada didata'); } $status = 'non approve'; $level = strtolower(Auth::user()->level); if ($level == 'superadmin' or $level == 'project manager') { $status = 'approve'; } $ahs = Ahs::create([ 'nama_pekerjaan' => preg_replace("/[^a-zA-Z0-9\s\.,-:\/\^(\")]/", "", $request->nama_pekerjaan), 'dimensi_spesifikasi' => preg_replace("/[^a-zA-Z0-9\s\.,-:\/\^(\")\∅]/", "", $request->dimensi_spesifikasi), 'satuan' => preg_replace("/[^a-zA-Z0-9\s\.,-:\/\^(\")]/", "", $request->satuan), 'percent_profit' => $request->percent_profit, 'id_ahs_subkategori' => $request->id, 'status' => $status, 'user_id' => Auth::user()->id, ]); if ($request->image) { set_time_limit(0); foreach ($request->image as $key => $value) { if ($request->image[$key]->getSize() > 10000000) { $ahs->delete(); return redirect()->back()->with('error', 'file tidak boleh lebih dari 10 mb'); } $image = $request->image[$key]->openFile()->fread($request->image[$key]->getSize()); AhsImage::create([ 'id_ahs' => $ahs->id, 'image' => $image, ]); } } if ($request->id_material) { foreach ($request->id_material as $key => $value) { if ($value) { $cek = AhsDetailMaterial::where([['id_material', $value], ['id_ahs', $ahs->id]])->first(); if (!$cek) { AhsDetailMaterial::create([ 'id_ahs' => $ahs->id, 'id_material' => $request->id_material[$key], 'koefisien' => str_replace(",", ".", $request->qty_material[$key]?$request->qty_material[$key]:0), ]); } } } } if ($request->id_upah) { foreach ($request->id_upah as $key => $value) { if ($value) { AhsDetailUpah::create([ 'id_ahs' => $ahs->id, 'id_upah' => $request->id_upah[$key], 'koefisien' => str_replace(",", ".", $request->qty_upah[$key]?$request->qty_upah[$key]:0), 'satuan' => 'OH', ]); } } } } elseif ($request->act == 'add-vendor') { $status = 'non approve'; $level = strtolower(Auth::user()->level); if ($level == 'superadmin' or $level == 'project manager') { $status = 'approve'; } $ahs_vendor = AhsVendor::create([ 'id_vendor' => $request->id_vendor, 'id_ahs_subkategori' => $request->id, 'percent_profit' => $request->percent_profit, 'status' => $status, 'user_id' => Auth::user()->id, ]); if ($request->image) { set_time_limit(0); foreach ($request->image as $key => $value) { if ($request->image[$key]->getSize() > 10000000) { $ahs_vendor->delete(); return redirect()->back()->with('error', 'file tidak boleh lebih dari 10 mb'); } $image = $request->image[$key]->openFile()->fread($request->image[$key]->getSize()); AhsImage::create([ 'id_ahs_vendor' => $ahs_vendor->id, 'image' => $image, ]); } } return redirect()->route('ahs.index')->with('msg', 'data berhasil ditambahkan'); } elseif ($request->act == 'change-sort-kategori') { foreach ($request->id_kategori as $key => $value) { $row = AhsKategori::findOrFail($value); $row->urutan = $key+1; $row->save(); } return redirect()->route('ahs.index')->with('msg', 'urutan kategori berhasil disesuaikan'); } elseif ($request->act == 'change-sort-subkategori') { foreach ($request->id_subkategori as $key => $value) { $row = AhsSubkategori::findOrFail($value); $row->urutan = $key+1; $row->save(); } return redirect()->route('ahs.index')->with('msg', 'urutan sub-kategori berhasil disesuaikan'); } elseif ($request->act == 'change-sort-ahs') { foreach ($request->id_ahs as $key => $value) { $cek = explode('_', $value); if ($cek[0] == 'ahs') { $row = Ahs::findOrFail($cek[1]); $row->urutan = $key+1; $row->save(); } elseif ($cek[0] == 'ahsvendor') { $row = AhsVendor::findOrFail($cek[1]); $row->urutan = $key+1; $row->save(); } } return redirect()->route('ahs.index')->with('msg', 'urutan AHS berhasil disesuaikan'); } elseif ($request->act == 'paste-ahs') { set_time_limit(0); $subK = AhsSubkategori::where('id', $request->id)->first(); if ($request->id_ahs != "undefined") { $subK = AhsSubkategori::with(['ahsS' => function ($q) use ($request) { $q->where('ahs.id', $request->id_ahs); }])->with(['vendors' => function ($q) use ($request) { $q->where('ahs_vendor.id', $request->id_ahs); }])->where('id', $request->id)->first(); } $status = 'non approve'; $level = strtolower(Auth::user()->level); if ($level == 'superadmin' or $level == 'project manager') { $status = 'approve'; } foreach ($subK->ahsS as $row) { $ahs = Ahs::create([ 'nama_pekerjaan' => $row->nama_pekerjaan, 'dimensi_spesifikasi' => $row->dimensi_spesifikasi, 'satuan' => $row->satuan, 'percent_profit' => $row->percent_profit, 'id_ahs_subkategori' => $request->paste_to, 'urutan' => $row->urutan, 'user_id' => Auth::user()->id, 'status' => $status, ]); if ($row->images) { foreach ($row->images as $row2) { if ($row2->ahs) { AhsImage::create([ 'id_ahs' => $ahs->id, 'image' => $row2->image ]); } } } if ($row->ahsMaterialDetails) { foreach ($row->ahsMaterialDetails as $row2) { AhsDetailMaterial::create([ 'id_ahs' => $ahs->id, 'id_material' => $row2->id_material, 'koefisien' => str_replace(",", ".", $row2->koefisien), ]); } } if ($row->ahsUpahDetails) { foreach ($row->ahsUpahDetails as $row2) { AhsDetailUpah::create([ 'id_ahs' => $ahs->id, 'id_upah' => $row2->id_upah, 'koefisien' => str_replace(",", ".", $row2->koefisien), 'satuan' => $row2->satuan, ]); } } } foreach ($subK->vendors as $row) { $ahs_vendor = AhsVendor::create([ 'id_vendor' => $row->id_vendor, 'percent_profit' => $row->percent_profit, 'id_ahs_subkategori' => $request->paste_to, 'urutan' => $row->urutan, 'user_id' => Auth::user()->id, ]); if ($row->images) { foreach ($row->images as $row2) { if ($row2->ahs_vendor) { AhsImage::create([ 'id_ahs_vendor' => $ahs_vendor->id, 'image' => $row2->image ]); } } } } return redirect()->route('ahs.index')->with('msg', 'AHS berhasil dicopy'); } else { $ahs = Ahs::create([ 'nama_pekerjaan' => preg_replace("/[^a-zA-Z0-9\s\.,-:\/\^(\")]/", "", $request->nama_pekerjaan), 'dimensi_spesifikasi' => preg_replace("/[^a-zA-Z0-9\s\.,-:\/\^(\")\∅]/", "", $request->dimensi_spesifikasi), 'satuan' => preg_replace("/[^a-zA-Z0-9\s\.,-:\/\^(\")]/", "", $request->satuan), 'percent_profit' => $request->percent_profit, 'id_ahs_subkategori' => $request->id_ahs_subkategori, 'user_id' => Auth::user()->id, ]); if ($request->id_material) { foreach ($request->id_material as $key => $value) { if ($value) { $cek = AhsDetailMaterial::where([['id_material', $value], ['id_ahs', $ahs->id]])->first(); if (!$cek) { AhsDetailMaterial::create([ 'id_ahs' => $ahs->id, 'id_material' => $request->id_material[$key], 'koefisien' => str_replace(",", ".", $request->qty_material[$key]?$request->qty_upah[$key]:0), ]); } } } } if ($request->id_upah) { foreach ($request->id_upah as $key => $value) { if ($value) { AhsDetailUpah::create([ 'id_ahs' => $ahs->id, 'id_upah' => $request->id_upah[$key], 'koefisien' => str_replace(",", ".", $request->qty_upah[$key]?$request->qty_upah[$key]:0), 'satuan' => 'OH', ]); } } } } return redirect()->route('ahs.index')->with('msg', 'data berhasil ditambahkan'); } /** * Display the specified resource. * * @param int $id * @return \Illuminate\Http\Response */ public function show($id) { if (isset($_GET['act'])) { if ($_GET['act'] == 'materialData') { if (\Request::ajax()) { $material = Material::findOrFail($id); return response()->json([ 'material' => $material, ]); } else { abort('404'); } } elseif ($_GET['act'] == 'upahData') { if (\Request::ajax()) { $upah = Upah::findOrFail($id); return response()->json([ 'upah' => $upah, ]); } else { abort('404'); } } elseif ($_GET['act'] == 'subcategoryData') { if (\Request::ajax()) { $subkategori = AhsSubkategori::where('id_ahs_kategori', $id)->orderBy('urutan', 'asc')->get(); return response()->json([ 'subkategori' => $subkategori, ]); } else { abort('404'); } } elseif ($_GET['act'] == 'subcategoryvData') { if (\Request::ajax()) { $subkategori = VendorSubkategori::where('id_vendor_kategori', $id)->orderBy('urutan', 'asc')->get(); return response()->json([ 'subkategori' => $subkategori, ]); } else { abort('404'); } } elseif ($_GET['act'] == 'vendorData') { if (\Request::ajax()) { $vendor = Vendor::where('id_vendor_subkategori', $id)->orderBy('urutan', 'asc')->get(); return response()->json([ 'vendor' => $vendor, ]); } else { abort('404'); } } elseif ($_GET['act'] == 'subcategoryDataExcept') { if (\Request::ajax()) { $subkategori = AhsSubkategori::where('id', '<>', $id)->get(); return response()->json([ 'subkategori' => $subkategori, ]); } else { abort('404'); } } elseif ($_GET['act'] == 'ahsData') { if (\Request::ajax()) { $ahs = Ahs::where('id_ahs_subkategori', $id)->orderBy('urutan', 'asc')->get(); $ahs_vendor = AhsVendor::with('vendor')->where('id_ahs_subkategori', $id)->orderBy('urutan', 'asc')->get(); return response()->json([ 'ahs' => $ahs, 'ahs_vendor' => $ahs_vendor, ]); } else { abort('404'); } } elseif ($_GET['act'] == 'ahsImageData') { if (\Request::ajax()) { if (isset($_GET['m'])) { $m = $_GET['m']; } else { abort('404'); } $image = AhsImage::where('id_'.$m, $id)->get(); return response()->json([ 'image' => $image, ]); } else { abort('404'); } } elseif ($_GET['act'] == 'loadAhs') { $row2 = AhsSubkategori::with(['ahsS' => function ($q) { $q->where('status', 'approve'); }])->with(['vendors' => function ($q) { $q->where('status', 'approve'); }])->findOrFail($id); return view('staff.list-ahs-data', compact('row2')); } elseif ($_GET['act'] == 'loadMyAhs') { $row2 = AhsSubkategori::with(['ahsS' => function ($q) { $q->where([["user_id", Auth::user()->id],["status", "non approve"]]); }])->with(['vendors' => function ($q) { $q->where([["user_id", Auth::user()->id],["status", "non approve"]]); }])->findOrFail($id); return view('staff.list-ahs-data', compact('row2')); } } else { $ahs = Ahs::findOrFail($id); return view("staff.ahs-detail", compact("ahs")); } } /** * Show the form for editing the specified resource. * * @param int $id * @return \Illuminate\Http\Response */ public function edit($id) { $ahs = Ahs::with('ahsMaterialDetails.material', 'ahsUpahDetails.upah')->findOrFail($id); $ahsKategoris = AhsKategori::all(); $materials = Material::all(); $upahs = Upah::all(); return view('staff.ahs-edit', compact('ahs', 'ahsKategoris', 'materials', 'upahs')); } /** * Update the specified resource in storage. * * @param \Illuminate\Http\Request $request * @param int $id * @return \Illuminate\Http\Response */ public function update(Request $request, $id) { DB::unprepared(' SET FOREIGN_KEY_CHECKS=0'); if ($request->act == 'update') { $ahs = Ahs::findOrFail($id); if ($request->nama_pekerjaan) { $ahs->nama_pekerjaan = preg_replace("/[^a-zA-Z0-9\s\.,-:\/\^(\")]/", "", $request->nama_pekerjaan); } if ($request->dimensi_spesifikasi) { $ahs->dimensi_spesifikasi = preg_replace("/[^a-zA-Z0-9\s\.,-:\/\^(\")\∅]/", "", $request->dimensi_spesifikasi); } if ($request->satuan) { $ahs->satuan = preg_replace("/[^a-zA-Z0-9\s\.,-:\/\^(\")]/", "", $request->satuan); } if ($request->percent_profit) { $ahs->percent_profit = $request->percent_profit; } $ahs->save(); if ($request->image) { set_time_limit(0); foreach ($request->image as $key => $value) { if ($request->image[$key]->getSize() > 10000000) { return redirect()->back()->with('error', 'file tidak boleh lebih dari 10 mb'); } $image = $request->image[$key]->openFile()->fread($request->image[$key]->getSize()); AhsImage::create([ 'id_ahs' => $ahs->id, 'image' => $image, ]); } } if ($request->curr_id_ahs_material) { AhsDetailMaterial::where([['id_ahs',$ahs->id],['id','<>',$request->curr_id_ahs_material],['id_material',$request->curr_id_ahs_material]])->delete(); $cek = AhsDetailMaterial::findOrFail($request->curr_id_ahs_material); $cek->id_material = $request->curr_id_material; $cek->koefisien = str_replace(",", ".", $request->curr_qty_material); $cek->save(); } if ($request->id_material) { foreach ($request->id_material as $key => $value) { if ($value) { $cek = AhsDetailMaterial::where([['id_material', $value], ['id_ahs', $id]])->first(); if ($cek) { $cek->koefisien = str_replace(",", ".", $request->qty_material[$key]?$request->qty_material[$key]:0); $cek->save(); } else { AhsDetailMaterial::create([ 'id_ahs' => $id, 'id_material' => $request->id_material[$key], 'koefisien' => str_replace(",", ".", $request->qty_material[$key]?$request->qty_material[$key]:0), ]); } } } } if ($request->curr_id_upah_material) { AhsDetailUpah::where([['id_ahs',$ahs->id],['id','<>',$request->curr_id_upah_material],['id_upah',$request->curr_id_upah]])->delete(); $cek = AhsDetailUpah::findOrFail($request->curr_id_upah_material); $cek->id_upah = $request->curr_id_upah; $cek->koefisien = str_replace(",", ".", $request->curr_qty_upah); $cek->save(); } if ($request->id_upah) { foreach ($request->id_upah as $key => $value) { if ($value) { $cek = AhsDetailUpah::where([['id_upah', $value], ['id_ahs', $id]])->first(); if ($cek) { $cek->koefisien = str_replace(",", ".", $request->qty_upah[$key]?$request->qty_upah[$key]:0); $cek->satuan = 'OH'; $cek->save(); } else { AhsDetailUpah::create([ 'id_ahs' => $id, 'id_upah' => $request->id_upah[$key], 'koefisien' => str_replace(",", ".", $request->qty_upah[$key]?$request->qty_upah[$key]:0), 'satuan' => 'OH', ]); } } } } if ($request->redirect_url) { return redirect($request->redirect_url)->with('msg', 'data ahs berhasil dirubah'); } return redirect()->route('ahs.index')->with('msg', 'data ahs berhasil dirubah'); } elseif ($request->act == 'update-category') { AhsKategori::where('id', $id)->update([ 'nama_kategori' => $request->nama_kategori, ]); return redirect()->route('ahs.index')->with('msg', 'kategori berhasil dirubah'); } elseif ($request->act == 'update-subcategory') { AhsSubkategori::where('id', $id)->update([ 'nama_subkategori' => $request->nama_subkategori ]); return redirect()->route('ahs.index')->with('msg', 'sub-kategori berhasil dirubah'); } elseif ($request->act == 'update-vendor') { $ahs_vendor = AhsVendor::where('id', $id)->first(); $ahs_vendor->percent_profit = $request->percent_profit; $ahs_vendor->save(); if ($request->image) { set_time_limit(0); foreach ($request->image as $key => $value) { if ($request->image[$key]->getSize() > 10000000) { return redirect()->back()->with('error', 'file tidak boleh lebih dari 10 mb'); } $image = $request->image[$key]->openFile()->fread($request->image[$key]->getSize()); AhsImage::create([ 'id_ahs_vendor' => $ahs_vendor->id, 'image' => $image, ]); } } return redirect()->route('ahs.index')->with('msg', 'data vendor berhasil dirubah'); } elseif ($request->act == 'hidden-ahs') { $ahs = Ahs::findOrFail($id); $ahs->hidden = true; $ahs->save(); return response()->json(['msg','success']); } elseif ($request->act == 'unhidden-ahs') { $ahs = Ahs::findOrFail($id); $ahs->hidden = false; $ahs->save(); return response()->json(['msg','success']); } elseif ($request->act == 'hidden-ahs-kategori') { $ahs = AhsKategori::findOrFail($id); $ahs->hidden = 1; $ahs->save(); return response()->json(['msg','success']); } elseif ($request->act == 'unhidden-ahs-kategori') { $ahs = AhsKategori::findOrFail($id); $ahs->hidden = 0; $ahs->save(); return response()->json(['msg','success']); } elseif ($request->act == 'approve-ahs') { $ahs = Ahs::findOrFail($id); $ahs->status = 'approve'; $ahs->save(); return redirect()->back()->with('msg', 'ahs berhasil diapprove'); } elseif ($request->act == 'approve-ahs_vendor') { $ahs = AhsVendor::findOrFail($id); $ahs->status = 'approve'; $ahs->save(); return redirect()->back()->with('msg', 'ahs berhasil diapprove'); } } /** * Remove the specified resource from storage. * * @param int $id * @return \Illuminate\Http\Response */ public function destroy(Request $request, $id) { if ($request->act == 'delete') { Ahs::destroy($id); if ($request->redirect_url) { return redirect($request->redirect_url)->with('msg', 'Data Pekerjaan berhasil dihapus'); } return redirect()->route('ahs.index')->with('msg', 'Data Pekerjaan berhasil dihapus'); } elseif ($request->act == 'materialDelete') { AhsDetailMaterial::destroy($id); return redirect()->route('ahs.index')->with('msg', 'Material berhasil dihapus dari list'); } elseif ($request->act == 'upahDelete') { AhsDetailUpah::destroy($id); return redirect()->route('ahs.index')->with('msg', 'Upah Pekerja berhasil dihapus dari list'); } elseif ($request->act == 'delete-category') { AhsKategori::destroy($id); return redirect()->route('ahs.index')->with('msg', 'Ahs Kategori berhasil dihapus dari list'); } elseif ($request->act == 'delete-subcategory') { AhsSubkategori::destroy($id); return redirect()->route('ahs.index')->with('msg', 'Ahs SubKategori berhasil dihapus dari list'); } elseif ($request->act == 'delete-vendor') { AhsVendor::destroy($id); return redirect()->route('ahs.index')->with('msg', 'Vendor berhasil dihapus dari list'); } elseif ($request->act == 'delete-image') { AhsImage::destroy($id); return redirect()->route('ahs.index')->with('msg', 'Gambar berhasil dihapus'); } else { abort('404'); } } public static function cekTotalAhs($id) { $total_m = Ahs::join('ahs_detail_material', 'ahs.id', 'ahs_detail_material.id_ahs') ->join('materials', 'ahs_detail_material.id_material', 'materials.id') ->selectRaw('sum(ahs_detail_material.koefisien * materials.harga) as total') ->where('ahs.id', $id)->first()->total; $total_u = Ahs::join('ahs_detail_upah', 'ahs.id', 'ahs_detail_upah.id_ahs') ->join('upah', 'ahs_detail_upah.id_upah', 'upah.id') ->selectRaw('sum(ahs_detail_upah.koefisien * upah.upah) as total') ->where('ahs.id', $id)->first()->total; return $total_m + $total_u; } public static function cekTotalMaterial($id) { $total_m = Ahs::join('ahs_detail_material', 'ahs.id', 'ahs_detail_material.id_ahs') ->join('materials', 'ahs_detail_material.id_material', 'materials.id') ->selectRaw('sum(ahs_detail_material.koefisien * materials.harga) as total') ->where('ahs.id', $id)->first()->total; return $total_m; } public static function cekTotalUpah($id) { $total_u = Ahs::join('ahs_detail_upah', 'ahs.id', 'ahs_detail_upah.id_ahs') ->join('upah', 'ahs_detail_upah.id_upah', 'upah.id') ->selectRaw('sum(ahs_detail_upah.koefisien * upah.upah) as total') ->where('ahs.id', $id)->first()->total; return $total_u; } public function deleteImage(Request $request) { $id_image = $request->get('id_image'); AhsImage::destroy($id_image); } public function hidden(Request $request, $id) { if ($request->act == 'hidden-ahs-kategori') { $ahs = AhsKategori::find($id); $ahs->hidden = 1; $ahs->save(); return $id; } elseif ($request->act == 'unhidden-ahs-kategori') { $ahs = AhsKategori::find($id); $ahs->hidden = 0; $ahs->save(); return $id; } } }