htmlBuilder = $htmlBuilder; $this->htmlBuilder->parameters([ 'paging' => true, 'searching' => true, 'info' => false, 'searchDelay' => 350, 'language' => [ 'url' => Module::asset('core:datatable.json') ], ]); Parent::__construct(); } public function index(Request $request) { if ($request->ajax()) { return DataTables::of(Tender::select(['tenders.id', DB::raw('concat(users.fname ," ",users.lname) as users_fullname ') ,DB::raw('tender_categories.title as tender_categories_title ') ,'tenders.title','display','time','tender_category_id', 'tenders.created_at', 'tenders.updated_at']) ->join('users', 'tenders.user_id', '=', 'users.id') ->join('tender_categories', 'tenders.tender_category_id', '=', 'tender_categories.id') ) ->editColumn('display', function($tender) { if($tender->display==1){ return " فعال"; }elseif($tender->display==0){ return "غیرفعال"; } }) ->addColumn('operation', function($tender) { return parent::redirectAction('list/delete?id='.$tender->id,'حذف','danger mr-1') .parent::redirectAction('list/edit?id='.$tender->id,'ویرایش','warning mr-1'); }) ->rawColumns(['operation','display']) ->make(true); } $object = 'مناقصه ها'; $html = $this->htmlBuilder ->addColumn(['data' =>'id', 'name' => 'id', 'title' => 'شناسه']) ->addColumn(['data' => 'users_fullname', 'name' => 'users.fname', 'title' => 'نام کاربر']) ->addColumn(['data' => 'users_fullname', 'name' => 'users.lname', 'title' => 'نام کاربر','class'=>'d-none']) ->addColumn(['data' => 'tender_categories_title', 'name' => 'tender_categories.title', 'title' => 'دسته بندی ']) ->addColumn(['data' => 'title', 'name' => 'title', 'title' => 'عنوان']) ->addColumn(['data' => 'time', 'name' => 'time', 'title' => 'زمان پایان مناقصه']) ->addColumn(['data' => 'display', 'name' => 'display', 'title' => 'نمایش']) ->addColumn(['data' => 'tender_category_id', 'name' => 'tender_category_id', 'title' => 'دسته بندی ']) ->addColumn(['data' => 'created_at', 'name' => 'created_at', 'title' => 'ثبت']) ->addColumn(['data' => 'updated_at', 'name' => 'updated_at', 'title' => 'ویرایش']) ->addColumn(['data' => 'operation', 'name' => 'operation', 'title' => 'عملیات']); return view('core::shared.datatable', compact(['html','object'])); } public function show(CheckSpecialuser $request) { $data=Tender::find($request->id)->with('category','user','comments')->where('id',$request->id)->first(); $data->increment('hit'); return response()->json([ 'data' => $data, 'message'=>'ok', 'status' => 200 ]); } /** * Show the specified resource. * @param CheckSpecialuser $request * @return Response */ public function list(CheckSpecialuser $request) { if($request->id){ $list=TenderCategory::find($request->id)->tender()->with('category')->orderBy('id','DESC')->get(); }else{ $list=Tender::with('category')->orderBy('id','DESC')->get(); } if($request->sort == 'hit'){ $list=$list->sortByDesc('hit')->values()->all(); } if($request->sort == 'like'){ $list=$list->sortByDesc('likes')->values()->all(); } $list=BaseController::paginateCollection($list,9,$request->page); return response()->json([ 'data' => $list, 'message'=>'ok', 'status' => 200 ]); } /** * Remove the specified resource from storage. * @param Request $request * @return Response */ public function destroy(Request $request) { Tender::find($request->id)->delete(); return redirect('admin/tender/list'); } /** * This function use to create comment for tender * @param CheckSpecialuser $request * @return Response */ function comment(CheckSpecialuser $request){ $tender=Tender::find($request->id); $comment=$tender->comments()->create([ 'comment'=>$request->comment, 'user_id'=>Auth::user()->id, ]); $results=Comment::where('id',$comment->id)->with('commentable')->first(); return response()->json([ 'data' => $results, 'message'=>__('ok'), 'status' => 200 ]); } /** * This function use to get list og tender comments * @param CheckSpecialuser $request * @return Response */ function commentList(CheckSpecialuser $request){ $data= Tender::where('id',$request->id)->with('comments')->first(); return response()->json([ 'data' => $data, 'message'=>__('ok'), 'status' => 200 ]); } /** * Remove the specified comment * @param CheckSpecialuser $request * @return Response */ public function deleteComment(CheckSpecialuser $request) { Comment::find($request->id)->delete(); return response()->json([ 'data' =>true, 'message'=>'deleted', 'status' => 200 ]); } /** * Show the form for creating a new resource. * @return Response */ public function add() { $data['model'] = new Tender(); $data['route_action'] = 'tender.list.store'; return view('core::shared.add',$data); } /** * Store a newly created resource in storage. * @param Request $request * @return Response */ public function store(Request $request) { $tender=Tender::create([ 'user_id' => Auth::user()->id, 'title' => $request->title, 'seo_title' => $request->seo_title, 'seo_description' => $request->seo_description, 'content' => $request->get('content'), 'description' =>$request->description, 'tender_category_id' =>$request->tender_category_id, 'display' =>$request->display ]); Parent::attachmentProcess($request,$tender); $category_id=$tender->tender_category_id; $ids=Like::where('likable_id',$category_id)->where('likable_type','Modules\Auction\Entities\TenderCategory')->pluck('user_id'); foreach ($ids as $itm){ User::find($itm)->notify(new TenderCreate($tender->id,$category_id)); } return redirect()->route('admin.tender.list'); } /** * Show the form for editing a new resource. * @param Request $request * @return Response */ public function showEdit(Request $request) { $data=Tender::find($request->id); return view('core::shared.edit', ['data' => $data]); } /** * Show the form for editing the specified resource. * @param Request $request * @return Response */ public function edit(Request $request) { $data['route_action'] = 'tender.list.update'; $data['data']=Tender::find($request->id); return view('core::shared.edit', $data); } /** * Update the specified resource in storage. * @param Request $request * @return Response */ public function update(Request $request) { Tender::find(($request->id))->update($request->all()); $data=Tender::find($request->id); Parent::attachmentProcess($request,$data); return redirect()->route('admin.tender.list'); } /** * this function used to like a tender * @param Request $request * @return \Illuminate\Contracts\Routing\ResponseFactory|\Symfony\Component\HttpFoundation\Response */ function like(Request $request){ $tender = Tender::find($request->id); $like = $tender->like()->firstOrCreate([ 'user_id'=>Auth::user()->id ]); // if($like->wasRecentlyCreated){ // $tender->increment('like'); // }else{ // $like->delete(); // $tender->decrement('like'); // } return response()->json([ 'data' => true, 'message'=>'ok', 'status' => 200 ]); } function getLikedtender(){ $tenders=Auth::user()->likes()->with('likable')->get(); return response()->json([ 'data' => $tenders, 'message'=>'ok', 'status' => 200 ]); } /** * this function used to search tender * @param Request $request * @return array */ function search(Request $request){ $input = $request->q; $data['tender']=tender::where('title','like',"%$input%") ->orWhere('description','like',"%$input%") ->orWhere('content','like',"%$input%") ->get(); $data['category']=tenderCategory::where('title','like',"%$input%") ->orWhere('description','like',"%$input%") ->get(); return response()->json([ 'data' => $data, 'message'=>'ok', 'status' => 200 ]); } static public function display(){ return ['1'=>'فعال','0' => 'غیر فعال']; } static public function category(){ $category= tenderCategory::pluck('title','id'); return $category; } public function showAll() { $data['tender']=Tender::orderBy('id','desc')->with('category')->paginate(9); $data['category']=TenderCategory::orderBy('id','desc')->get(); $data['slider']=Slider::where('slug','main')->with('subs')->get(); return response()->json([ 'data' => $data, 'message'=>'ok', 'status' => 200 ]); } /** * Show tender by category id. * @param Request $request * @return Response */ public function lists(Request $request) { if($request->q!=null){ $input=$request->q; $data=Tender::where('title','like',"%$input%") ->orWhere('description','like',"%$input%") ->orWhere('content','like',"%$input%") ->paginate(9); return response()->json([ 'data' => $data, 'message'=>'ok', 'status' => 200 ]); } else{ if($request->id!=null){ if(TenderCategory::find($request->id)==null){ $list=TenderCategory::find($request->id); }else{ $list=TenderCategory::find($request->id)->tender()->with('category')->orderBy('id','asc')->paginate(9); } }else{ $list=Tender::with('category')->paginate(9); } if($request->sort == 'hit'){ $list=$list->sortBy('hit'); } if($request->sort == 'like'){ $list=$list->sortBy('likes'); } return response()->json([ 'data' =>$list, 'message'=>'ok', 'status' => 200 ]); } } }