diff --git a/app/Http/Controllers/API/NewsLetterAPIController.php b/app/Http/Controllers/API/NewsLetterAPIController.php new file mode 100644 index 0000000..897fd97 --- /dev/null +++ b/app/Http/Controllers/API/NewsLetterAPIController.php @@ -0,0 +1,29 @@ +validate([ + "email" => "required|email|unique:news_letters" + ], ["email.unique" => "You are already subscribed to our newsletter!"])); + + return response()->json([ + "status" => "success", + "message" => "You have successfully subscribed to our newsletter!" + ]); + } +} diff --git a/app/Http/Controllers/API/TopicsAPIController.php b/app/Http/Controllers/API/TopicsAPIController.php index df973ac..b722d42 100644 --- a/app/Http/Controllers/API/TopicsAPIController.php +++ b/app/Http/Controllers/API/TopicsAPIController.php @@ -29,9 +29,9 @@ class TopicsAPIController extends Controller */ public function show(Topic $topic) { - return [ + return response()->json([ 'topic' => new TopicResource($topic), 'articles' => $topic->articles()->with('source')->latest('published_date')->paginate(8) - ]; + ]); } } diff --git a/app/NewsLetter.php b/app/NewsLetter.php new file mode 100644 index 0000000..487fcf5 --- /dev/null +++ b/app/NewsLetter.php @@ -0,0 +1,10 @@ +id(); + $table->string('email'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('news_letters'); + } +} diff --git a/resources/js/components/NewsLetter.vue b/resources/js/components/NewsLetter.vue new file mode 100644 index 0000000..d7a9616 --- /dev/null +++ b/resources/js/components/NewsLetter.vue @@ -0,0 +1,59 @@ + + + diff --git a/resources/views/partials/footer.blade.php b/resources/views/partials/footer.blade.php index 546fceb..1d9ceab 100644 --- a/resources/views/partials/footer.blade.php +++ b/resources/views/partials/footer.blade.php @@ -12,18 +12,7 @@ -
-
-
- - -
-
-
+
diff --git a/routes/api.php b/routes/api.php index 2e311a5..beeb7ae 100644 --- a/routes/api.php +++ b/routes/api.php @@ -6,6 +6,7 @@ use App\Http\Controllers\API\ArticlesAPIController; use App\Http\Controllers\API\SourcesAPIController; use App\Http\Controllers\API\TopicsAPIController; use App\Http\Controllers\API\MyListAPIController; +use App\Http\Controllers\API\NewsLetterAPIController; /* |-------------------------------------------------------------------------- @@ -29,3 +30,5 @@ Route::get('source/{source:slug}',[SourcesAPIController::class, 'show'])->name(' Route::get('article/{article:id}', [ArticlesAPIController::class, 'show'])->name('api.article.show'); +Route::post('newsletter/subscribe', [NewsLetterAPIController::class, 'store'])->name('api.newsletter.store'); +