ajax()) { $model = Newsletter::query()->latest(); return DataTables::eloquent($model) ->addIndexColumn() ->setRowClass('tableRow') ->editColumn('name', function (Newsletter $newsletter){ return $newsletter->name ?? '-'; }) ->editColumn('email', function (Newsletter $newsletter){ return $newsletter->email ?? '-'; }) ->addColumn('action', 'ccms::newsletter.datatable.action') ->rawColumns(['action']) ->toJson(); } return view('ccms::newsletter.index', [ 'title' => 'Newsletter List', ]); } /** * Show the form for creating a new resource. */ public function create() { // } /** * Store a newly created resource in storage. */ public function store(Request $request) { try { $rules = [ 'email' => 'required|email', 'name' => 'required|string' ]; if (setting('enable_reCaptcha') == 1) { $rules['g-recaptcha-response'] = ['required', new Recaptcha]; } $messages = [ 'email.email' => 'Must be a valid email address.', // 'mobile.numeric' => 'Must be a valid phone number.', // 'mobile.digits' => 'Must be a valid phone number.', // 'g-recaptcha-response.required' => 'Please complete reCAPTCHA validation.', // 'g-recaptcha-response' => 'Invalid reCAPTCHA.', ]; $validator = Validator::make($request->all(), $rules, $messages); if ($validator->fails()) { return response()->json(['errors' => $validator->errors()], 422); } Newsletter::create($validator->validated()); return response()->json(['status' => 200, 'message' => "Thank you for subscribing."], 200); } catch (\Exception $e) { return response()->json(['status' => 500, 'message' => 'Internal server error', 'error' => $e->getMessage()], 500); } } /** * Show the specified resource. */ public function show($id) { // } /** * Show the form for editing the specified resource. */ public function edit($id) { // } /** * Update the specified resource in storage. */ public function update(Request $request, $id) { // } /** * Remove the specified resource from storage. */ public function destroy($id) { try { $newsletter = Newsletter::whereId($id)->first(); if ($newsletter) { $newsletter->delete(); } return response()->json(['status' => 200, 'message' => 'Newsletter has been deleted!'],200); } catch (\Throwable $th) { return redirect()->back()->with('error', $th->getMessage()); } } // public function markAsRead($id) // { // try { // $newsletter = Newsletter::whereId($id)->first(); // if ($newsletter) { // $newsletter->update(['is_read' => 1]); // } // return response()->json(['status' => 200, 'message' => 'Newsletter has been marked as read!'], 200); // } catch (\Throwable $th) { // return redirect()->back()->with('error', $th->getMessage()); // } // } }