%PDF- %PDF-
Direktori : /var/www/html/geotechnics/api/app/Http/Controllers/Api/v1/ |
Current File : /var/www/html/geotechnics/api/app/Http/Controllers/Api/v1/SubscriptionsController.php |
<?php namespace App\Http\Controllers\Api\v1; use App\Exports\SubscriptionsExport; use App\Http\Controllers\Api\ApiController; use App\Http\Requests\Api\v1\NewsLetter\SubscriptionRequest; use App\Models\Subscription; use App\Transformers\SubscriptionTransformer; use Illuminate\Http\Request; use Illuminate\Pagination\LengthAwarePaginator; class SubscriptionsController extends ApiController { public function index(Request $request) { /** @var LengthAwarePaginator $result */ $result = Subscription::query() ->where('is_subscribed', true); if ($search = $request->get('search')) { $result = $result->where('email', 'like', "%$search%"); } $result = $result->paginate($request->get('perPage')); return $this->withPaginated($result, new SubscriptionTransformer()); } public function subscribe(SubscriptionRequest $request) { /** @var Subscription $subscription */ $subscription = Subscription::query() ->updateOrCreate([ 'email' => $request->get('email'), ], [ 'email' => $request->get('email'), 'is_subscribed' => true, ]); return $this->item($subscription, new SubscriptionTransformer()); } public function unsubscribe(SubscriptionRequest $request) { /** @var Subscription $subscription */ $subscription = Subscription::query() ->updateOrCreate([ 'email' => $request->get('email'), ], [ 'email' => $request->get('email'), 'is_subscribed' => false, ]); return $this->item($subscription, new SubscriptionTransformer()); } public function exportExcel(Request $request) { $result = Subscription::query() ->where('is_subscribed', true); if ($search = $request->get('search')) { $result = $result->where('email', 'like', "%$search%"); } return (new SubscriptionsExport($result))->download('newsletter.xlsx'); } }