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]);
 }