get(); return view('Admin.Pages.manage_cms.manage_faq.manage_faq', ['faq_data' => $faq_data]); } public function show($id) { // $faq_data = FAQ::where('id',$id)->where('is_active','1')->first(); // $faq_data = FAQ::find($id)->tag; $faq_data = Tag::join('faq', 'tags.id', '=', 'faq.tag_id')->where('faq.id', $id)->get(['faq.*', 'tags.tag_name']); return view('Admin.Pages.manage_cms.manage_faq.view_faq', ['faq_data' => $faq_data[0]]); } public function add_faq() { $page_list = Pages::where('is_active', 1)->get(); $tags = Tag::all(); return view('Admin.Pages.manage_cms.manage_faq.add_faq', ['page_list' => $page_list, 'tags' => $tags]); } public function store_faq(Request $request) { $validator = Validator::make( $request->all(), [ // "question" => 'required|unique:faq,faq_question,tag_id'.$request->input('tag'), "question" => [ 'required', function ($attribute, $value, $fail) { // check question is unique in that table $question_exists = FAQ::where('faq_question', $value)->where('tag_id', request()->input('tag'))->count() > 0; if ($question_exists) { $fail('The ' . $attribute . ' must be unique.'); } } ], "answer" => 'required', "faq_type" => 'required', "tag" => 'required', ], [ 'question.required' => 'Question is required', 'question.unique' => 'Question should be unique', 'answer.required' => 'Answer is required', 'faq_type.required' => 'Faq Type is required', 'tag.required' => 'Tag Name is required', ] ); // dd($request->all()); // return $request->all(); $validationMessage = validationErrorMessage($validator); if ($validationMessage) { return response()->json( [ "status" => 400, "message" => $validationMessage ] ); } if (isset($request->question)) { $tag = Tag::find($request->tag); $faq = new FAQ(); $faq->faq_question = $request->question; $faq->faq_answer = $request->answer; $faq->faq_page = "null"; $faq->faq_type = $request->faq_type; $faq->is_active = '1'; $tag->FAQ()->save($faq); // $request->session()->flash('message', 'Faq added successfully'); return response(['status' => 200]); } else { // $request->session()->flash('message', 'Fields are missing'); return response(['status' => 204]); } } // fetch faq data for update with page list(pages links) public function edit_faq($id) { $faq_data = FAQ::where('id', $id)->first(); $page_list = Pages::where('is_active', 1)->get(); $tags = Tag::all(); // return $page_list; return view('Admin.Pages.manage_cms.manage_faq.edit_faq', ['faq_data' => $faq_data, 'page_list' => $page_list, 'tags' => $tags]); } // update faq data public function update_faq(Request $request) { // dd("hello"); $validator = Validator::make( $request->all(), [ "question" => [ 'required', function ($attribute, $value, $fail) { // check question is unique in that table // $question_exists = FAQ::where('id', 'NOT IN', request()->input('faq_id'))->get(); $question_exists = DB::select("select * from faq where id<>'" . request()->input('faq_id') . "' and faq_question='" . request()->input('question') . "' and tag_id='" . request()->input('tag_id') . "' "); if ($question_exists) { $fail('The ' . $attribute . ' must be unique.'); } } ], "answer" => 'required', 'tag_id' => 'required', "faq_type" => 'required', ], [ 'question.required' => 'Question is required', // 'question.unique' =>'Question should be unique', 'answer.required' => 'Answer is required', // 'page.required' =>'Page is required', 'required' => 'The :attribute field must be required', ] ); $validationMessage = validationErrorMessage($validator); if ($validationMessage) { return response()->json(["status" => 400, "message" => $validationMessage]); } $updateFaq = FAQ::where('id', $request->faq_id)->update([ 'tag_id' => $request->tag_id, 'faq_question' => $request->question, 'faq_answer' => $request->answer, 'faq_type' => $request->faq_type, ]); if ($updateFaq) { return response()->json(['status' => 200, 'message' => 'Faq Data Updated']); } return response()->json(['status' => 400, 'message' => 'Faq Data Could Not Be Updated']); } // delete faq data by id public function delete_faq(Request $request, $id) { $faq = FAQ::where('id', $id)->delete(); if ($faq) { // $request->session()->flash('message', 'Faq deleted successfully'); return response(['status' => 200, 'message' => 'Faq deleted successfully']); } else { // $request->session()->flash('message', 'Something went wrong! Try again'); return response(['status' => 204, 'message' => 'Something went wrong! Try again']); } } // faq status changing active/inactive on toggle public function update_status(Request $request) { $id = $request->id; $status = $request->status == 1 ? 0 : 1; $updateStatus = Faq::where('id', $id)->update([ 'is_active' => $status ]); if (!$updateStatus) { return response()->json(['status' => 400, 'message' => 'Error Changing Faq Status!']); } return response()->json(['status' => 200, 'message' => 'Status Changed!']); } public function faqList() { $faqList = FAQ::where('is_active', 1)->get(); if (!$faqList) { return response()->json(['status' => 400, 'message' => 'No FAQs'], 400); } return response()->json(['status' => 200, 'data' => $faqList], 200); } public function faqListForFrontend() { $tags = $this->tagWithFaqs()->getData(); // $tagName = Tag::has('faq')->orderBy('tag_name','ASC')->get(['id', 'tag_name']); $tagName = Tag::has('faq')->orderBy(\DB::raw('(id = 49) DESC, tag_name, id'))->get(['id', 'tag_name']); return view('Frontend.Pages.resources.faqs', ['tags' => $tags->data, 'tagName' => $tagName]); } // faq api public function tagWithFaqs() { try { return (new TagResourceCollection(Tag::has('faq')->orderBy(\DB::raw('(id = 49) DESC, tag_name, id'))->with('faq', function ($query) { $query->where('is_active', true) ->where('faq.faq_type', '1'); })->get())) ->response() ->setStatusCode(200); } catch (\Exception $e) { return response()->json(['message' => $e->getMessage()], 400); } } public function getAllTagsRelatedToFaq() { $tags = Tag::query() ->join('faq', 'tags.id', 'faq.tag_id') ->where('is_active',true) ->select('tags.id', 'tag_name') ->distinct('id','tag_name') ->get(); if ($tags) { return response()->json([ "status" => "success", "data" => $tags ]); } else { return response()->json([ "status" => "failed", ], 400); } } public function getAllFaqs(Request $request) { if ($request->method() == 'POST') { $tag_id = $request->tag_id; } $faqs = FAQ::query() ->when(request('tag_id'), function ($query) use ($tag_id) { $query->where('tag_id', $tag_id); }) ->where('is_active', true) ->select('id', 'faq_question', 'faq_answer') ->get(); if ($faqs) { return response()->json([ "status" => "success", 'tag' => $tag_id ? Tag::where('id',$tag_id)->value('tag_name') : 'No Tag', "data" => $faqs, ]); } else { return response()->json([ "status" => "failed", ], 400); } } }