Current File : //home/tradevaly/www/app/Http/Controllers/User/SubscriptionController.php |
<?php
namespace App\Http\Controllers\User;
use App\Http\Controllers\Controller;
use App\Models\Subscriber;
use App\Models\Package;
use App\Models\Transaction;
use Brian2694\Toastr\Facades\Toastr;
use Carbon\Carbon;
use DB;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use shurjopayv2\ShurjopayLaravelPackage8\Http\Controllers\ShurjopayController;
use App\Notifications\User\Subscription\RenewSubscription;
use Illuminate\Support\Facades\Notification;
use App\Notifications\User\Subscription\SubscriptionInvoice;
use App\Models\Country;
class SubscriptionController extends Controller
{
public function renew()
{
$user = Auth::user();
if(empty($user->company->phone)){
Toastr::error('Error!', 'You Have To Provide Your Number go to Company Setting and update!');
return back();
}
$package = Package::find($user->package_id);
$subscriber = new Subscriber();
$currency = 'bdt';
$total_amount = $package->price;
$discount_price = 0;
$main_price_usd = 0;
$disc_percent = $package->discount;
if ($package->discount) {
$discount_price = $package->price / 100 * $package->discount;
$total_amount = $package->price - $discount_price;
}
$randomNumber = rand(100000, 999999);
$randomText = substr(str_shuffle("abcdefghijklmnopqrstuvwxyz"), 0, 7);
$order_id = $randomText.$randomNumber;
$subscriber->package_id = $package->id;
$subscriber->order_id = $order_id;
$subscriber->user_id = $user->id;
$subscriber->date = Carbon::now();
$subscriber->amount = $total_amount;
$subscriber->payment_status = 'unpaid';
$subscriber->currency = $currency;
$subscriber->status = 'pending';
// new transaction
$transaction = new Transaction();
$transaction->order_id = $order_id;
$transaction->discount_amount = $discount_price;
$transaction->total_amount = $total_amount;
$transaction->user_id = $user->id;
$transaction->payment_type = 'online';
$transaction->order_from = 'subscription';
$transaction->order_status = 'renew';
if ($transaction->save()) {
$info = array(
'currency' => 'bdt',
'order_for' => 'renew_subscription',
'amount' => $total_amount,
'order_id' => $order_id,
'discsount_amount' => $discount_price,
'disc_percent' => 0,
'client_ip' => "N/L",
'customer_name' => $user->name,
'customer_phone' => $user->company->phone,
'email' => Auth::user()->email,
'customer_address' => ($user->address? $user->address:'N\L'),
'customer_city' => "N/L",
'customer_state' => "N/L",
'customer_postcode' => "N/L",
'customer_country' => $user->country->name
);
$invoiceData = (object) [
'id' => $subscriber->id,
'name' => $user->name,
'amount' => $total_amount,
'payment' => 'pending',
'discount' => $discount_price,
'transaction_id' => $transaction->id,
'package' => $package->name,
'start' => Carbon::now(),
'end' => Carbon::now()->addYear(),
];
$subscriber->save();
$transaction->save();
Notification::send($user, new RenewSubscription($invoiceData));
Notification::route('mail', 'tradevalyb2b@gmail.com')->notify(new RenewSubscription($invoiceData));
$shurjopay_service = new ShurjopayController();return $shurjopay_service->checkout($info);
}
}
public function subs()
{
$package = Package::find(Auth::user()->package_id);
return view('user.pages.subs', compact("package"));
}
public function changeplan()
{
$packages = Package::where('status', 1)->get();
return view('user.pages.changeplan', compact("packages"));
}
public function choose($id, Request $request)
{
$package = Package::findOrFail($id);
$user = Auth::user();
if(empty($user->company->phone)){
Toastr::error('Error!', 'You Have To Provide Your Number go to Company Setting and update!');
return back();
}
$subscriber = Subscriber::where('user_id',$user->id)->first();
$order_id = rand(100000, 999999);
$main_price = $package->price;
$discount_price = 0;
$disc_percent = $package->discount;
if ($package->discount) {
$discount_price = $package->price / 100 * $package->discount;
$main_price = $package->price - $discount_price;
}
if(!$subscriber){
$subscriber = new Subscriber();
$subscriber->order_id = $order_id;
$subscriber->user_id = $user->id;
$subscriber->package_id = $id;
$subscriber->date = Carbon::now();
$subscriber->amount = $main_price;
$subscriber->payment_status = 'unpaid';
$subscriber->currency = 'bdt';
$subscriber->status = 'pending';
$subscriber->save();
}
// new transaction
$transaction = new Transaction();
$transaction->order_id = $order_id;
$transaction->discount_amount = $discount_price;
$transaction->total_amount = $main_price;
$transaction->user_id = $user->id;
$transaction->payment_type = 'online';
$transaction->order_from = 'subscription';
$transaction->order_status = 'new';
$transaction->save();
$order_id = 'tv-'.rand(1000, 9999).$transaction->id;
$subscriber->order_id = $order_id;
$subscriber->save();
$transaction->order_id = $order_id;
$transaction->save();
$info = array(
'currency' => 'BDT',
'amount' => 1,
// 'amount' => intval($main_price),
'order_id' => $order_id,
'discsount_amount' => $discount_price,
'disc_percent' => 0,
'client_ip' => "N/L",
'customer_name' => $user->name,
'customer_phone' => $user->company->phone,
'email' => $user->email,
'customer_address' => ($user->address? $user->address:'N\L'),
'customer_city' => "N/L",
'customer_state' => "N/L",
'customer_postcode' => "N/L",
'customer_country' => $user->country->name
);
$invoiceData = (object) [
'id' => $subscriber->id,
'name' => $user->name,
'amount' => $main_price,
'payment' => 'pending',
'discount' => $discount_price,
'transaction_id' => $transaction->id,
'package' => $package->name,
'start' => Carbon::now(),
'end' => Carbon::now()->addYear(),
];
Notification::send($user, new SubscriptionInvoice($invoiceData));
Notification::route('mail', 'tradevalyb2b@gmail.com')->notify(new SubscriptionInvoice($invoiceData));
$shurjopay_service = new ShurjopayController();
return $shurjopay_service->checkout($info);
}
public function subscriptionInvoice()
{
$invoice = Subscriber::where('user_id',Auth::user()->id)->first();
return view('user.subscription_invoice.invoice', compact('invoice'));
}
public function subscriptionMoneyReceipt()
{
$money_receipt = Subscriber::where('user_id',Auth::user()->id)->first();
return view('user.subscription_invoice.money_receipt', compact('money_receipt'));
}
}