Edit File: StorePlansController.php
<?php namespace App\Http\Controllers\Api; use App\Http\Controllers\Controller; use App\Http\Requests\Api\Plan\subscribePlanRequest; use App\Http\Requests\Api\Plan\AddADRequest; use App\Http\Resources\PaymentmethodResource; use App\Http\Resources\PlanResource; use App\Models\Ads; use App\Models\Paymentmethod; use App\Models\Plan; use App\Models\Subscription; use App\Traits\ApiTrait; use App\Traits\GeneralTrait; use App\Traits\Uploadable; class StorePlansController extends Controller { use Uploadable, GeneralTrait, ApiTrait; public function getPlans() { $plans = Plan::where('available', 'true')->orderBy('created_at' , 'desc')->get(); $data = PlanResource::collection($plans); return $this->dataReturn($data); } public function subscribePlan(subscribePlanRequest $request) { $user = auth('api')->user(); $plan = Plan::find($request['plan_id']); if (!$plan) { $msg = trans('order.not_available'); return $this->failMsg($msg); } if ($request['payment_type'] == 'wallet') { if ($user->wallet < $plan->price) { $msg = trans('order.walletHasNoEnouphCredit'); return $this->failMsg($msg); } $this->payPlanWithWallet($plan); } $subscribe = new Subscription(); $subscribe->user_id = $user->id; $subscribe->plan_id = $request['plan_id']; $subscribe->store_id = $user->store->id; $subscribe->payment_type = $request['payment_type']; $subscribe->price = $plan->price; $subscribe->expected_views = $plan->expected_views; $subscribe->payment_status = 'true'; $subscribe->save(); $msg = trans('user.plan_subscribe'); return $this->successMsg($msg); } public function planPaymentMethods() { $payment_methods = Paymentmethod::where('status', 'active')->where('key', '!=', 'cash')->get(); $data = []; $data['payment_methods'] = PaymentmethodResource::collection($payment_methods); return $this->dataReturn($data); } public function payPlanWithWallet($plan) { $user = auth('api')->user(); $user->wallet -= $plan->price; $user->save(); } public function addAds(AddADRequest $request){ $subscribe = Subscription::where('ads_id' , null)->where('user_id', auth('api')->user()->id)->where('store_id', auth('api')->user()->store?->id)->first(); if(!$subscribe || $subscribe->ad_id){ $msg = trans('order.not_available'); return $this->failMsg($msg); } $ads = Ads::create([ 'store_id' => auth('api')->user()->store->id, 'user_id' => auth('api')->user()->id, 'cover' => $request->cover, 'profit' => 20, ]); $subscribe->ads_id = $ads->id; $subscribe->save(); $msg = trans('order.successfully_sent'); return $this->successMsg($msg); } }
Back to File Manager