orderBy('created_at', 'DESC')->get(); return response()->json([ 'status' => 'succeed', 'message' => '', 'data' => $allrecords ], 200); } /** * Display a listing of the resource. * * @return \Illuminate\Http\Response */ public function index() { if (auth()->user()) { auth()->user()->addActivityComplete(1059); } $allrecords = NewRandD::all(); if (Auth::user()->can('member-RandD')) { foreach ($allrecords as $item) { $this->addItemPermissions(false, false, true, true, true, $item); } } else { if (Auth::user()->can('staff-RandD')) { foreach ($allrecords as $item) { $this->addItemPermissions(true, true, false, true, true, $item); } } else { // permission for ostani users if (Auth::user()->province_id) { foreach ($allrecords as $item) { if ($item->province_id == Auth::user()->province_id) { $this->addItemPermissions(true, true, false, true, false, $item); } else { $this->addItemPermissions(false, false, false, true, false, $item); } } } else { // permission for setadi users foreach ($allrecords as $item) { if ($item->province_id == Auth::user()->setad_id) { $this->addItemPermissions(true, true, false, true, false, $item); } else { $this->addItemPermissions(false, false, false, true, false, $item); } } } } } //// status for voting project foreach ($allrecords as $item) { //// admin if (Auth::check() && Auth::check() && Auth::user()->can('staff-RandD')) { /// aya proje rad shode ya na if ($item->project_status == 3) { $item->setAttribute('canReject', false); $item->setAttribute('startVote', false); $item->setAttribute('isStartVote', false); $item->setAttribute('resultVote', true); }else { ///// check mikone ke betune start kone ya na if (!RandDVoting::where('status', '2')->first() && !RandDVoting::where('project_id', $item->id)->first()) { $item->setAttribute('startVote', true); $item->setAttribute('canReject', true); } else { $item->setAttribute('startVote', false); } if (RandDVoting::where('project_id', $item->id)->where('status', '2')->first()) { $item->setAttribute('isStartVote', true); } else { $item->setAttribute('isStartVote', false); } if (RandDVoting::where('project_id', $item->id)->where('status', '4')->first()) { $item->setAttribute('resultVote', true); } else { $item->setAttribute('resultVote', false); } } } elseif (Auth::check() && Auth::user()->can('member-RandD')) { $item->setAttribute('isStartVote', false); $item->setAttribute('startVote', false); $item->setAttribute('canReject', false); if (RandDVoting::where('project_id', $item->id)->where('status', '2')->first()) { $item->setAttribute('Voting', true); $getVote = RandDVoting::where('project_id', $item->id)->where('status', '2')->first(); if (! RandDVotingPaperAnswer::where('vote_id', $getVote->id)->where('user_id', Auth::user()->id)->first()) { $url = 'https://rms.rmto.ir/randd/voting/' . $getVote->id; $item->setAttribute('urlVoting', $url); $item->setAttribute('allowVoting', true); } else { $item->setAttribute('allowVoting', false); } } else { $item->setAttribute('Voting', false); $item->setAttribute('allowVoting', false); } if (RandDVoting::where('project_id', $item->id)->where('status', '4')->first()) { $item->setAttribute('resultVote', true); } else { $item->setAttribute('resultVote', false); } } else { $item->setAttribute('canReject', false); $item->setAttribute('Voting', false); $item->setAttribute('allowVoting', false); $item->setAttribute('isStartVote', false); $item->setAttribute('startVote', false); if (RandDVoting::where('project_id', $item->id)->where('status', '4')->first()) { $item->setAttribute('resultVote', true); } else { $item->setAttribute('resultVote', false); } } } foreach ($allrecords as $item) { switch ($item->project_status) { case '1': $item->setAttribute('project_status_fa', 'در حال بررسی'); break; case '2': $item->setAttribute('project_status_fa', 'خاتمه یافته'); break; case '3': $item->setAttribute('project_status_fa', 'رد شده'); break; default: break; } } return response()->json([ 'status' => 'succeed', 'message' => '', 'data' => $allrecords, ], 200); } //// add permission array to all rows in data public function addItemPermissions($isCud, $reqFin, $isVoting, $votingResult, $votingUserResult, $item) { $item->perm = [ 'isCUD' => $isCud, 'requestFinish' => $reqFin, 'isVoting' => $isVoting, 'votingResult' => $votingResult, 'votingUsersResult' => $votingUserResult, ]; } public function store(Request $request) { // Set automatic province persian name in table if ($request->province_id > 49) { $prov_item = SetadProvince::find($request->province_id); $province_fa = $prov_item->name_fa; } else { $prov_item = Province::find($request->province_id); $province_fa = $prov_item->name_fa; if ($request->province_id < 10) { } } // Make Unique Code $uuid = Str::uuid(); // Upload Final report 1 if ($request->has('proj_rfp_file')) { $file = $request->file('proj_rfp_file'); $destinationPath = 'storage/rand/rfp_file/' . now()->year . '/' . now()->month . '/'; $filename = $uuid . '-one.' . $file->getClientOriginalExtension(); $file->move($destinationPath, $filename); } switch ($request->domain_id) { case "1": $domain_fa = 'راهداری'; break; case "2": $domain_fa = 'حمل و نقل'; break; case "3": $domain_fa = 'فناوری و سیستم هوشمند'; break; case "4": $domain_fa = 'منابع انسانی'; break; case "5": $domain_fa = 'روستایی'; break; } // Store Data $create = NewRandD::create([ 'title' => $request->title, 'province_id' => $request->province_id, 'province_fa' => $province_fa, 'domain_id' => $request->domain_id, 'domain_fa' => $domain_fa, 'project_amount' => $request->project_amount, 'credit_status' => $request->credit_status, 'rfp_file' => $destinationPath . $filename, 'unique_code' => $uuid, 'fname_creator' => $request->fname_creator, 'lname_creator' => $request->lname_creator, 'phone_creator' => $request->phone_creator, 'proj_credit_resourse' => $request->proj_credit_resourse ?? null ]); // TODO: upload to server and add unique_id table in database new randd $year = Verta::now()->format('y'); $temp = ($request->province_id < 10) ?"0".$request->province_id:$request->province_id ; $unique_id = '1' . $request->domain_id .$temp. $year . $create->id; $create->update(['unique_id' => $unique_id]); $getRandD = NewRandD::where('id', $create->id)->get(); Auth::user()->addActivity("پروژه با کد یکتا {$create->id} در بخش تحقیق و توسعه ایجاد شد."); return response()->json([ 'message' => 'success', 'data' => $getRandD ], 200); } /** * Remove the specified resource from storage. * * @param int $id * @return \Illuminate\Http\Response */ public function destroy(Request $request, $id) { $d = NewRandD::find($id); $msg = ' پروژه‌ پیشنهادی کمیته، با کد یکتا ' . $d->unique_id . '(' .$d->title.')، توسط ' . Auth::user()->first_name . ' ' . Auth::user()->last_name . ' حذف شد.'; Auth::user()->activityLogs()->create([ 'description' => $msg ]); $d->delete(); return response()->json([ 'message' => 'با موفقیت حذف شد' ], 200); } /** * Show the form for editing the specified resource. * * @param int $id * @return \Illuminate\Http\Response */ public function edit(NewRandD $newRandD, Request $request) { // Set automatic province persian name in table if ($request->province_id > 49) { $prov_item = SetadProvince::find($request->province_id); $province_fa = $prov_item->name_fa; } else { $prov_item = Province::find($request->province_id); $province_fa = $prov_item->name_fa; } // Make Unique Code $uuid = Str::uuid(); // Upload Final report 1 $rfp_file = $newRandD->rfp_file; if ($request->has('proj_rfp_file')) { $file = $request->file('proj_rfp_file'); $destinationPath = 'storage/rand/rfp_file/' . now()->year . '/' . now()->month . '/'; $filename = $uuid . '-one.' . $file->getClientOriginalExtension(); $file->move($destinationPath, $filename); $rfp_file = $destinationPath . $filename; } switch ($request->domain_id) { case "1": $domain_fa = 'راهداری'; break; case "2": $domain_fa = 'حمل و نقل'; break; case "3": $domain_fa = 'فناوری و سیستم هوشمند'; break; case "4": $domain_fa = 'منابع انسانی'; break; case "5": $domain_fa = 'روستایی'; break; } // Store Data $newRandD->update([ 'title' => $request->title, 'province_id' => $request->province_id, 'province_fa' => $province_fa, 'domain_id' => $request->domain_id, 'domain_fa' => $domain_fa, 'project_amount' => $request->project_amount, 'credit_status' => $request->credit_status, 'unique_code' => $uuid, 'fname_creator' => $request->fname_creator, 'lname_creator' => $request->lname_creator, 'phone_creator' => $request->phone_creator, 'proj_credit_resourse' => $request->proj_credit_resourse ?? null, 'rfp_file' => $rfp_file ]); // TODO: upload to server and add unique_id table in database new randd $year = Verta::now()->format('y'); $temp = ($request->province_id < 10) ?"0".$request->province_id:$request->province_id ; $unique_id = '1' . $request->domain_id .$temp. $year . $newRandD->id; $newRandD->update(['unique_id' => $unique_id]); $getRandD = NewRandD::whereId($newRandD->id)->first(); $msg = ' پروژه‌ پیشنهادی کمیته، با کد یکتا ' . $getRandD->unique_id . '(' .$getRandD->title.')، توسط ' . Auth::user()->first_name . ' ' . Auth::user()->last_name . ' ویرایش شد.'; Auth::user()->activityLogs()->create([ 'description' => $msg ]); return response()->json([ 'message' => 'success', 'data' => $getRandD, ]); } public function reject(NewRandD $newRandD, Request $request) { if (auth()->user()) { auth()->user()->addActivityComplete(1065); } // Update Data $newRandD->reject_description = $request->reject_description; $newRandD->project_status = 3; $newRandD->save(); $msg = ' پروژه‌ پیشنهادی کمیته، با کد یکتا ' . $newRandD->unique_id . '(' .$newRandD->title.')، توسط ' . Auth::user()->first_name . ' ' . Auth::user()->last_name . 'رد شد.'; Auth::user()->activityLogs()->create([ 'description' => $msg ]); return response()->json([ 'message' => 'success', 'data' => $newRandD, ]); } public function operationStatus($id) { $new = NewRandD::find($id); $new->update([ 'operation_status' => 1 ]); return response()->json([ 'message' => 'ثبت فرایند با موفقیت انجام شد.', 'data' => $new ]); } public function search(Request $request) { switch ($request->type) { case "1": $research = new ResearchDev(); $data = $research->where("contract_status", 1)->where('project_title', 'like', '%'.$request->search.'%')->orderByDesc('id')->get(); break; case "2": $research = new ResearchDev(); $data = $research->where("contract_status", 2)->where('project_title', 'like', '%'.$request->search.'%')->orderByDesc('id')->get(); break; case "3": $research = new NewRandD(); $data = $research->where('title', 'like', '%'.$request->search.'%')->orderByDesc('id')->get(); break; } return response()->json([ 'status' => 'succeed', 'message' => 'yes', 'status_bool' => 1, 'data' => $data, ], 200); } public function statics(Request $request) { $comite = NewRandD::all()->count(); $ejra = ResearchDev::where('contract_status', 1)->get()->count(); $end = ResearchDev::where('contract_status', 2)->get()->count(); // $members = RandDMembers::all(); return response()->json([ 'message' => 'success', 'statics' => [ 'comite' => $comite, 'ejra' => $ejra, 'end' => $end ], 'data' => [ // 'aazaye_comite' => $members, ] ]); } }