middleware(function ($request, $next) { return $next($request); }); } public function index() { $level = Auth::user()->level; $quantity_surveyor = User::where([['level', 'QUANTITY SURVEYOR'], ['active', 'yes']])->orderBy('fullname')->get(); $column_order = json_decode(ClientColumn::first()->column_order); if (strtoupper($level) == 'SUPERADMIN' || strtoupper($level) == 'GENERAL MANAGER' || strtoupper($level) == 'FINANCE MANAGER' || strtoupper($level) == 'SUPPLY CHAIN MANAGER' || strtoupper($level) == 'MARKETING MANAGER' || strtoupper($level) == 'PROJECT MANAGER' || strtoupper($level) == 'MARKETING OFFICER') { if (isset($_GET['s']) || isset($_GET['w']) || isset($_GET['j']) || isset($_GET['m']) || isset($_GET['q'])) { $clients = Client::where(function ($q) { if (isset($_GET['w'])) { if (isset($_GET['sd'])) { $q->where('created_at', date('Y-m-d', strtotime($_GET['sd']))); } else if (isset($_GET['do']) && isset($_GET['dl'])) { $q->where([['created_at', '>=', $_GET['do']], ['created_at', '<=', $_GET['dl']]]); } else { $q->where('created_at', date('Y-m-d')); } } }) ->whereHas('detail', function ($w) use ($level) { if (strtoupper($level) == 'MARKETING MANAGER' || strtoupper($level) == 'MARKETING OFFICER') { $where = [['unit_bisnis', '!=', 'Bintoro Steel']]; } if (isset($_GET['s'])) { if ($_GET['s'] == 'p') { $status = ['Proses - Kirim Foto Via Whatsapp', 'Proses - Cuma Nanya', 'Proses - Belum Respon', 'Proses - No Respon', 'On Proses']; $w->whereIn('status_order', $status); } elseif ($_GET['s'] == 'a') { $status = ['Survey - Atur Jadwal Dulu', 'Survey - Minta Disurvey, dan Belum Dijadwalkan', 'Survey - Sudah Dijadwalkan Survey', 'Survey - Reschedule', 'Survey - Batal', 'Asistensi - Pembuatan Gambar Arsitek', 'Asistensi 2 - Pembuatan Gambar Arsitek', 'Asistensi 3 - Pembuatan Gambar Arsitek', 'Asistensi 4 - Pembuatan Gambar Arsitek', 'Asistensi 5 - Pembuatan RAB', 'Asistensi 6 - Revisi RAB', 'Asistensi 7 - Revisi RAB', 'Penawaran - Minta Penawaran Langsung Tanpa Survey', 'Penawaran - Penawaran Sudah Dikirim', 'Penawaran - Pending, Tanya Decision Maker']; $w->whereIn('status_order', $status); } elseif ($_GET['s'] == 'd') { $status = ['(Deal) Deal By Phone', '(Deal) After Penawaran']; $w->whereIn('status_order', $status); } elseif ($_GET['s'] == 'n') { $status = ['(No Deal) On Call', '(No Deal) Kemahalan', '(No Deal) Minta Hari Ini/Dadakan', '(No Deal) Tidak Mau Minimum Order', '(No Deal) Jumlah Teknisi Kurang', '(No Deal) After Penawaran']; $w->whereIn('status_order', $status); } } if (isset($_GET['j']) || isset($_GET['m'])) { if (strtoupper($level) == 'MARKETING MANAGER' || strtoupper($level == 'MARKETING OFFICER')) { } else { $where = []; } if (isset($_GET['j'])) { if ($_GET['j'] != '-') { if ($_GET['j'] != NULL) { $where[] = ['jasa_build', str_replace('%2B', '+', str_replace('+', ' ', $_GET['j']))]; } } } if (isset($_GET['m'])) { if ($_GET['m'] != '-') { if ($_GET['m'] != NULL) { $where[] = ['masuk_dari_mana', str_replace('+', ' ', $_GET['m'])]; } } } if (strtoupper($level) == 'MARKETING MANAGER' || strtoupper($level) == 'MARKETING OFFICER') { } else { $w->where($where); } } if (strtoupper($level) == 'MARKETING MANAGER' || strtoupper($level) == 'MARKETING OFFICER') { $w->where($where); } }) ->where(function ($q) { if (isset($_GET['q'])) { $q->where('id_user', $_GET['q']); } }) ->get(); } else { if (strtoupper($level) == 'MARKETING MANAGER' || strtoupper($level) == 'MARKETING OFFICER') { $clients = Client::whereHas('detail', function ($w) { $w->where('unit_bisnis', '!=', 'Bintoro Steel'); }) ->orderBy('id', 'desc') ->get(); } else { $clients = Client::orderBy('id', 'desc')->get(); } } } else { if (isset($_GET['s']) || isset($_GET['w']) || isset($_GET['j']) || isset($_GET['m']) || isset($_GET['q'])) { $clients = Client::where(function ($q) { if (isset($_GET['w'])) { if (isset($_GET['sd'])) { $q->where('created_at', date('Y-m-d', strtotime($_GET['sd']))); } else if (isset($_GET['do']) && isset($_GET['dl'])) { $q->where([['created_at', '>=', $_GET['do']], ['created_at', '<=', $_GET['dl']]]); } else { $q->where('created_at', date('Y-m-d')); } } }) ->whereHas('detail', function ($w) { if (isset($_GET['s'])) { if ($_GET['s'] == 'p') { $status = ['Proses - Kirim Foto Via Whatsapp', 'Proses - Cuma Nanya', 'Proses - Belum Respon', 'Proses - No Respon', 'On Proses']; $w->whereIn('status_order', $status); } elseif ($_GET['s'] == 'a') { $status = ['Survey - Atur Jadwal Dulu', 'Survey - Minta Disurvey, dan Belum Dijadwalkan', 'Survey - Sudah Dijadwalkan Survey', 'Survey - Reschedule', 'Survey - Batal', 'Asistensi - Pembuatan Gambar Arsitek', 'Asistensi 2 - Pembuatan Gambar Arsitek', 'Asistensi 3 - Pembuatan Gambar Arsitek', 'Asistensi 4 - Pembuatan Gambar Arsitek', 'Asistensi 5 - Pembuatan RAB', 'Asistensi 6 - Revisi RAB', 'Asistensi 7 - Revisi RAB', 'Penawaran - Minta Penawaran Langsung Tanpa Survey', 'Penawaran - Penawaran Sudah Dikirim', 'Penawaran - Pending, Tanya Decision Maker']; $w->whereIn('status_order', $status); } elseif ($_GET['s'] == 'd') { $status = ['(Deal) Deal By Phone', '(Deal) After Penawaran']; $w->whereIn('status_order', $status); } elseif ($_GET['s'] == 'n') { $status = ['(No Deal) On Call', '(No Deal) Kemahalan', '(No Deal) Minta Hari Ini/Dadakan', '(No Deal) Tidak Mau Minimum Order', '(No Deal) Jumlah Teknisi Kurang', '(No Deal) After Penawaran']; $w->whereIn('status_order', $status); } } if (isset($_GET['j']) || isset($_GET['m'])) { $where = []; if (isset($_GET['j'])) { if ($_GET['j'] != '-') { if ($_GET['j'] != NULL) { $where[] = ['jasa_build', str_replace('%2B', '+', str_replace('+', ' ', $_GET['j']))]; } } } if (isset($_GET['m'])) { if ($_GET['m'] != '-') { if ($_GET['m'] != NULL) { $where[] = ['masuk_dari_mana', str_replace('+', ' ', $_GET['m'])]; } } } $w->where($where); } }) ->where(function ($q) { if (Auth::user()->level == 'QUANTITY SURVEYOR') { $q->where('created_by', Auth::user()->id)->orWhere('id_user', Auth::user()->id); } else if (Auth::user()->level == 'VENDOR') { $q->where('id_vendor', Auth::user()->id); } else if (Auth::user()->level == 'ARSITEK') { $q->where('id_arsitek', Auth::user()->id); } else { $dimana = []; $dimana[] = ['created_by', Auth::user()->id]; if (isset($_GET['q'])) { $dimana[] = ['id_user', $_GET['q']]; } $q->where($dimana); } }) ->get(); } else { if ($level == 'QUANTITY SURVEYOR') { $clients = Client::where('created_by', Auth::user()->id)->orWhere('id_user', Auth::user()->id)->get(); } else if (Auth::user()->level == 'VENDOR') { $clients = Client::where('id_vendor', Auth::user()->id)->get(); } else if (Auth::user()->level == 'ARSITEK') { $clients = Client::where('id_arsitek', Auth::user()->id)->get(); } else { $clients = Client::where('created_by', Auth::user()->id)->get(); } } } return view('staff.list-client', compact('clients', 'quantity_surveyor', 'column_order')); } /** * Show the form for creating a new resource. * * @return \Illuminate\Http\Response */ public function create() { $qs = User::where([['level', 'QUANTITY SURVEYOR'], ['active', 'yes']])->orderBy('fullname')->get(); $vendors = User::where([['level', 'VENDOR'], ['active', 'yes']])->orderBy('fullname')->get(); $architects = User::where([['level', 'ARSITEK'], ['active', 'yes']])->orderBy('fullname')->get(); return view('staff.list-client-create', compact('qs', 'vendors', 'architects')); } /** * Store a newly created resource in storage. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ public function store(Request $request) { set_time_limit(0); $request_phone = str_replace('-', '', str_replace('+62', '', str_replace(' ', '', $request->phone))); $c = Client::create([ 'username' => $request->username, 'password' => bcrypt($request->password), 'fullname' => $request->fullname, 'email' => $request->email, 'code' => $request->code, 'address' => $request->address, 'alamat_proyek' => $request->alamat_proyek, 'phone' => $request_phone, 'bank_info' => $request->bank_info, 'login' => $request->login, 'id_user' => $request->id_user, 'created_by' => Auth::user()->id, 'id_vendor' => $request->id_vendor, 'id_arsitek' => $request->id_arsitek, 'created_at' => date('Y-m-d') ]); if ($c) { if ($request->gambar_3d and $request->gambar_3d->getSize() > 50000000) { $c->delete(); return redirect()->back()->with('error', 'file tidak boleh lebih dari 50 mb'); } $gambar_3d = $request->gambar_3d ? $request->gambar_3d->openFile()->fread($request->gambar_3d->getSize()) : null; ClientDetail::create([ 'id_client' => $c->id, 'unit_bisnis' => $request->unit_bisnis, 'status_order' => $request->status_order, 'kategori_bisnis' => $request->kategori_bisnis, 'lead_source' => $request->lead_source, 'jenis_pekerjaan' => $request->jenis_pekerjaan, 'masuk_dari_mana' => $request->masuk_dari_mana, 'area' => $request->area, 'jasa_build' => $request->jasa_build, 'tgl_survey' => $request->tgl_survey ? date('Y-m-d', strtotime($request->tgl_survey)) : NULL, 'jam_survey' => $request->jam_survey ? date('H:i:s', strtotime($request->jam_survey)) : NULL, 'note' => $request->note, 'gambar_3d' => $gambar_3d, ]); if ($request->gambar_kerja_tanggal) { ini_set('upload_max_size', '1024M'); ini_set('post_max_size', '1024M'); set_time_limit(0); foreach ($request->gambar_kerja_tanggal as $key => $value) { if ($value) { $location = public_path('uploads/'); if ($request->file('gambar_kerja_file')[$key]) { $file = $request->file('gambar_kerja_file')[$key]; $file->move($location, $file->getClientOriginalName()); } else { $file = null; } GambarKerja::create([ 'id_client' => $c->id, 'date' => $value, 'revisi_ke' => $request->gambar_kerja_revisike[$key], 'upload_location' => $file ? 'uploads/' . $file->getClientOriginalName() : null, ]); } } } } return redirect()->route('client.index')->with('msg', 'data berhasil ditambahkan'); } /** * Display the specified resource. * * @param int $id * @return \Illuminate\Http\Response */ public function show(Request $request, $id) { if (\Request::ajax()) { $client = Client::findOrFail($id); return response()->json([ 'client' => $client, ]); } else { if ($request->act == 'gambar_kerja') { $client = Client::findOrFail($id); return view('staff.list-client-detail-gambar_kerja', compact('client')); } elseif ($request->act == 'mom_asistensi') { $client = Client::findOrFail($id); return view('staff.list-client-detail-mom_asistensi', compact('client')); } elseif ($request->act == 'mom_project') { $client = Client::findOrFail($id); return view('staff.list-client-detail-mom_project', compact('client')); } elseif ($request->act == 'gambar_3d') { $client = Client::findOrFail($id); return view('staff.list-client-detail-gambar_3d', compact('client')); } else { $client = Client::findOrFail($id); return view('staff.list-client-detail', compact('client')); } } } /** * Show the form for editing the specified resource. * * @param int $id * @return \Illuminate\Http\Response */ public function edit($id) { $client = Client::findOrFail($id); $qs = User::where([['level', 'QUANTITY SURVEYOR'], ['active', 'yes']])->orderBy('fullname')->get(); $vendors = User::where([['level', 'VENDOR'], ['active', 'yes']])->orderBy('fullname')->get(); $architects = User::where([['level', 'ARSITEK'], ['active', 'yes']])->orderBy('fullname')->get(); return view('staff.list-client-edit', compact('client', 'qs', 'vendors', 'architects')); } /** * Update the specified resource in storage. * * @param \Illuminate\Http\Request $request * @param int $id * @return \Illuminate\Http\Response */ public function update(Request $request, $id) { if ($request->act == 'upload_gambar3d') { $cek = ClientDetail::where('id_client', $id)->first(); if ($request->gambar_3d->getSize() > 50000000) { return redirect()->back()->with('error', 'file tidak boleh lebih dari 50 mb'); } $gambar_3d = $request->gambar_3d->openFile()->fread($request->gambar_3d->getSize()); if ($cek) { $cek->gambar_3d = $gambar_3d; $cek->save(); } else { ClientDetail::create([ 'id_client' => $id, 'gambar_3d' => $gambar_3d ]); } return redirect()->route('client.show', $id)->with('msg', 'gambar berhasil diupload'); } elseif ($request->act == 'upload_gambarkerja') { $cek = ClientDetail::where('id_client', $id)->first(); if ($request->gambar_kerja->getSize() > 50000000) { return redirect()->back()->with('error', 'file tidak boleh lebih dari 50 mb'); } $gambar_kerja = $request->gambar_kerja->openFile()->fread($request->gambar_kerja->getSize()); if ($cek) { $cek->gambar_kerja = $gambar_kerja; $cek->save(); } else { ClientDetail::create([ 'id_client' => $id, 'gambar_kerja' => $gambar_kerja ]); } return redirect()->route('client.show', $id)->with('msg', 'gambar berhasil diupload'); } elseif ($request->act == 'gambar_kerja') { ini_set('upload_max_size', '1024M'); ini_set('post_max_size', '1024M'); set_time_limit(0); if ($request->gambar_kerja_tanggal) { foreach ($request->gambar_kerja_tanggal as $key => $value) { $location = public_path('uploads/'); if ($request->file('gambar_kerja_file')[$key]) { $file = $request->file('gambar_kerja_file')[$key]; $file->move($location, $file->getClientOriginalName()); } else { $file = null; } if ($request->file('autocad_file')[$key]) { $autocad = $request->file('autocad_file')[$key]; $autocad->move($location, $autocad->getClientOriginalName()); } else { $autocad = null; } GambarKerja::create([ 'id_client' => $id, 'date' => $value, 'revisi_ke' => $request->gambar_kerja_revisike[$key], 'upload_location' => $file ? 'uploads/' . $file->getClientOriginalName() : null, 'autocad_location' => $autocad ? 'uploads/' . $autocad->getClientOriginalName() : null ]); } } return redirect(route('client.show', $id) . '?act=gambar_kerja')->with('msg', 'data berhasil ditambahkan'); } elseif ($request->act == 'gambar_3d') { ini_set('upload_max_size', '1024M'); ini_set('post_max_size', '1024M'); set_time_limit(0); if ($request->gambar_kerja_tanggal) { foreach ($request->gambar_kerja_tanggal as $key => $value) { $location = public_path('uploads/'); if ($request->file('image_file')[$key]) { $image = $request->file('image_file')[$key]; $image->move($location, $image->getClientOriginalName()); } else { $image = null; } if ($request->file('sketch_file')[$key]) { $sketch = $request->file('sketch_file')[$key]; $sketch->move($location, $sketch->getClientOriginalName()); } else { $sketch = null; } Gambar3D::create([ 'id_client' => $id, 'date' => $value, 'revisi_ke' => $request->gambar_kerja_revisike[$key], 'image_location' => $image ? 'uploads/' . $image->getClientOriginalName() : null, 'sketch_location' => $sketch ? 'uploads/' . $sketch->getClientOriginalName() : null ]); } } return redirect(route('client.show', $id) . '?act=gambar_3d')->with('msg', 'data berhasil ditambahkan'); } elseif ($request->act == 'mom_asistensi') { if ($request->curr_mom_asistensi) { foreach ($request->curr_mom_asistensi as $key => $value) { $mom_asistensi = MoMAsistensi::where('id', $value)->first(); if ($mom_asistensi) { $mom_asistensi->text = $request->values[$key]; $mom_asistensi->save(); } } } if ($request->mom_asistensi_tanggal) { foreach ($request->mom_asistensi_tanggal as $key => $value) { MoMAsistensi::create([ 'id_client' => $id, 'tanggal' => $value, 'waktu' => $request->mom_asistensi_waktu[$key], 'pembahasan' => $request->mom_asistensi_pembahasan[$key], 'text' => $request->mom_asistensi_text[$key], 'status' => 'non-approve', ]); } } return redirect(route('client.show', $id) . '?act=mom_asistensi')->with('msg', 'data berhasil ditambahkan'); } elseif ($request->act == 'mom_project') { if ($request->curr_mom_project) { foreach ($request->curr_mom_project as $key => $value) { $mom_project = MoMProject::where('id', $value)->first(); if ($mom_project) { $mom_project->text = $request->values[$key]; $mom_project->save(); } } } if ($request->mom_project_tanggal) { foreach ($request->mom_project_tanggal as $key => $value) { MoMProject::create([ 'id_client' => $id, 'tanggal' => $value, 'waktu' => $request->mom_project_waktu[$key], 'pembahasan' => $request->mom_project_pembahasan[$key], 'text' => $request->mom_project_text[$key], 'status' => 'non-approve', ]); } } return redirect(route('client.show', $id) . '?act=mom_project')->with('msg', 'data berhasil ditambahkan'); } elseif ($request->act == 'approve-mom_asistensi') { $m = MoMAsistensi::findOrFail($id); $m->status = 'submit'; $m->save(); return response()->json(['msg' => 'success']); } elseif ($request->act == 'approve-mom_project') { $m = MoMProject::findOrFail($id); $m->status = 'submit'; $m->save(); return response()->json(['msg' => 'success']); } elseif ($request->act == 'quick-edit') { $client = Client::findOrFail($id); $client->code = $request->code; $client->save(); $client->detail->status_order = $request->status_order; $client->detail->note = $request->note; $client->detail->save(); return redirect()->back(); } else { $old_id_vendor = Client::findOrFail($id)->id_vendor; $client = Client::where('id', $id)->update($request->except('act', 'id', '_method', '_token', 'password', 'memo_perubahan', 'addendum', 'note', 'status_order', 'unit_bisnis', 'kategori_bisnis', 'lead_source', 'jenis_pekerjaan', 'masuk_dari_mana', 'area', 'jasa_build', 'note', 'tgl_survey', 'jam_survey')); if ($request->get('id_vendor')) { if ($old_id_vendor) { $new_id_vendor = Client::findOrFail($id)->id_vendor; BackupVolume::where('id_user', $old_id_vendor)->update(['id_user' => $new_id_vendor]); Rab::where('id_user', $old_id_vendor)->update(['id_user' => $new_id_vendor]); } } $cek = ClientDetail::where('id_client', $id)->first(); if ($cek) { $cek->status_order = $request->status_order; $cek->kategori_bisnis = $request->kategori_bisnis; $cek->lead_source = $request->lead_source; $cek->jenis_pekerjaan = $request->jenis_pekerjaan; $cek->masuk_dari_mana = $request->masuk_dari_mana; $cek->area = $request->area; $cek->jasa_build = $request->jasa_build; $cek->note = $request->note; $cek->tgl_survey = $request->tgl_survey ? date('Y-m-d', strtotime($request->tgl_survey)) : NULL; $cek->jam_survey = $request->jam_survey ? date('H:i:s', strtotime($request->jam_survey)) : NULL; $cek->unit_bisnis = $request->unit_bisnis; $cek->save(); } else { ClientDetail::create([ 'id_client' => $id, 'status_order' => $request->status_order, 'kategori_bisnis' => $request->kategori_bisnis, 'lead_source' => $request->lead_source, 'jenis_pekerjaan' => $request->jenis_pekerjaan, 'masuk_dari_mana' => $request->masuk_dari_mana, 'area' => $request->area, 'jasa_build' => $request->jasa_build, 'note' => $request->note, 'tgl_survey' => $request->tgl_survey ? date('Y-m-d', strtotime($request->tgl_survey)) : NULL, 'jam_survey' => $request->jam_survey ? date('H:i:s', strtotime($request->jam_survey)) : NULL, 'unit_bisnis' => $request->unit_bisnis, 'gambar_3d' => $gambar_3d, ]); } return redirect()->route('client.show', $id)->with('msg', 'data berhasil diperbarui'); } } public function approve_asistensi_view($id) { $mom_asistensi = MoMAsistensi::findOrFail($id); return view('staff.mom-asistensi-view', compact('mom_asistensi')); } public function approve_asistensi_approve($id) { $mom_asistensi = MoMAsistensi::findOrFail($id); $mom_asistensi->status = 'approve'; $mom_asistensi->save(); return redirect()->back()->with('msg', 'data berhasil diapprove'); } public function approve_project_view($id) { $mom_project = MoMProject::findOrFail($id); return view('staff.mom-project-view', compact('mom_project')); } public function approve_project_approve($id) { $mom_project = MoMProject::findOrFail($id); $mom_project->status = 'approve'; $mom_project->save(); return redirect()->back()->with('msg', 'data berhasil diapprove'); } /** * Remove the specified resource from storage. * * @param int $id * @return \Illuminate\Http\Response */ public function destroy($id) { Client::destroy($id); return redirect()->route('client.index')->with('msg', 'data berhasil dihapus'); } public static function createdBy($id) { $name = User::findOrFail($id)->fullname; return $name; } public function updateStatus(Request $request, $id) { $status = $request->get('status_order'); $client_detail = ClientDetail::where('id_client', $id)->first(); $client_detail->status_order = $status; $client_detail->save(); return redirect()->back()->with('msg', 'Status Berhasil Diperbarui'); } public function column(Request $request) { $column = $request->get('column'); $new_column = ClientColumn::first(); $new_column->column_order = json_encode($column); $new_column->save(); return redirect()->route('client.index'); } public function schedule() { $level = Auth::user()->level; if (strtoupper($level) == 'SUPERADMIN' || strtoupper($level) == 'GENERAL MANAGER' || strtoupper($level) == 'FINANCE MANAGER' || strtoupper($level) == 'SUPPLY CHAIN MANAGER' || strtoupper($level) == 'MARKETING MANAGER' || strtoupper($level) == 'PROJECT MANAGER' || strtoupper($level) == 'MARKETING OFFICER') { if (strtoupper($level) == 'MARKETING MANAGER' || strtoupper($level) == 'MARKETING OFFICER') { $clients = Client::whereHas('detail', function ($q) { $q->where([['tgl_survey', '!=', NULL], ['unit_bisnis', '!=', 'Bintoro Steel']]); }) ->get(); } else { $clients = Client::whereHas('detail', function ($q) { $q->where('tgl_survey', '!=', NULL); })->get(); } } else { if ($level == 'QUANTITY SURVEYOR') { $clients = Client::whereHas('detail', function ($q) { $q->where('tgl_survey', '!=', NULL); }) ->where('created_by', Auth::user()->id) ->orWhere('id_user', Auth::user()->id)->get() ->get(); } else if (Auth::user()->level == 'VENDOR') { $clients = Client::whereHas('detail', function ($q) { $q->where('tgl_survey', '!=', NULL); }) ->where('id_vendor', Auth::user()->id) ->get(); } else if (Auth::user()->level == 'ARSITEK') { $clients = Client::whereHas('detail', function ($q) { $q->where('tgl_survey', '!=', NULL); }) ->where('id_arsitek', Auth::user()->id) ->get(); } else { $clients = Client::whereHas('detail', function ($q) { $q->where('tgl_survey', '!=', NULL); }) ->where('created_by', Auth::user()->id) ->get(); } } return view('staff.list-client-schedule', compact('clients')); } }