get(); $user = User::whereHas('labourOrder')->get(); return view('staff.labour-order', compact('project', 'user')); } /** * Show the form for creating a new resource. * * @return \Illuminate\Http\Response */ public function bulantoRomawi($num) { if ($num <= 12) { $ro = $arrayName = array( 1 => 'I', 2 => 'II', 3 => 'III', 4 => 'IV', 5 => 'V', 6 => 'VI', 7 => 'VII', 8 => 'VIII', 9 => 'IX', 10 => 'X', 11 => 'XI', 12 => 'XII'); return $ro[(int) $num]; } else { dd('jumlah bulan hanya ada 12'); } } public function create() { if (!Auth::user()->curr_siteproject) { return redirect()->back()->with('error', 'silahkan isi site project anda terlebih dahulu'); } $no_lo = LabourOrder::orderBy('no_lo', 'DESC') ->where('id_site_project', Auth::user()->curr_siteproject)->first(); if (!$no_lo) { $no_lo = 'BD-001/LO-' . Auth::user()->siteProject->code . '/' . $this->bulantoRomawi(date('m')) . '/' . date('Y'); } else { $no_lo = explode('/', $no_lo->no_lo)[0]; $no_lo = (int) substr($no_lo, -3) + 1; $no_lo = 'BD-' . sprintf('%03s', $no_lo) . '/LO-' . Auth::user()->siteProject->code . '/' . $this->bulantoRomawi(date('m')) . '/' . date('Y'); } $no_lo = strtoupper($no_lo); $mandors = Mandor::all(); $projects = Project::whereHas('rab', function ($q) { $q->where('status', 'approve'); })->get(); return view('staff.labour-order-create',compact('mandors','projects','no_lo')); } /** * Store a newly created resource in storage. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ public function store(Request $request) { if (!Auth::user()->curr_siteproject) { return redirect()->back()->with('error', 'silahkan isi site project anda terlebih dahulu'); } $no_lo = LabourOrder::orderBy('no_lo', 'DESC') ->where('id_site_project', Auth::user()->curr_siteproject)->first(); if (!$no_lo) { $no_lo = 'BD-001/LO-' . Auth::user()->siteProject->code . '/' . $this->bulantoRomawi(date('m')) . '/' . date('Y'); } else { $no_lo = explode('/', $no_lo->no_lo)[0]; $no_lo = (int) substr($no_lo, -3) + 1; $no_lo = 'BD-' . sprintf('%03s', $no_lo) . '/LO-' . Auth::user()->siteProject->code . '/' . $this->bulantoRomawi(date('m')) . '/' . date('Y'); } $no_lo = strtoupper($no_lo); $lo = LabourOrder::create([ 'no_lo' => $no_lo, 'id_mandor' => $request->mandor, 'id_project' => $request->project, 'id_site_project' => Auth::user()->curr_siteproject, 'tanggal' => date('Y-m-d'), 'status' => 'draft', 'id_user' => Auth::user()->id ]); if ($request->choose == 'harian') { LabourOrderHarian::create([ 'id_labour_order' => $lo->id, 'from_date' => $request->from_date, 'to_date' => $request->to_date, 'total_upah' => str_replace('.','',$request->upah_terbayar), ]); }elseif ($request->choose == 'borongan') { LabourOrderBorongan::create([ 'id_labour_order' => $lo->id, 'total_upah' => str_replace('.','',$request->upah_terbayar), ]); } return redirect()->route('labour_order.index')->with('msg','data 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'] == 'labourOrderData') { $columns = array( 0 => 'id', 1 => 'id', 2 => 'tanggal', ); $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') { if($_GET['project'] != '' || $_GET['status'] != '' || $_GET['user'] != '' || $_GET['time'] != '' || $_GET['interval_1'] != '') { $totalData = LabourOrder::where(function($query) { $filter = []; if($_GET['project'] != '') { $filter[] = ['id_project', $_GET['project']]; } if($_GET['status'] != '') { $filter[] = ['status', $_GET['status']]; } if($_GET['user'] != '') { $filter[] = ['id_user', $_GET['user']]; } if($_GET['time'] != '') { if($_GET['time'] == 'this-month') { $bulan = date('m'); $tahun = date('Y'); $jml_hari = date('t', mktime(0, 0, 0, $bulan+1, 0, $tahun)); $filter[] = ['tanggal', '>=', date('Y-m-d', strtotime($tahun . '-' . $bulan . '-01'))]; $filter[] = ['tanggal', '<=', date('Y-m-d', strtotime($tahun . '-' . $bulan . '-'. $jml_hari))]; } elseif ($_GET['time'] == 'last-week') { $previous_week = strtotime("-1 week +1 day"); $start_week = strtotime("last sunday midnight",$previous_week); $end_week = strtotime("next saturday",$start_week); $start_week = date("Y-m-d",$start_week); $end_week = date("Y-m-d",$end_week); $filter[] = ['tanggal', '>=', $start_week]; $filter[] = ['tanggal', '<=', $end_week]; } elseif($_GET['time'] == 'last-month') { $first_day = date("Y-m-d", strtotime("first day of previous month")); $last_day = date("Y-m-d", strtotime("last day of previous month")); $filter[] = ['tanggal', '>=', $first_day]; $filter[] = ['tanggal', '<=', $last_day]; } elseif($_GET['time'] == 'interval') { $first_date = date('Y-m-d', strtotime($_GET['interval_1'])); $end_date = date('Y-m-d', strtotime($_GET['interval_2'])); $filter[] = ['tanggal', '>=', $first_date]; $filter[] = ['tanggal', '<=', $end_date]; } } return $query->where($filter); }) ->count(); } else { $totalData = LabourOrder::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($_GET['project'] != '' || $_GET['status'] != '' || $_GET['user'] != '' || $_GET['time'] != '' || $_GET['interval_1'] != '') { $labour_orders = LabourOrder::where(function($query) { $filter = []; if($_GET['project'] != '') { $filter[] = ['id_project', $_GET['project']]; } if($_GET['status'] != '') { $filter[] = ['status', $_GET['status']]; } if($_GET['user'] != '') { $filter[] = ['id_user', $_GET['user']]; } if($_GET['time'] != '') { if($_GET['time'] == 'this-month') { $bulan = date('m'); $tahun = date('Y'); $jml_hari = date('t', mktime(0, 0, 0, $bulan+1, 0, $tahun)); $filter[] = ['tanggal', '>=', date('Y-m-d', strtotime($tahun . '-' . $bulan . '-01'))]; $filter[] = ['tanggal', '<=', date('Y-m-d', strtotime($tahun . '-' . $bulan . '-' . $jml_hari))]; } elseif ($_GET['time'] == 'last-week') { $previous_week = strtotime("-1 week +1 day"); $start_week = strtotime("last sunday midnight",$previous_week); $end_week = strtotime("next saturday",$start_week); $start_week = date("Y-m-d",$start_week); $end_week = date("Y-m-d",$end_week); $filter[] = ['tanggal', '>=', $start_week]; $filter[] = ['tanggal', '<=', $end_week]; } elseif($_GET['time'] == 'last-month') { $first_day = date("Y-m-d", strtotime("first day of previous month")); $last_day = date("Y-m-d", strtotime("last day of previous month")); $filter[] = ['tanggal', '>=', $first_day]; $filter[] = ['tanggal', '<=', $last_day]; } elseif($_GET['time'] == 'interval') { $first_date = date('Y-m-d', strtotime($_GET['interval_1'])); $end_date = date('Y-m-d', strtotime($_GET['interval_2'])); $filter[] = ['tanggal', '>=', $first_date]; $filter[] = ['tanggal', '<=', $end_date]; } } return $query->where($filter); }) ->offset($start) ->limit($limit) ->orderBy($order, $dir) ->get(); } else { $labour_orders = LabourOrder::offset($start) ->limit($limit) ->orderBy($order, $dir) ->get(); } } else { $search = $request->input('search.value'); if($_GET['project'] != '' || $_GET['status'] != '' || $_GET['user'] != '' || $_GET['time'] != '' || $_GET['interval_1'] != '') { $labour_orders = LabourOrder::whereHas('project',function($q) use ($search){ $q->where('projects.name','LIKE', "%{$search}%"); })->orWhereHas('mandor',function($q) use ($search){ $q->where('mandors.name','LIKE', "%{$search}%"); }) ->where(function($query) { $filter = []; if($_GET['project'] != '') { $filter[] = ['id_project', $_GET['project']]; } if($_GET['status'] != '') { $filter[] = ['status', $_GET['status']]; } if($_GET['user'] != '') { $filter[] = ['id_user', $_GET['user']]; } if($_GET['time'] != '') { if($_GET['time'] == 'this-month') { $bulan = date('m'); $tahun = date('Y'); $jml_hari = date('t', mktime(0, 0, 0, $bulan+1, 0, $tahun)); $filter[] = ['tanggal', '>=', date('Y-m-d', strtotime($tahun . '-' . $bulan . '-01'))]; $filter[] = ['tanggal', '<=', date('Y-m-d', strtotime($tahun . '-' . $bulan . '-' . $jml_hari))]; } elseif ($_GET['time'] == 'last-week') { $previous_week = strtotime("-1 week +1 day"); $start_week = strtotime("last sunday midnight",$previous_week); $end_week = strtotime("next saturday",$start_week); $start_week = date("Y-m-d",$start_week); $end_week = date("Y-m-d",$end_week); $filter[] = ['tanggal', '>=', $start_week]; $filter[] = ['tanggal', '<=', $end_week]; } elseif($_GET['time'] == 'last-month') { $first_day = date("Y-m-d", strtotime("first day of previous month")); $last_day = date("Y-m-d", strtotime("last day of previous month")); $filter[] = ['tanggal', '>=', $first_day]; $filter[] = ['tanggal', '<=', $last_day]; } elseif($_GET['time'] == 'interval') { $first_date = date('Y-m-d', strtotime($_GET['interval_1'])); $end_date = date('Y-m-d', strtotime($_GET['interval_2'])); $filter[] = ['tanggal', '>=', $first_date]; $filter[] = ['tanggal', '<=', $end_date]; } } return $query->where($filter); }) ->offset($start) ->limit($limit) ->orderBy($order, $dir) ->get(); $totalFiltered = LabourOrder::whereHas('project',function($q) use ($search){ $q->where('projects.name','LIKE', "%{$search}%"); })->orWhereHas('mandor',function($q) use ($search){ $q->where('mandors.name','LIKE', "%{$search}%"); }) ->where(function($query) { $filter = []; if($_GET['project'] != '') { $filter[] = ['id_project', $_GET['project']]; } if($_GET['status'] != '') { $filter[] = ['status', $_GET['status']]; } if($_GET['user'] != '') { $filter[] = ['id_user', $_GET['user']]; } if($_GET['time'] != '') { if($_GET['time'] == 'this-month') { $bulan = date('m'); $tahun = date('Y'); $jml_hari = date('t', mktime(0, 0, 0, $bulan+1, 0, $tahun)); $filter[] = ['tanggal', '>=', date('Y-m-d', strtotime($tahun . '-' . $bulan . '-01'))]; $filter[] = ['tanggal', '<=', date('Y-m-d', strtotime($tahun . '-' . $bulan . '-' . $jml_hari))]; } elseif ($_GET['time'] == 'last-week') { $previous_week = strtotime("-1 week +1 day"); $start_week = strtotime("last sunday midnight",$previous_week); $end_week = strtotime("next saturday",$start_week); $start_week = date("Y-m-d",$start_week); $end_week = date("Y-m-d",$end_week); $filter[] = ['tanggal', '>=', $start_week]; $filter[] = ['tanggal', '<=', $end_week]; } elseif($_GET['time'] == 'last-month') { $first_day = date("Y-m-d", strtotime("first day of previous month")); $last_day = date("Y-m-d", strtotime("last day of previous month")); $filter[] = ['tanggal', '>=', $first_day]; $filter[] = ['tanggal', '<=', $last_day]; } elseif($_GET['time'] == 'interval') { $first_date = date('Y-m-d', strtotime($_GET['interval_1'])); $end_date = date('Y-m-d', strtotime($_GET['interval_2'])); $filter[] = ['tanggal', '>=', $first_date]; $filter[] = ['tanggal', '<=', $end_date]; } } return $query->where($filter); }) ->count(); } else { $labour_orders = LabourOrder::whereHas('project',function($q) use ($search){ $q->where('projects.name','LIKE', "%{$search}%"); })->orWhereHas('mandor',function($q) use ($search){ $q->where('mandors.name','LIKE', "%{$search}%"); }) ->offset($start) ->limit($limit) ->orderBy($order, $dir) ->get(); $totalFiltered = LabourOrder::whereHas('project',function($q) use ($search){ $q->where('projects.name','LIKE', "%{$search}%"); })->orWhereHas('mandor',function($q) use ($search){ $q->where('mandors.name','LIKE', "%{$search}%"); }) ->count(); } } } else { if($_GET['project'] != '' || $_GET['status'] != '' || $_GET['user'] != '' || $_GET['time'] != '' || $_GET['interval_1'] != '') { $totalData = LabourOrder::where(function($query) { $filter = []; if($_GET['project'] != '') { $filter[] = ['id_project', $_GET['project']]; } if($_GET['status'] != '') { $filter[] = ['status', $_GET['status']]; } if($_GET['user'] != '') { $filter[] = ['id_user', $_GET['user']]; } if($_GET['time'] != '') { if($_GET['time'] == 'this-month') { $bulan = date('m'); $tahun = date('Y'); $jml_hari = date('t', mktime(0, 0, 0, $bulan+1, 0, $tahun)); $filter[] = ['tanggal', '>=', date('Y-m-d', strtotime($tahun . '-' . $bulan . '-01'))]; $filter[] = ['tanggal', '<=', date('Y-m-d', strtotime($tahun . '-' . $bulan . '-'. $jml_hari))]; } elseif ($_GET['time'] == 'last-week') { $previous_week = strtotime("-1 week +1 day"); $start_week = strtotime("last sunday midnight",$previous_week); $end_week = strtotime("next saturday",$start_week); $start_week = date("Y-m-d",$start_week); $end_week = date("Y-m-d",$end_week); $filter[] = ['tanggal', '>=', $start_week]; $filter[] = ['tanggal', '<=', $end_week]; } elseif($_GET['time'] == 'last-month') { $first_day = date("Y-m-d", strtotime("first day of previous month")); $last_day = date("Y-m-d", strtotime("last day of previous month")); $filter[] = ['tanggal', '>=', $first_day]; $filter[] = ['tanggal', '<=', $last_day]; } elseif($_GET['time'] == 'interval') { $first_date = date('Y-m-d', strtotime($_GET['interval_1'])); $end_date = date('Y-m-d', strtotime($_GET['interval_2'])); $filter[] = ['tanggal', '>=', $first_date]; $filter[] = ['tanggal', '<=', $end_date]; } } $filter[] = ['id_user', Auth::user()->id]; return $query->where($filter); }) ->count(); } else { $totalData = LabourOrder::where('id_user', Auth::user()->id)->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($_GET['project'] != '' || $_GET['status'] != '' || $_GET['user'] != '' || $_GET['time'] != '' || $_GET['interval_1'] != '') { $labour_orders = LabourOrder::where(function($query) { $filter = []; if($_GET['project'] != '') { $filter[] = ['id_project', $_GET['project']]; } if($_GET['status'] != '') { $filter[] = ['status', $_GET['status']]; } if($_GET['user'] != '') { $filter[] = ['id_user', $_GET['user']]; } if($_GET['time'] != '') { if($_GET['time'] == 'this-month') { $bulan = date('m'); $tahun = date('Y'); $jml_hari = date('t', mktime(0, 0, 0, $bulan+1, 0, $tahun)); $filter[] = ['tanggal', '>=', date('Y-m-d', strtotime($tahun . '-' . $bulan . '-01'))]; $filter[] = ['tanggal', '<=', date('Y-m-d', strtotime($tahun . '-' . $bulan . '-' . $jml_hari))]; } elseif ($_GET['time'] == 'last-week') { $previous_week = strtotime("-1 week +1 day"); $start_week = strtotime("last sunday midnight",$previous_week); $end_week = strtotime("next saturday",$start_week); $start_week = date("Y-m-d",$start_week); $end_week = date("Y-m-d",$end_week); $filter[] = ['tanggal', '>=', $start_week]; $filter[] = ['tanggal', '<=', $end_week]; } elseif($_GET['time'] == 'last-month') { $first_day = date("Y-m-d", strtotime("first day of previous month")); $last_day = date("Y-m-d", strtotime("last day of previous month")); $filter[] = ['tanggal', '>=', $first_day]; $filter[] = ['tanggal', '<=', $last_day]; } elseif($_GET['time'] == 'interval') { $first_date = date('Y-m-d', strtotime($_GET['interval_1'])); $end_date = date('Y-m-d', strtotime($_GET['interval_2'])); $filter[] = ['tanggal', '>=', $first_date]; $filter[] = ['tanggal', '<=', $end_date]; } } $filter[] = ['id_user', Auth::user()->id]; return $query->where($filter); }) ->offset($start) ->limit($limit) ->orderBy($order, $dir) ->get(); } else { $labour_orders = LabourOrder::where('id_user', Auth::user()->id) ->offset($start) ->limit($limit) ->orderBy($order, $dir) ->get(); } } else { $search = $request->input('search.value'); if($_GET['project'] != '' || $_GET['status'] != '' || $_GET['user'] != '' || $_GET['time'] != '' || $_GET['interval_1'] != '') { $labour_orders = LabourOrder::whereHas('project',function($q) use ($search){ $q->where('projects.name','LIKE', "%{$search}%"); })->orWhereHas('mandor',function($q) use ($search){ $q->where('mandors.name','LIKE', "%{$search}%"); }) ->where(function($query) { $filter = []; if($_GET['project'] != '') { $filter[] = ['id_project', $_GET['project']]; } if($_GET['status'] != '') { $filter[] = ['status', $_GET['status']]; } if($_GET['user'] != '') { $filter[] = ['id_user', $_GET['user']]; } if($_GET['time'] != '') { if($_GET['time'] == 'this-month') { $bulan = date('m'); $tahun = date('Y'); $jml_hari = date('t', mktime(0, 0, 0, $bulan+1, 0, $tahun)); $filter[] = ['tanggal', '>=', date('Y-m-d', strtotime($tahun . '-' . $bulan . '-01'))]; $filter[] = ['tanggal', '<=', date('Y-m-d', strtotime($tahun . '-' . $bulan . '-' . $jml_hari))]; } elseif ($_GET['time'] == 'last-week') { $previous_week = strtotime("-1 week +1 day"); $start_week = strtotime("last sunday midnight",$previous_week); $end_week = strtotime("next saturday",$start_week); $start_week = date("Y-m-d",$start_week); $end_week = date("Y-m-d",$end_week); $filter[] = ['tanggal', '>=', $start_week]; $filter[] = ['tanggal', '<=', $end_week]; } elseif($_GET['time'] == 'last-month') { $first_day = date("Y-m-d", strtotime("first day of previous month")); $last_day = date("Y-m-d", strtotime("last day of previous month")); $filter[] = ['tanggal', '>=', $first_day]; $filter[] = ['tanggal', '<=', $last_day]; } elseif($_GET['time'] == 'interval') { $first_date = date('Y-m-d', strtotime($_GET['interval_1'])); $end_date = date('Y-m-d', strtotime($_GET['interval_2'])); $filter[] = ['tanggal', '>=', $first_date]; $filter[] = ['tanggal', '<=', $end_date]; } } $filter[] = ['id_user', Auth::user()->id]; return $query->where($filter); }) ->offset($start) ->limit($limit) ->orderBy($order, $dir) ->get(); $totalFiltered = LabourOrder::whereHas('project',function($q) use ($search){ $q->where('projects.name','LIKE', "%{$search}%"); })->orWhereHas('mandor',function($q) use ($search){ $q->where('mandors.name','LIKE', "%{$search}%"); }) ->where(function($query) { $filter = []; if($_GET['project'] != '') { $filter[] = ['id_project', $_GET['project']]; } if($_GET['status'] != '') { $filter[] = ['status', $_GET['status']]; } if($_GET['user'] != '') { $filter[] = ['id_user', $_GET['user']]; } if($_GET['time'] != '') { if($_GET['time'] == 'this-month') { $bulan = date('m'); $tahun = date('Y'); $jml_hari = date('t', mktime(0, 0, 0, $bulan+1, 0, $tahun)); $filter[] = ['tanggal', '>=', date('Y-m-d', strtotime($tahun . '-' . $bulan . '-01'))]; $filter[] = ['tanggal', '<=', date('Y-m-d', strtotime($tahun . '-' . $bulan . '-' . $jml_hari))]; } elseif ($_GET['time'] == 'last-week') { $previous_week = strtotime("-1 week +1 day"); $start_week = strtotime("last sunday midnight",$previous_week); $end_week = strtotime("next saturday",$start_week); $start_week = date("Y-m-d",$start_week); $end_week = date("Y-m-d",$end_week); $filter[] = ['tanggal', '>=', $start_week]; $filter[] = ['tanggal', '<=', $end_week]; } elseif($_GET['time'] == 'last-month') { $first_day = date("Y-m-d", strtotime("first day of previous month")); $last_day = date("Y-m-d", strtotime("last day of previous month")); $filter[] = ['tanggal', '>=', $first_day]; $filter[] = ['tanggal', '<=', $last_day]; } elseif($_GET['time'] == 'interval') { $first_date = date('Y-m-d', strtotime($_GET['interval_1'])); $end_date = date('Y-m-d', strtotime($_GET['interval_2'])); $filter[] = ['tanggal', '>=', $first_date]; $filter[] = ['tanggal', '<=', $end_date]; } } $filter[] = ['id_user', Auth::user()->id]; return $query->where($filter); }) ->count(); } else { $labour_orders = LabourOrder::whereHas('project',function($q) use ($search){ $q->where('projects.name','LIKE', "%{$search}%"); })->orWhereHas('mandor',function($q) use ($search){ $q->where('mandors.name','LIKE', "%{$search}%"); }) ->where('id_user', Auth::user()->id) ->offset($start) ->limit($limit) ->orderBy($order, $dir) ->get(); $totalFiltered = LabourOrder::whereHas('project',function($q) use ($search){ $q->where('projects.name','LIKE', "%{$search}%"); })->orWhereHas('mandor',function($q) use ($search){ $q->where('mandors.name','LIKE', "%{$search}%"); }) ->where('id_user', Auth::user()->id) ->count(); } } } $data = array(); if (!empty($labour_orders) && $labour_orders->count() > 0) { foreach ($labour_orders as $row) { $nestedData['project'] = $row->project->name; $nestedData['no_lo'] = $row->no_lo; $nestedData['status'] = $row->status; $nestedData['nominal'] = 'Rp ' . number_format($row->labourOrderBorongan?$row->labourOrderBorongan->total_upah:$row->labourOrderHarian->total_upah,0,',','.'); $nestedData['tanggal'] = $row->tanggal; $nestedData['mandor'] = $row->mandor->name; if($row->id_user == NULL) { $nestedData['created_by'] = ''; } else { $nestedData['created_by'] = $row->user->fullname; } $nestedData['opsi'] = "