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(Auction::select(['auctions.id', DB::raw('concat(users.fname ," ",users.lname) as users_fullname ') ,DB::raw('auction_categories.title as auction_categories_title ') ,'auctions.title','display','time','auction_category_id', 'auctions.created_at', 'auctions.updated_at']) ->join('users', 'auctions.user_id', '=', 'users.id') ->join('auction_categories', 'auctions.auction_category_id', '=', 'auction_categories.id') ) ->editColumn('display', function($auction) { if($auction->display==1){ return " فعال"; }elseif($auction->display==0){ return "غیرفعال"; } }) ->addColumn('operation', function($auction) { return parent::redirectAction('list/delete?id='.$auction->id,'حذف','danger mr-1') .parent::redirectAction('list/edit?id='.$auction->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' => 'auction_categories_title', 'name' => 'auction_categories.title', 'title' => 'دسته بندی ']) ->addColumn(['data' => 'title', 'name' => 'title', 'title' => 'عنوان']) ->addColumn(['data' => 'time', 'name' => 'time', 'title' => 'زمان پایان مزایده']) ->addColumn(['data' => 'display', 'name' => 'display', '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=Auction::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=AuctionCategory::find($request->id)->auction()->with('category')->orderBy('id','DESC')->get(); }else{ $list=Auction::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) { Auction::find($request->id)->delete(); return redirect('admin/auction/list'); } /** * This function use to create comment for auction * @param CheckSpecialuser $request * @return Response */ function comment(CheckSpecialuser $request){ $auction=Auction::find($request->id); $comment=$auction->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 auction comments * @param CheckSpecialuser $request * @return Response */ function commentList(CheckSpecialuser $request){ $data= Auction::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 Auction(); $data['route_action'] = 'auction.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) { $auction=Auction::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, 'auction_category_id' =>$request->auction_category_id, 'display' =>$request->display ]); Parent::attachmentProcess($request,$auction); $category_id=$auction->auction_category_id; $ids=Like::where('likable_id',$category_id)->where('likable_type','Modules\Auction\Entities\AuctionCategory')->pluck('user_id'); foreach ($ids as $itm) { User::find($itm)->notify(new AuctionCreate($auction->id, $category_id)); } return redirect()->route('admin.auction.list'); } /** * Show the form for editing a new resource. * @param Request $request * @return Response */ public function showEdit(Request $request) { $data=Auction::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'] = 'auction.list.update'; $data['data']=Auction::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) { Auction::find(($request->id))->update($request->all()); $data=Auction::find($request->id); Parent::attachmentProcess($request,$data); return redirect()->route('admin.auction.list'); } /** * this function used to like a auction * @param CheckSpecialuser $request * @return \Illuminate\Contracts\Routing\ResponseFactory|\Symfony\Component\HttpFoundation\Response */ function like(CheckSpecialuser $request){ $auction = Auction::find($request->id); $like = $auction->like()->firstOrCreate([ 'user_id'=>Auth::user()->id ]); // if($like->wasRecentlyCreated){ // $auction->increment('like'); // }else{ // $like->delete(); // $auction->decrement('like'); // } return response()->json([ 'data' => true, 'message'=>'ok', 'status' => 200 ]); } function getLikedauction(){ $special_user=SpecialUser::pluck('id'); if(in_array(Auth::user()->id,$special_user)){ $auctions=Auth::user()->likes()->with('likable')->get(); return response()->json([ 'data' => $auctions, 'message'=>'ok', 'status' => 200 ]); }else{ return response()->json([ 'data' => 'Access Denied', 'message'=>'ok', 'status' => 200 ]); } } /** * this function used to search auction * @param CheckSpecialuser * $request * @return array */ function search(CheckSpecialuser $request){ $input = $request->q; $data['auction']=Auction::where('title','like',"%$input%") ->orWhere('description','like',"%$input%") ->orWhere('content','like',"%$input%") ->get(); $data['category']=AuctionCategory::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= AuctionCategory::pluck('title','id'); return $category; } public function showAll() { $data['auction']=Auction::orderBy('id','desc')->with('category')->paginate(9); $data['category']=AuctionCategory::orderBy('id','desc')->get(); $data['slider']=Slider::where('slug','main')->with('subs')->get(); return response()->json([ 'data' => $data, 'message'=>'ok', 'status' => 200 ]); } }