level); $level_all = ['SUPERADMIN', 'GENERAL MANAGER', 'FINANCE MANAGER', 'SUPPLY CHAIN MANAGER', 'PROJECT MANAGER']; $data_send = $request->all(); $status_proses = ['Proses - Kirim Foto Via Whatsapp', 'Proses - Cuma Nanya', 'Proses - Belum Respon', 'Proses - No Respon', 'On Proses']; $status_asistensi = ['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']; $status_deal = ['(Deal) Deal By Phone', '(Deal) After Penawaran']; $status_no_deal = ['(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']; // Get Filter $get_filter = []; $get_filter_2 = []; if (!in_array($level, $level_all)) { if ($level == 'MARKETING MANAGER' || $level == 'MARKETING OFFICER') { $get_filter = ['client_detail.unit_bisnis', '!=', 'Bintoro Steel']; } elseif ($level == 'VENDOR') { $get_filter = ['id_vendor', Auth::user()->id]; } elseif ($level == 'ARSITEK') { $get_filter = ['id_arsitek', Auth::user()->id]; } else { $get_filter = ['created_by', Auth::user()->id]; if ($level == 'QUANTITY SURVEYOR') { $get_filter_2 = ['id_user', Auth::user()->id]; } } } // End Get Filter $base_code = DB::table('clients') ->join('client_detail', 'client_detail.id_client', '=', 'clients.id') ->join('users', 'users.id', '=', 'clients.created_by') ->select('clients.id', 'clients.created_at', 'clients.fullname as clientsFullname', 'clients.phone', 'clients.code', 'clients.created_by', 'clients.id_user', 'client_detail.jasa_build', 'client_detail.status_order', 'client_detail.area', 'client_detail.note', 'client_detail.jenis_pekerjaan', 'client_detail.masuk_dari_mana', 'users.fullname as usersFullname') ->where(function ($q) use ($data_send, $status_proses, $status_asistensi, $status_deal, $status_no_deal, $get_filter, $get_filter_2) { $where = []; if (array_key_exists('waktu', $data_send)) { if ($data_send['specific_date']) { $where[] = ['clients.created_at', date('Y-m-d', strtotime($data_send['specific_date']))]; } elseif ($data_send['between_1'] && $data_send['between_2']) { $where[] = ['created_at', '>=', date('Y-m-d', strtotime($data_send['between_1']))]; $where[] = ['created_at', '<=', date('Y-m-d', strtotime($data_send['between_2']))]; } elseif ($data_send['waktu'] == 'today') { $where[] = ['created_at', date('Y-m-d')]; } } if (array_key_exists('status_order', $data_send)) { if ($data_send['status_order']) { if ($data_send['status_order'] == 'Proses') { $q->whereIn('client_detail.status_order', $status_proses); } elseif ($data_send['status_order'] == 'Asistensi') { $q->whereIn('client_detail.status_order', $status_asistensi); } elseif ($data_send['status_order'] == 'Deal') { $q->whereIn('client_detail.status_order', $status_deal); } elseif ($data_send['status_order'] == 'No Deal') { $q->whereIn('client_detail.status_order', $status_no_deal); } } } if (array_key_exists('jasa_build', $data_send)) { if ($data_send['jasa_build']) { $where[] = ['client_detail.jasa_build', $data_send['jasa_build']]; } } if (array_key_exists('masuk_dari_mana', $data_send)) { if ($data_send['masuk_dari_mana']) { $where[] = ['client_detail.masuk_dari_mana', $data_send['masuk_dari_mana']]; } } if (array_key_exists('id_user', $data_send)) { if ($data_send['id_user']) { $where[] = ['clients.id_user', $data_send['id_user']]; } } // dd($where); if ($get_filter) { if ($get_filter_2) { $option_1 = $where; $option_1[] = $get_filter; $option_2 = $where; $option_2[] = $get_filter_2; $q->where($option_1)->orWhere($option_2); } else { $where[] = $get_filter; $q->where($where); } } else { $q->where($where); } }); $totalData = $base_code->count(); $totalFiltered = $totalData; $limit = $request->input('length'); $start = $request->input('start'); // Sorting $column_order = json_decode(ClientColumn::first()->column_order, true); for ($a = 0; $a <= count($column_order) - 1; $a++) { if ($column_order[$a] == 'Created At' || $column_order[$a] == 'Fullname' || $column_order[$a] == 'Phone' || $column_order[$a] == 'Jasa' || $column_order[$a] == 'Area' || $column_order[$a] == 'Catatan' || $column_order[$a] == 'Options') { $columns[$a] = 'id'; } elseif ($column_order[$a] == 'Status') { $columns[$a] = 'client_detail.status_order'; } elseif ($column_order[$a] == 'Jenis Pekerjaan') { $columns[$a] = 'client_detail.jenis_pekerjaan'; } elseif ($column_order[$a] == 'Order By') { $columns[$a] = 'usersFullname'; } } // dd($column_order); // $columns = [ // 0 => 'usersFullname', // 1 =>'id', // 2=> 'id', // 3=> 'id', // 4=> 'id', // 5=> 'id', // 6=> 'id', // 7=> 'id', // 8=> 'id', // 9=> 'id', // ]; $order = $columns[$request->input('order.0.column')]; $dir = $request->input('order.0.dir'); if (empty($request->input('search.value'))) { $clients = $base_code->offset($start) ->limit($limit) ->orderBy($order, $dir) ->get(); } else { $search = $request->input('search.value'); $base_code = DB::table('clients') ->join('client_detail', 'client_detail.id_client', '=', 'clients.id') ->join('users', 'users.id', '=', 'clients.created_by') ->select('clients.id', 'clients.created_at', 'clients.fullname as clientsFullname', 'clients.phone', 'clients.code', 'clients.created_by', 'clients.id_user', 'client_detail.jasa_build', 'client_detail.status_order', 'client_detail.area', 'client_detail.note', 'client_detail.jenis_pekerjaan', 'client_detail.masuk_dari_mana', 'users.fullname as usersFullname') ->where(function ($q) use ($search, $data_send, $status_proses, $status_asistensi, $status_deal, $status_no_deal, $get_filter, $get_filter_2) { $where = []; if (array_key_exists('waktu', $data_send)) { if ($data_send['specific_date']) { $where[] = ['clients.created_at', date('Y-m-d', strtotime($data_send['specific_date']))]; } elseif ($data_send['between_1'] && $data_send['between_2']) { $where[] = ['created_at', '>=', date('Y-m-d', strtotime($data_send['between_1']))]; $where[] = ['created_at', '<=', date('Y-m-d', strtotime($data_send['between_2']))]; } elseif ($data_send['waktu'] == 'today') { $where[] = ['created_at', date('Y-m-d')]; } } if (array_key_exists('status_order', $data_send)) { if ($data_send['status_order']) { if ($data_send['status_order'] == 'Proses') { $q->whereIn('client_detail.status_order', $status_proses); } elseif ($data_send['status_order'] == 'Asistensi') { $q->whereIn('client_detail.status_order', $status_asistensi); } elseif ($data_send['status_order'] == 'Deal') { $q->whereIn('client_detail.status_order', $status_deal); } elseif ($data_send['status_order'] == 'No Deal') { $q->whereIn('client_detail.status_order', $status_no_deal); } } } if (array_key_exists('jasa_build', $data_send)) { if ($data_send['jasa_build']) { $where[] = ['client_detail.jasa_build', $data_send['jasa_build']]; } } if (array_key_exists('masuk_dari_mana', $data_send)) { if ($data_send['masuk_dari_mana']) { $where[] = ['client_detail.masuk_dari_mana', $data_send['masuk_dari_mana']]; } } if (array_key_exists('id_user', $data_send)) { if ($data_send['id_user']) { $where[] = ['clients.id_user', $data_send['id_user']]; } } $option_1 = $where; $option_2 = $where; $option_3 = $where; $option_1[] = ['clients.fullname', 'LIKE', "%{$search}%"]; $option_2[] = ['clients.phone', 'LIKE', "%{$search}%"]; $option_3[] = ['client_detail.note', 'LIKE', "%{$search}%"]; if ($get_filter) { if ($get_filter_2) { $pilihan_1 = $option_1; $pilihan_2 = $option_2; $pilihan_3 = $option_3; $pilihan_4 = $option_1; $pilihan_5 = $option_2; $pilihan_6 = $option_3; $pilihan_1[] = $get_filter; $pilihan_2[] = $get_filter; $pilihan_3[] = $get_filter; $pilihan_4[] = $get_filter_2; $pilihan_5[] = $get_filter_2; $pilihan_6[] = $get_filter_2; $q->where($pilihan_1)->orWhere($pilihan_2)->orWhere($pilihan_3)->orWhere($pilihan_4)->orWhere($pilihan_5)->orWhere($pilihan_6); } else { $option_1[] = $get_filter; $option_2[] = $get_filter; $option_3[] = $get_filter; $q->where($option_1)->orWhere($option_2)->orWhere($option_3); } } else { $q->where($option_1)->orWhere($option_2)->orWhere($option_3); } }); $clients = $base_code->offset($start) ->limit($limit) ->orderBy($order, $dir) ->get(); $totalFiltered = $base_code->count(); } $data = array(); if (!empty($clients)) { foreach ($clients as $c) { // Chat btn $unreadChatCount = ClientChatController::checkMessageCount($c->id, \Auth::user()->id, null); $badge = ""; if ($unreadChatCount) { $badge = ' '.$unreadChatCount.''; } $options = '
'; $options .= '
'; // End chat btn if (\App\Http\Controllers\RoleController::access('list_client', 'edit') > 0) : $client_status = $c->status_order; $client_note = $c->note; $client_code = $c->code; $options .= '
Edit
'; $options .= ''; $options .= '
'; endif; $options .= '
'; if (\App\Http\Controllers\RoleController::access('list_client', 'view') > 0) : $options .= '
Detail
'; endif; if (\App\Http\Controllers\RoleController::access('list_client', 'delete') > 0) : $options .= '
'; endif; $options .= '
'; $client_column = json_decode(ClientColumn::first()->column_order, true); $class_column = ''; if (in_array($c->status_order, $status_asistensi)) { $class_column = 'style-asistensi'; } elseif (in_array($c->status_order, $status_proses)) { $class_column = 'style-proses'; } elseif (in_array($c->status_order, $status_no_deal)) { $class_column = 'style-no-deal'; } elseif (in_array($c->status_order, $status_deal)) { $class_column = 'style-deal'; } for ($i = 1; $i <= count($client_column); $i++) : if ($client_column[$i - 1] == 'Area') : $nestedData[$i] = '' . $c->area . ''; elseif ($client_column[$i - 1] == 'Catatan') : $nestedData[$i] = '' . $c->note . ''; elseif ($client_column[$i - 1] == 'Created At') : $nestedData[$i] = '' . $c->created_at ? date('d-m-Y', strtotime($c->created_at)) : '-' . ''; elseif ($client_column[$i - 1] == 'Fullname') : $nestedData[$i] = '' . $c->clientsFullname . ''; elseif ($client_column[$i - 1] == 'Jasa') : $nestedData[$i] = '' . $c->jasa_build . ''; elseif ($client_column[$i - 1] == 'Jenis Pekerjaan') : $nestedData[$i] = '' . $c->jenis_pekerjaan . ''; elseif ($client_column[$i - 1] == 'Options') : $nestedData[$i] = $options; elseif ($client_column[$i - 1] == 'Order By') : $nestedData[$i] = '' . $c->usersFullname . ''; elseif ($client_column[$i - 1] == 'Phone') : $nestedData[$i] = '' . $c->phone . ''; elseif ($client_column[$i - 1] == 'Status') : $nestedData[$i] = '' . $c->status_order . ''; endif; endfor; $data[] = $nestedData; } } $json_data = array( "draw" => intval($request->input('draw')), "recordsTotal" => intval($totalData), "recordsFiltered" => intval($totalFiltered), "data" => $data ); echo json_encode($json_data); } }