/home/thegtkjw/cresviafinancial.com/project__549d4a8/app/Repositories/SubscriptionRepository.php
<?php
namespace App\Repositories;
use App\Classes\GeniusMailer;
use App\Models\BankPlan;
use App\Models\Currency;
use App\Models\Generalsetting;
use App\Models\Transaction;
use App\Models\User;
use App\Models\UserSubscription;
use Carbon\Carbon;
class SubscriptionRepository
{
public $gs;
public function __construct()
{
$this->gs = Generalsetting::findOrFail(1);
}
public function order($request, $status, $addionalData)
{
$subscription = new UserSubscription();
if ($request['currency_id']) {
$currencyValue = Currency::where('id', $request['currency_id'])->first();
}
if ($request['currency_id']) {
$subscription->price = $request['price'] / $currencyValue->value;
}
if (isset($addionalData['subscription_number'])) {
$subscription->subscription_number = $addionalData['subscription_number'];
}
$subscription->user_id = $request['user_id'];
$subscription->bank_plan_id = $request['bank_plan_id'];
$subscription->currency_id = $request['currency_id'];
$subscription->method = $request['method'];
$subscription->days = $request['days'];
if (isset($addionalData['status'])) {
$subscription->status = "completed";
} else {
if ($status == 'complete') {
$subscription->status = "completed";
} else {
$subscription->status = "pending";
}
}
if (isset($addionalData['txnid'])) {
$subscription->txnid = $addionalData['txnid'];
}
$subscription->save();
if ($status == 'complete') {
$this->callAfterOrder($subscription);
}
}
public function OrderFromSession($request, $status, $addionalData)
{
$input = $request->all();
$plan = BankPlan::findOrFail($input['bank_plan_id']);
$subscription = new UserSubscription();
if ($input['currency_id']) {
$currencyValue = Currency::where('id', $input['currency_id'])->first();
}
if ($input['currency_id']) {
$subscription->price = $plan->amount;
} else {
$subscription->price = $plan->amount;
}
if (isset($addionalData['subscription_number'])) {
$subscription->subscription_number = $addionalData['subscription_number'];
}
$subscription->user_id = $input['user_id'];
$subscription->bank_plan_id = $input['bank_plan_id'];
$subscription->currency_id = $input['currency_id'];
$subscription->method = $input['method'];
$subscription->days = $plan->days;
if (isset($addionalData['txnid'])) {
$subscription->txnid = $addionalData['txnid'];
}
$subscription->status = "completed";
$subscription->save();
if ($status == 'completed') {
$this->callAfterOrder($subscription);
}
}
public function callAfterOrder($subscription)
{
$this->UserPlanUpdate($subscription);
$this->createTransaction($subscription);
}
public function UserPlanUpdate($subscription)
{
$user = User::findorFail($subscription->user_id);
if ($user) {
$user->bank_plan_id = $subscription->bank_plan_id;
$user->plan_end_date = Carbon::parse($user->plan_end_date)->addDays($subscription->days);
$user->update();
}
}
public function createTransaction($subscription)
{
$user = User::findOrFail($subscription->user_id);
$trans = new Transaction();
$trans->email = $user->email;
$trans->amount = $subscription->price;
$trans->type = "Subscription";
$trans->profit = "minus";
$trans->txnid = $subscription->subscription_number;
$trans->user_id = $user->id;
$trans->save();
}
public function sendMail($subscription)
{
if ($this->gs->is_smtp == 1) {
$data = [
'to' => $subscription->user->email,
'type' => "Invest",
'cname' => $subscription->user->name,
'oamount' => $subscription->order_number,
'aname' => "",
'aemail' => "",
'wtitle' => "",
];
$mailer = new GeniusMailer();
$mailer->sendAutoMail($data);
} else {
$to = $subscription->user->email;
$subject = " You Purchase Plan Successfully.";
$msg = "Hello " . $subscription->user->nam . "!\nYou Purchase Plan Successfully.\nThank you.";
$headers = "From: " . $this->gs->from_name . "<" . $this->gs->from_email . ">";
mail($to, $subject, $msg, $headers);
}
}
}