public function applicationSearchUserRequest(Request $request) { $statusObject = array("applied" => array("step" => "สมัครขอทุน", "appStatus" => "Pending", "approve" => "approved", "reject" => "rejected"), "rejected" => array("step" => "สมัครขอทุน", "appStatus" => "Reject"), "approved" => array("step" => "สมัครขอทุน", "appStatus" => "Approve"), "signed_agreement" => array("step" => "ทำสัญญารับทุน", "appStatus" => "Pending", "approve" => "approved_agreement", "reject" => "rejected_agreement", "files" => array(1, 2)), "rejected_agreement" => array("step" => "ทำสัญญารับทุน", "appStatus" => "Reject", "files" => array(1, 2)), "approved_agreement" => array("step" => "ทำสัญญารับทุน", "appStatus" => "Approve"), "first_payment" => array("step" => "เบิกเงินงวดที่ 1", "appStatus" => "Pending", "approve" => "approved_first_payment", "reject" => "rejected_first_payment", "files" => array(3, 4, 5, 6)), "rejected_first_payment" => array("step" => "เบิกเงินงวดที่ 1", "appStatus" => "Reject", "files" => array(3, 4, 5, 6)), "approved_first_payment" => array("step" => "เบิกเงินงวดที่ 1", "appStatus" => "Approve"), "second_payment" => array("step" => "รายงานความก้าวหน้าครั้งที่ 1", "appStatus" => "Pending", "approve" => "approved_second_payment", "reject" => "rejected_second_payment", "files" => array(7, 8, 9)), "rejected_second_payment" => array("step" => "รายงานความก้าวหน้าครั้งที่ 1", "appStatus" => "Reject", "files" => array(7, 8, 9)), "approved_second_payment" => array("step" => "รายงานความก้าวหน้าครั้งที่ 1", "appStatus" => "Approve"), "second_progress_report" => array("step" => "รายงานความก้าวหน้าครั้งที่ 2", "appStatus" => "Pending", "approve" => "approved_second_progress_report", "reject" => "rejected_second_progress_report", "files" => array(10, 11)), "rejected_second_progress_report" => array("step" => "รายงานความก้าวหน้าครั้งที่ 2", "appStatus" => "Reject", "files" => array(10, 11)), "approved_second_progress_report" => array("step" => "รายงานความก้าวหน้าครั้งที่ 2", "appStatus" => "Approve"), "finalized" => array("step" => "ส่งผลงานครั้งสุดท้าย", "appStatus" => "Pending", "approve" => "approved_finalized", "reject" => "rejected_finalized", "files" => array(12, 13)), "rejected_finalized" => array("step" => "ส่งผลงานครั้งสุดท้าย", "appStatus" => "Reject", "files" => array(12, 13)), "approved_finalized" => array("step" => "ส่งผลงานครั้งสุดท้าย", "appStatus" => "Approve"), "request_extend" => array("step" => "ขอขยายเวลา", "appStatus" => "Pending", "approve" => "approved_extend", "reject" => "rejected_extend", "files" => array(14, 15, 16)), "rejected_extend" => array("step" => "ขอขยายเวลา", "appStatus" => "Reject", "files" => array(14, 15, 16)), "approved_extend" => array("step" => "ขอขยายเวลา", "appStatus" => "Approve"), "project_finished" => array("step" => "ปิดโครงการ", "appStatus" => "Pending", "approve" => "approved_project_finished", "reject" => "rejected_project_finished", "files" => array(17, 18, 19, 20, 21)), "rejected_project_finished" => array("step" => "ปิดโครงการ", "appStatus" => "Reject", "files" => array(17, 18, 19, 20, 21)), "approved_project_finished" => array("step" => "ปิดโครงการ", "appStatus" => "Approve")); $searchObject = array("สมัครขอทุน" => array("applied", "rejected", "approved"), "ทำสัญญารับทุน" => array("signed_agreement", "rejected_agreement", "approved_agreement"), "เบิกเงินงวดที่ 1" => array("first_payment", "rejected_first_payment", "approved_first_payment"), "รายงานความก้าวหน้าครั้งที่ 1" => array("second_payment", "rejected_second_payment", "approved_second_payment"), "รายงานความก้าวหน้าครั้งที่ 2" => array("second_progress_report", "rejected_second_progress_report", "approved_second_progress_report"), "ส่งผลงานครั้งสุดท้าย" => array("finalized", "rejected_finalized", "approved_finalized"), "ขอขยายเวลา" => array("request_extend", "rejected_extend", "approved_extend"), "ปิดโครงการ" => array("project_finished", "rejected_project_finished", "approved_project_finished")); $query = trim($request->get('query', null)); $result = null; foreach ($searchObject as $k => $v) { if ($k == $query) { $result = $v; break; } } $per_page = 20; if ($result) { $applications = DB::table('applications')->join('funds', 'applications.fund', '=', 'funds.id')->join('users', 'applications.owner', '=', 'users.id')->where('funds.name', 'like', '%' . $query . '%')->orWhere('users.name', 'like', '%' . $query . '%')->orWhere('applications.status', $result[0])->orWhere('applications.status', $result[1])->orWhere('applications.status', $result[2])->select('applications.id', 'applications.status', 'funds.name as fundName', 'users.name as userName', 'applications.created_at')->orderBy('applications.id', 'desc')->paginate($per_page); } else { $applications = DB::table('applications')->join('funds', 'applications.fund', '=', 'funds.id')->join('users', 'applications.owner', '=', 'users.id')->where('funds.name', 'like', '%' . $query . '%')->orWhere('users.name', 'like', '%' . $query . '%')->select('applications.id', 'applications.status', 'funds.name as fundName', 'users.name as userName', 'applications.created_at')->orderBy('applications.id', 'desc')->paginate($per_page); } for ($i = 0; $i < count($applications); $i++) { $applications[$i]->step = $statusObject[$applications[$i]->status]['step']; $applications[$i]->appStatus = $statusObject[$applications[$i]->status]['appStatus']; $applications[$i]->documents = null; if ($applications[$i]->appStatus != 'Approve') { if ($applications[$i]->appStatus == 'Pending') { $applications[$i]->approve = $statusObject[$applications[$i]->status]['approve']; $applications[$i]->reject = $statusObject[$applications[$i]->status]['reject']; } if ($applications[$i]->status != 'applied' && $applications[$i]->status != 'rejected') { $documents = []; $files = $statusObject[$applications[$i]->status]['files']; for ($j = 0; $j < count($files); $j++) { $upload = Upload::where('filetype', $files[$j])->where('application_id', $applications[$i]->id)->first(); $filetype = Filetype::find($upload->filetype); array_push($documents, array("file_name" => $filetype->name, "file_path" => $upload->file_path, "file_status" => $upload->status, "upload_id" => $upload->id)); } $applications[$i]->documents = $documents; } } } return view('admin.fund_search_user_request', ['applications' => $applications, 'query' => $query]); }