public function viewSubscriber(Request $request)
 {
     /*$sql = "SELECT
       users.name as name,s.id,s.name,s.stripe_id,s.quantity,users.name,users.email,sp.amount,sp.interval,sp.interval_count,sp.trial_period_days,
         GROUP_CONCAT(stores.name) AS `store_name`
       FROM users
           JOIN subscriptions as s on s.user_id=users.id
           JOIN stripe_plans as sp on sp.plan_id=s.stripe_plan
          JOIN stores
           ON users.id = stores.user_id
           WHERE stores.status = 'APPROVED'
       GROUP BY stores.user_id";*/
     $sort = 'name';
     $order = 'ASC';
     $loadView = 'super-admin.stripe.view-subscriber';
     if ($request->ajax()) {
         $sort = Input::get('sort');
         $order = Input::get('order') == 'DESC' ? "ASC" : "DESC";
         $loadView = 'super-admin.includes.subscriber-dom';
     }
     switch ($sort) {
         case 'name':
             $sort = 'users.name';
             break;
         case 'plan':
             $sort = 'stripe_plans.name';
             break;
         case 'email':
             $sort = 'users.email';
             break;
         default:
             $sort = 'users.name';
             break;
     }
     $subscribers = DB::table('subscriptions')->join('users', 'users.id', '=', 'subscriptions.user_id')->join('stripe_plans', 'stripe_plans.plan_id', '=', 'subscriptions.stripe_plan')->join('stores', 'stores.user_id', '=', 'users.id')->select('subscriptions.id', 'subscriptions.name as plan_name', 'subscriptions.stripe_id', 'subscriptions.quantity', 'users.name as subscriber_name', 'users.email', 'users.phone_number as contact', 'users.address', 'stripe_plans.amount', 'stripe_plans.interval', 'stripe_plans.interval_count', 'stripe_plans.coupon_id', 'stripe_plans.trial_period_days as trial', DB::raw('GROUP_CONCAT(stores.name,"#",stores.status) AS store_name'))->groupBy('stores.user_id')->orderBy($sort, $order)->get();
     $coupon_all = StripeCoupon::all();
     $subscriber_collect = [];
     foreach ($subscribers as $subscriber) {
         if ($subscriber->interval_count > 1) {
             $subscriber->interval = "Every " . $subscriber->interval_count . " " . $subscriber->interval . "s";
         }
         $store_name = $subscriber->store_name;
         $data_process = [];
         if ($store_name != null) {
             $store_name = explode(',', $store_name);
             foreach ($store_name as $name) {
                 if ($name != null) {
                     $name = explode('#', $name);
                     $data_process[] = $name;
                 }
             }
         }
         $subscriber->store_name = collect($data_process);
         $coupon_information = [];
         if ($subscriber->coupon_id != null) {
             foreach ($coupon_all as $coupon_single) {
                 if ($subscriber->coupon_id == $coupon_single->coupon_id) {
                     $coupon_information['coupon_name'] = $coupon_single->coupon_name;
                     $coupon_information['coupon_id'] = $coupon_single->coupon_id;
                     if ($coupon_single->percent_off != null) {
                         $coupon_information['discount'] = $coupon_single->percent_off . "%";
                         $coupon_information['discount_price'] = $subscriber->amount - $subscriber->amount * $coupon_single->percent_off / 100;
                     } else {
                         $coupon_information['discount'] = $coupon_single->amount_off / 100 . "/" . $coupon_single->currency;
                         $coupon_information['discount_price'] = $subscriber->amount - $coupon_single->amount_off / 100;
                     }
                     $coupon_information['currency'] = $coupon_single->currency;
                     $coupon_information['duration'] = $coupon_single->duration;
                     if ($coupon_single->duration == 'repeating') {
                         $coupon_information['duration'] = $coupon_single->duration_in_months . " Months";
                     }
                     $coupon_information['max_redemptions'] = $coupon_single->max_redemptions;
                     $coupon_redeem = Carbon::parse($coupon_single->redeem_by);
                     $coupon_information['redeem_by'] = $coupon_redeem->toFormattedDateString();
                 }
             }
         }
         $subscriber->coupon = $coupon_information;
     }
     $email_user = DB::select('SELECT t2.name,t2.email,t1.ends_at FROM `subscriptions` as t1 inner join users as t2 on t1.`user_id`=t2.id WHERE `ends_at` BETWEEN NOW() AND DATE_ADD(NOW(), INTERVAL 1 DAY)');
     /*dd($subscribers);*/
     $sln = 1;
     $user = Auth::user();
     $sort = Input::get('sort');
     return response()->view($loadView, compact('subscribers', 'email_user', 'sln', 'order', 'sort', 'user'))->header('Content-Type', 'html');
     //return view('super-admin.stripe.view-subscriber',compact('subscribers','sln'))->with('user', Auth::user());
 }
 public function redirectToVendorPlan()
 {
     if (Auth::guest()) {
         flash()->error('Your session is timed out. Please login and confirm again.');
         return Auth::guest('/login');
     }
     /*
      * View Plan for subscription
      * Using laravel cashier for plan retrieval
      * Method call from Route::get('/dashboard/vendor/plan', [ 'uses' => 'UserController@redirectToVendorPlan', 'as' => 'vendor.plan' ]);
      * */
     //$plan = StripePlan::where('active','=','1')->get();
     //$subscribed_plan =Subscription::where('user_id', Auth::user()->id)->get()->first()->name;
     $allplan = StripePlan::with('planFeature')->where('active', '=', '1')->get();
     //dd($allplan);
     $coupon_all = StripeCoupon::all();
     $plan_collect = [];
     foreach ($allplan as $plan) {
         if ($plan->interval_count > 1) {
             $plan->interval = "Every " . $plan->interval_count . " " . $plan->interval . "s";
         }
         $coupon_information = [];
         if ($plan->coupon_id != null) {
             foreach ($coupon_all as $coupon_single) {
                 if ($plan->coupon_id == $coupon_single->coupon_id) {
                     $coupon_information['coupon_name'] = $coupon_single->coupon_name;
                     $coupon_information['coupon_id'] = $coupon_single->coupon_id;
                     if ($coupon_single->percent_off != null) {
                         $coupon_information['discount'] = $coupon_single->percent_off . "%";
                         $coupon_information['discount_price'] = $plan->amount - $plan->amount * $coupon_single->percent_off / 100;
                     } else {
                         $coupon_information['discount'] = $coupon_single->amount_off / 100 . "/" . $coupon_single->currency;
                         $coupon_information['discount_price'] = $plan->amount - $coupon_single->amount_off / 100;
                     }
                     $coupon_information['currency'] = $coupon_single->currency;
                     $coupon_information['duration'] = $coupon_single->duration;
                     if ($coupon_single->duration == 'repeating') {
                         $coupon_information['duration'] = $coupon_single->duration_in_months . " Months";
                     }
                     $coupon_information['max_redemptions'] = $coupon_single->max_redemptions;
                     $coupon_redeem = Carbon::parse($coupon_single->redeem_by);
                     $coupon_information['redeem_by'] = $coupon_redeem->toFormattedDateString();
                 }
             }
         }
         $plan->coupon = $coupon_information;
         $plan_collect[] = $plan;
     }
     $allplan = collect($plan_collect);
     $user = Auth::user();
     $user_subscriptions = User::with('subscriptions')->whereId($user->id)->first();
     return view('plan', compact('allplan'))->with('user', $user_subscriptions)->with('authenticated', Auth::check());
 }