%PDF- %PDF-
Direktori : /var/www/html/news/app/Http/Controllers/Api/ |
Current File : /var/www/html/news/app/Http/Controllers/Api/SubscriptionsController.php |
<?php namespace App\Http\Controllers\Api; use App\Http\Controllers\ApiController; use App\Http\Requests\Subscription\SubscriptionStoreRequest; use App\Http\Requests\Subscription\SubscriptionUpdateRequest; use App\Repositories\Base\Criteria\SearchCriteria; use App\Repositories\Subscription\SubscriptionRepository; use App\Transformers\SubscriptionTransformer; use Carbon\Carbon; use EllipseSynergie\ApiResponse\Contracts\Response; use Maatwebsite\Excel\Facades\Excel; class SubscriptionsController extends ApiController { /** * @var TagRepository */ private $subscriptionRepository; /** * UsersController constructor. * @param Response $response * @param SubscriptionRepository $subscriptionRepository */ public function __construct(Response $response, SubscriptionRepository $subscriptionRepository) { parent::__construct($response); $this->transformer = new SubscriptionTransformer; $this->subscriptionRepository = $subscriptionRepository; } /** * Display a listing of the resource. * * @return \Illuminate\Http\Response */ public function index() { return $this->response->withPaginator($this->subscriptionRepository->paginate(), $this->transformer); } /** * @param SubscriptionStoreRequest $request * @return mixed */ public function store(SubscriptionStoreRequest $request) { $subscription_data = $request->all(); $subscription_data['token'] = bcrypt(uniqid().Carbon::now()); $subscription = $this->subscriptionRepository->create($subscription_data); return $this->response->withItem($subscription, $this->transformer); } /** * @param SubscriptionUpdateRequest $request * @return mixed * @internal param $id */ public function unsubscribe(SubscriptionUpdateRequest $request) { $email = $request->input('email'); $token = $request->input('token'); $subscription = $this->subscriptionRepository->query()->where('email',$email)->where('token',$token)->first(); if(!empty($subscription)){ $subscription->is_active = false; $subscription->save(); return $this->response->withItem($subscription, $this->transformer); } else{ return $this->response->errorWrongArgs('Bad request for our server'); } } public function export() { $this->subscriptionRepository->pushCriteriaOnce(new SearchCriteria()); try { $file = Excel::create('Subscriptions', function($excel) { $excel->sheet('List', function($sheet) { $model = $this->subscriptionRepository->query()->select([ 'firstname', 'lastname', 'email' ])->get(); $sheet->fromModel($model); }); })->export('csv'); return response()->download($file, 'subscriptions.csv', ['Content-Type: text/csv']); } catch (\Exception $e) { return $this->response->errorWrongArgs($e->getMessage()); } } }