customerRepository = $customerRepository; } public function getAll() { return $this->customerRepository->getAll(); } public function membersDropdown() { return $this->customerRepository->membersDropdown(); } public function find($id) { return $this->customerRepository->find($id); } public function store($data){ return $this->customerRepository->store($data); } public function update($data, $id){ return $this->customerRepository->update($data, $id); } public function contact($data, $id){ return $this->customerRepository->contact($data, $id); } public function destroy($id){ return $this->customerRepository->destroy($id); } public function BulkUploadStore($data){ return $this->customerRepository->BulkUploadStore($data); } public function subscriptions($id){ $subscriptions_data = []; $subscriptions = CustomerSubscription::with('planPrice','discount.coupon')->where('customer_id', $id)->latest()->get(); foreach ($subscriptions as $subscription) { $payment_details = ''; if ($subscription->planPrice->billing_type == 'Recurring') { $price = $subscription->planPrice->price; $price_monthly = $subscription->planPrice->price / $subscription->planPrice->custom_interval; if ($subscription->planPrice->interval == 'Custom') { if($subscription->payment_mode == 'Monthly'){ $payment_details .= "\$".number_format($price_monthly,2)." / monthly for {$subscription->planPrice->custom_interval} Months"; } else { $payment_details .= "\$".number_format($price,2)." for {$subscription->planPrice->custom_interval} {$subscription->planPrice->custom_interval_type}"; } } else { $payment_details .= "\${$subscription->planPrice->price} {$subscription->planPrice->interval}"; } if($subscription->discount != null){ $duration = $subscription->discount->coupon->duration; $coupon_payment_mode = $subscription->discount->coupon->payment_mode; $discount = $subscription->discount->coupon->discount; if ($subscription->discount->coupon->type == 'Amount') { $discount_label = "Save \${$discount}"; $discounted_price_monthly = $price_monthly - $discount; $discounted_price_all = $price - $discount; } else { $discount_label = "Save \${$discount}%"; $discounted_price_monthly = $price_monthly - (($discount / 100) * $price_monthly); $discounted_price_all = $subscription->discount->coupon->duration == 'Once' ? $price - (($discount / 100) * $price_monthly) : $price - (($discount / 100) * $price); } $payment_details .= "
{$subscription->discount->coupon->code}"; if ($subscription->payment_mode == 'Monthly' && $coupon_payment_mode == 'Monthly' ) { $payment_details .= $duration == 'Once' ? " - \${$discounted_price_monthly} 1st month only)" : " | \${$discounted_price_monthly} per month"; } if($subscription->payment_mode == 'All' && $coupon_payment_mode == 'All' ) { $payment_details .= " - \${$discounted_price_all} for {$subscription->planPrice->custom_interval} Months "; } } } else if ($subscription->planPrice->billing_type == 'One-Time') { if($subscription->payment_status == 'uncaptured'){ $payment_details .= 'Expires on '. Carbon::parse($subscription->created_at)->addDays(7)->format('M d, Y').' if not yet authorize / captured'; } else { if($subscription->planPrice->access_expire_duration_type == 'Days'){ $payment_details .= "\${$subscription->planPrice->price} {$subscription->planPrice->billing_type} {$subscription->planPrice->access} access, will expire on ".Carbon::parse($subscription->created_at)->addDays($subscription->planPrice->access_expire_duration)->format('M d, Y'); } else if($subscription->planPrice->access_expire_duration_type == 'Weeks'){ $payment_details .= "\${$subscription->planPrice->price} {$subscription->planPrice->billing_type} {$subscription->planPrice->access} access, will expire on ".Carbon::parse($subscription->created_at)->addWeeks($subscription->planPrice->access_expire_duration)->format('M d, Y'); } else if($subscription->planPrice->access_expire_duration_type == 'Months'){ $payment_details .= "\${$subscription->planPrice->price} {$subscription->planPrice->billing_type} {$subscription->planPrice->access} access, will expire on ".Carbon::parse($subscription->created_at)->addMonths($subscription->planPrice->access_expire_duration)->format('M d, Y'); } else if($subscription->planPrice->access_expire_duration_type == 'Years'){ $payment_details .= "\${$subscription->planPrice->price} {$subscription->planPrice->billing_type} {$subscription->planPrice->access} access, will expire on ".Carbon::parse($subscription->created_at)->addYears($subscription->planPrice->access_expire_duration)->format('M d, Y'); } } } $data = [ 'id' => $subscription->id, 'plan' => [ 'title' => $subscription->planPrice->plan->title, 'image' => $subscription->planPrice->plan->image_url, 'price' => $subscription->planPrice->price, 'billing_type' => $subscription->planPrice->billing_type, 'interval' => $subscription->planPrice->interval, 'custom_interval' => $subscription->planPrice->custom_interval, 'custom_interval_type' => $subscription->planPrice->custom_interval_type, ], 'payment_details' => $payment_details, 'status' => $subscription->status == 'trialing' ? 'Waiting for approval' : $subscription->status, 'approved' => $subscription->approved, 'payment_method' => $subscription->payment_method, 'payment_mode' => $subscription->payment_mode, 'payment_status' => $subscription->payment_status, 'expired_at' => Carbon::parse($subscription->created_at)->addMonths($subscription->planPrice->custom_interval)->format('j M Y, g:i a'), 'created_at' => Carbon::parse($subscription->created_at)->format('j M Y, g:i a'), ]; if($subscription->discount != null){ $data['discount'] = [ 'code' => $subscription->discount->coupon->code, 'type' => $subscription->discount->coupon->type, 'discount' => $subscription->discount->coupon->discount, 'duration' => $subscription->discount->coupon->duration, ]; } array_push($subscriptions_data, $data); } return collect($subscriptions_data); } public function credits($id){ $user = User::find($id); if($user){ UserCredit::firstOrCreate(['user_id' => $user->id]); $usage = []; $categories = \Modules\WTIJobBoard\Entities\JobRequestCategory::where('active',1)->get(); foreach ($categories as $key => $category) { $query = \Modules\WTIJobBoard\Entities\JobRequest::query()->where('client_id',$user->id)->where('type',$category->id)->where('status','publish')->where('is_rejected',false)->whereNull('deleted_at'); $usage[$category->name] = [ 'subscription' => (int)$query->where('credit_type','subscription')->sum('credits'), 'alacarte' => (int)$query->where('credit_type','alacarte')->sum('credits') ]; } $total_used_subscription_credits = \Modules\WTIJobBoard\Entities\JobRequest::whereHas('category', function($query){ $query->where('active',1); })->where('client_id',$user->id)->where('status','publish')->where('is_rejected',false)->whereNull('deleted_at')->where('credit_type','subscription')->sum('credits'); $total_used_alacarte_credits = \Modules\WTIJobBoard\Entities\JobRequest::whereHas('category', function($query){ $query->where('active',1); })->where('client_id',$user->id)->where('status','publish')->where('is_rejected',false)->whereNull('deleted_at')->where('credit_type','alacarte')->sum('credits'); $total_subscription_credits = $user->creditPoints->subscription_credits; $total_alacarte_credits = $user->creditPoints->alacarte_credits; return collect([ 'total_credits' => [ 'subscription' => (int)$total_subscription_credits, 'alacarte' => (int)$total_alacarte_credits, ], 'total_used_credits' => [ 'subscription' => (int)$total_used_subscription_credits, 'alacarte' => (int)$total_used_alacarte_credits, ], 'total_available_credits' => [ 'subscription' => (int)$total_subscription_credits - $total_used_subscription_credits, 'alacarte' => (int)$total_alacarte_credits - $total_used_alacarte_credits, ], 'usage' => $usage, ]); } else { return false; } } public function credits_history($id){ return UserCreditHistory::with(['user'])->where('user_id',$id)->latest()->get(); } public function jobs($id){ return JobRequest::with(['category', 'video', 'product', 'tracks.status', 'tracks.metas', 'shipment'])->latest('id')->where('client_id', $id)->whereNull('deleted_at')->get(); } public function orders($id){ return AlacarteOrder::with(['user','items.product'])->where('user_id',$id)->latest()->get(); } public function referrals($id){ return User::with('subscriptions')->where('referrer_id',$id)->latest('id')->get(); } }