'array', ]; public static function status() { $list = [ 'approved' => __('messages.approved'), 'waiting' => __('messages.waiting'), 'declined' => __('messages.declined'), ]; return $list; } public static function createSubscription($user_id, $package_id, $paid_via, $payment_transaction_id, $status) { $package = Package::find($package_id); $subscription_info['user_id'] = $user_id; $subscription_info['package_id'] = $package->id; $subscription_info['package_details'] = [ 'name' => $package->name, 'description' => $package->description, 'no_of_active_forms' => $package->no_of_active_forms, 'is_form_downloadable' => $package->is_form_downloadable, 'price_interval' => $package->price_interval, 'interval' => $package->interval, ]; $subscription_info['package_price'] = $package->price; $subscription_info['paid_via'] = $paid_via; $subscription_info['payment_transaction_id'] = $payment_transaction_id; $subscription_info['status'] = $status; $start_date = self::subscriptionExpiredOn($user_id); $end_date = self::subscriptionExpiredOn($user_id); $subscription_info['start_date'] = $start_date->toDateTimeString(); if ($package->price_interval == 'days') { $subscription_info['end_date'] = $end_date->addDays($package->interval)->toDateTimeString(); } elseif ($package->price_interval == 'months') { $subscription_info['end_date'] = $end_date->addMonths($package->interval)->toDateTimeString(); } elseif ($package->price_interval == 'year') { $subscription_info['end_date'] = $end_date->addYears($package->interval)->toDateTimeString(); } $package_subscribed = self::create($subscription_info); return $package_subscribed; } public static function activeSubscription($user_id) { $today = Carbon::today()->toDateString(); $subscription = self::where('user_id', $user_id) ->where('start_date', '<=', $today) ->where('end_date', '>=', $today) ->where('status', 'approved') ->first(); return $subscription; } public static function upcomingSubscriptions($user_id) { $today = Carbon::today()->toDateString(); $subscriptions = self::where('user_id', $user_id) ->where('start_date', '>', $today) ->where('end_date', '>', $today) ->where('status', 'approved') ->get(); return $subscriptions; } public static function waitingSubscriptions($user_id) { $today = Carbon::today()->toDateString(); $subscriptions = self::where('user_id', $user_id) ->where('start_date', '>', $today) ->where('end_date', '>', $today) ->where('status', 'waiting') ->get(); return $subscriptions; } public static function subscriptionExpiredOn($user_id) { $today = Carbon::today(); $subscription = self::where('user_id', $user_id) ->where('status', 'approved') ->select(DB::raw('MAX(end_date) as end_date')) ->first(); if (empty($subscription->end_date) || Carbon::parse($subscription->end_date)->lessThanOrEqualTo($today)) { return $today; } else { return Carbon::parse($subscription->end_date)->addDay(); } } public static function disableAllPackagesForUser($user_id) { self::where('user_id', $user_id) ->where('end_date', '>', Carbon::today()->toDateString()) ->update(['end_date' => Carbon::yesterday()->toDateString()]); } }