321 lines
16 KiB
PHP
321 lines
16 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\Customer;
|
|
|
|
use App\DB\Te\TableEngine;
|
|
use App\Http\Controllers\Admin\CustomerController as adm_cu;
|
|
use App\Http\Controllers\Controller;
|
|
use App\Models\Address;
|
|
use App\Models\Customer;
|
|
use App\Models\User;
|
|
use App\Models\TransactionsAdmin;
|
|
use App\Models\Withdraw;
|
|
use Illuminate\Http\Request;
|
|
use Rooyesh\Wallet\interfaces\TransactionInterface;
|
|
use Rooyesh\Wallet\interfaces\WalletInterface;
|
|
use Rooyesh\Wallet\models\Wallet;
|
|
use Rooyesh\Wallet\models\Transaction;
|
|
use Illuminate\Support\Facades\Storage;
|
|
use Illuminate\Support\Facades\Http;
|
|
use App\Models\Setting;
|
|
use App\Http\Controllers\Admin\TahesabController;
|
|
|
|
|
|
//use App\Models\Price;
|
|
//use Carbon\Carbon;
|
|
//use Illuminate\Support\Facades\Http;
|
|
|
|
class CustomerController extends Controller
|
|
{
|
|
public function me()
|
|
{
|
|
$select = ['*',Customer::$SELECT_CAJ,Customer::$SELECT_TYPE_STR];
|
|
$user = Customer::with(['customer_settings.customer',"agent"])->select($select)->findOrFail(auth('customer')->id());
|
|
|
|
$wallet = Wallet::where('owner', $user->id)
|
|
->where('owner_type', $user->type)
|
|
->whereNull('fund_id')
|
|
->first() ?? new Wallet();
|
|
$wallet->gold_ab = round(Wallet::where('owner', $user->id)->where('product_id', null)->sum('gold'), 2);
|
|
$wallet->wp = Wallet::with('product')->where('owner', $user->id)->get();
|
|
foreach ($wallet->wp as $row){
|
|
if ($row->product_id != null){
|
|
$wallet->treasure +=$row->product->amount*$row->gold;
|
|
}
|
|
$wallet->treasure_sum =$user->gold+$wallet->treasure;
|
|
}
|
|
$wallet->gold_sum = $wallet->treasure_sum+$wallet->gold_ab;
|
|
|
|
$user->wallets = Wallet::with(['product'])->where('owner', $user->id)->get() ?? new Wallet();
|
|
|
|
$count_gold =0;
|
|
$count_silver = 0; // وزن نقره
|
|
$count_copper = 0; // وزن مس
|
|
$count_cash_from_gold = 0; // مبلغ حاصل از طلا
|
|
$count_cash_from_silver = 0; // مبلغ حاصل از نقره
|
|
$count_cash_from_copper = 0; // مبلغ حاصل از مس
|
|
$count_cash_pure = 0; // نقدینگی خالص بدون ارزش محصولات
|
|
|
|
$count_product =0;
|
|
foreach ($user->wallets as $walletSingle) {
|
|
if ($walletSingle->product_id) {
|
|
|
|
// محاسبه برای طلا (metal_id = 1)
|
|
if ($walletSingle->product->metal_id == 1) {
|
|
|
|
if (!($walletSingle->product->group_type == "سکه")){
|
|
(float)$count_gold += $walletSingle->product->amount*$walletSingle->gold;
|
|
}
|
|
$count_cash_from_gold += $walletSingle->product->price * $walletSingle->gold;
|
|
$count_product += $walletSingle->gold;
|
|
}
|
|
// محاسبه برای نقره (metal_id = 2)
|
|
elseif ($walletSingle->product->metal_id == 2) {
|
|
if (!($walletSingle->product->group_type == "سکه")){
|
|
(float)$count_silver += $walletSingle->product->amount * $walletSingle->gold;
|
|
}
|
|
$count_cash_from_silver += ($walletSingle->product->price * $walletSingle->product->amount) * $walletSingle->gold;
|
|
$count_product += $walletSingle->gold;
|
|
}
|
|
// محاسبه برای مس (metal_id = 3)
|
|
elseif ($walletSingle->product->metal_id == 3) {
|
|
if (!($walletSingle->product->group_type == "سکه")){
|
|
(float)$count_copper += $walletSingle->product->amount * $walletSingle->gold;
|
|
}
|
|
$count_cash_from_copper += ($walletSingle->product->price * $walletSingle->product->amount) * $walletSingle->gold;
|
|
$count_product += $walletSingle->gold;
|
|
}
|
|
} else {
|
|
(float)$count_gold += $walletSingle->gold;
|
|
(float)$count_cash_pure += $walletSingle->cash;
|
|
$wallet->count_cash_wallet = $walletSingle->cash;
|
|
$wallet->count_gold_wallet = $walletSingle->gold;
|
|
}
|
|
}
|
|
|
|
// محاسبه مجموع کل ارزش دارایی
|
|
$count_cash_total = $count_cash_from_gold + $count_cash_from_silver + $count_cash_from_copper + $count_cash_pure;
|
|
|
|
$wallet->count_cash_wallets = $count_cash_total - $wallet->count_cash_wallet;
|
|
$wallet->count_gold_wallets = $count_gold - $wallet->count_gold_wallet;
|
|
|
|
$wallet->count_gold = $count_gold;
|
|
$wallet->count_silver = $count_silver;
|
|
$wallet->count_copper = $count_copper;
|
|
$wallet->count_cash = $count_cash_pure;
|
|
$wallet->count_product = $count_product;
|
|
$wallet->cash_from_gold = $count_cash_from_gold;
|
|
$wallet->cash_from_silver = $count_cash_from_silver;
|
|
$wallet->cash_from_copper = $count_cash_from_copper;
|
|
$wallet->count_cash_total = $count_cash_total;
|
|
|
|
|
|
|
|
$user->wallet = $wallet;
|
|
$user->pwallet = Wallet::with("product")->where('owner', $user->id)
|
|
->where('owner_type', $user->type) // Ensures the wallet's owner type matches the user's type
|
|
->whereNotNull('product_id') // Filters wallets that have a non-null product_id
|
|
->get() ?? new Wallet(); // If no wallet is found, assigns a new Wallet instance to the attribute
|
|
|
|
$forbiddenWords = ['tahesab', 'token']; // کلمات ممنوعه
|
|
$query = Setting::query();
|
|
// حذف رکوردهایی که key شامل کلمات ممنوعه است
|
|
foreach ($forbiddenWords as $word) {
|
|
$query->where('key', 'not like', "%{$word}%");
|
|
}$settings = $query->get();
|
|
$user->settings= $settings;
|
|
|
|
return response()->json($user);
|
|
}
|
|
|
|
|
|
public function updateMe(Request $request)
|
|
{
|
|
|
|
try {
|
|
$customer = Customer::findOrFail(auth('customer')->id());
|
|
$updateData = $request->except(['referral_id', 'referral_to_id']);
|
|
if (isset($request->fname) && isset($request->lname)) {
|
|
$updateData['name'] = "$request->fname $request->lname";
|
|
}
|
|
if ($request->has('credential_id')) {
|
|
$updateData['credential_id'] = $request->credential_id;
|
|
}
|
|
$customer->update($updateData);
|
|
|
|
// $tah = new TahesabController();
|
|
// $tah->store(["customer_id" => $customer->id]);
|
|
if (!$customer->is_legal) {
|
|
|
|
$response = Http::withHeaders([
|
|
'Authorization' => 'Bearer mob83EBzqU7GWBmnc-6gXIp6r2G57P_94',
|
|
'Content-Type' => 'application/json',
|
|
])->post('http://185.97.116.24:20205/check_user', [
|
|
'number' => $customer->mobile,
|
|
'national' => $customer->n_code,
|
|
'host' => $_SERVER['HTTP_HOST'],
|
|
]);
|
|
|
|
|
|
if (isset($response['matched']) and $response['matched'] == true) {
|
|
$customer->is_legal = 1;
|
|
$customer->save();
|
|
if ($this->Config('has_page_earn_money') == true) {
|
|
|
|
$gift_for_inviter = 0.002;
|
|
$gift_for_invited = 0.003;
|
|
$companyName = $this->Config('name_fa');
|
|
$companyurl = $this->Config('app_url');
|
|
$referrer = $customer->referral;
|
|
if (Customer::where('referral_to_id', $referrer->referral_id)->get()->count() <= $referrer->add_user_limit) {
|
|
$Withdraw = Withdraw::create([
|
|
'user_id' => $customer->id,
|
|
'customer_id' => $customer->referral->id,
|
|
"cash" => 0,
|
|
"gold" => $gift_for_invited,
|
|
'sts' => 5,
|
|
]);
|
|
$wallet_interface = new WalletInterface($customer->referral->id, 2);
|
|
new TransactionInterface($wallet_interface, $_inp = [
|
|
"cash" => 0,
|
|
"gold" => $gift_for_invited,
|
|
'expire_at' => now(),
|
|
'active' => true,
|
|
'title' => 'پاداش بابت معرفی',
|
|
'withdraw_id' => $Withdraw->id,
|
|
'start_at' => now(),
|
|
], 8, true, false);
|
|
$transaction = Transaction::where('customer_id', $customer->referral->id)->latest()->first();
|
|
TransactionsAdmin::create([
|
|
'customer_id' => $customer->id,
|
|
'customer_to_id' => $customer->referral->id,
|
|
'user_id' => $customer->id,
|
|
'wallet' => null, // یا مقدار مناسب دیگری
|
|
'transaction_id' => $transaction->id,
|
|
'cash' => 0,
|
|
'note' => 'پاداش بابت معرفی',
|
|
'type' => 1, // یا مقدار مناسب دیگری
|
|
'gold' => $gift_for_invited,
|
|
'balance_cash' => 0, // یا مقدار مناسب دیگری
|
|
'withdraw_id' => $Withdraw->id,
|
|
]);
|
|
$referrerWallet = Wallet::where('owner', $customer->referral->id)->first();
|
|
$message = "سلام {$referrer->name} عزیز،\n\n{$gift_for_invited} گرم طلا بابت معرفی {$customer->name} به حساب شما واریز شد.\nموجودی فعلی: {$referrerWallet->gold} گرم.\n\nاطلاعات بیشتر: $companyurl\n\nبا احترام،\n$companyName";
|
|
$this->Send($referrer->mobile, $message);
|
|
}
|
|
|
|
$Withdraw = Withdraw::create([
|
|
'user_id' => $customer->id,
|
|
'customer_id' => $customer->id,
|
|
"cash" => 0,
|
|
"gold" => $gift_for_inviter,
|
|
'sts' => 5,
|
|
]);
|
|
$wallet_interface = new WalletInterface($customer->id, 2);
|
|
new TransactionInterface($wallet_interface, $_inp = [
|
|
"cash" => 0,
|
|
"gold" => $gift_for_inviter,
|
|
'expire_at' => now(),
|
|
'active' => true,
|
|
'title' => 'پاداش بابت ثبت نام',
|
|
'withdraw_id' => $Withdraw->id,
|
|
'start_at' => now(),
|
|
], 8, true, false);
|
|
|
|
$transaction = Transaction::where('customer_id', $customer->id)->latest()->first();
|
|
TransactionsAdmin::create([
|
|
'customer_id' => $customer->id,
|
|
'customer_to_id' => $customer->id,
|
|
'user_id' => $customer->id,
|
|
'wallet' => null, // یا مقدار مناسب دیگری
|
|
'transaction_id' => $transaction->id,
|
|
'cash' => 0,
|
|
'note' => 'پاداش بابت ثبت نام',
|
|
'type' => 1, // یا مقدار مناسب دیگری
|
|
'gold' => $gift_for_inviter,
|
|
'balance_cash' => 0, // یا مقدار مناسب دیگری
|
|
'withdraw_id' => $Withdraw->id,
|
|
]);
|
|
$referrerWallet = Wallet::where('owner', $customer->id)->first();
|
|
$message = "سلام " . $customer->name . " عزیز،\n\n" . $gift_for_invited . " گرم طلا بابت ثبت نام " . " به حساب شما واریز شد.\n" . "موجودی فعلی: " . $referrerWallet->gold . " گرم.\n\n" . "اطلاعات بیشتر: " . $companyurl . "\n\n" . "با احترام،\n" . $companyName;
|
|
$this->Send($customer->mobile, $message);
|
|
}
|
|
} else {
|
|
// This block will handle the case where the code doesn't match
|
|
// if (isset($response['code']) and $response['code'] === 'mobileNumber.not_valid') {
|
|
// return response()->json(['message' => "کد ملی تطابق ندارد",'response' =>$response], 422);
|
|
// } else {
|
|
// // This block will handle other errors from the $response variable
|
|
// return response()->json(['response' => $response], 422);
|
|
// }
|
|
return response()->json(['message' => "کد ملی ثبت شد، اما در حال حاضر سیستم نتوانست آن را تأیید کند. لطفاً منتظر بررسی و تأیید مدیر بمانید.",'response' =>$response], 422);
|
|
|
|
}
|
|
|
|
|
|
}
|
|
return response()->json(true);
|
|
} catch (\Exception $e) {
|
|
// نمایش 400 کاراکتر اول از پیام خطا
|
|
$errorMessage = substr($e->getMessage(), 0, 400);
|
|
return response()->json(['error' => $errorMessage], 500);
|
|
}
|
|
}
|
|
|
|
|
|
public function active_finger()
|
|
{
|
|
$customer = Customer::findOrFail(auth('customer')->id());
|
|
|
|
if ($customer->finger_print) {
|
|
$customer->finger_print = false; // Set to false if currently true
|
|
} else {
|
|
$customer->finger_print = true; // Set to true if currently false
|
|
}
|
|
$customer->save();
|
|
return response()->json($customer);
|
|
|
|
}
|
|
|
|
public function imFrom($code)
|
|
{
|
|
$referrer = Customer::where('referral_id', $code)->first();
|
|
if ($referrer) {
|
|
// Define the reward amount
|
|
$rewardAmount = 200000; // Adjusted reward amount as per the new requirement
|
|
// Update the referred customer with the referral code
|
|
$newCustomer = auth('customer')->user(); // Assuming the new customer is authenticated
|
|
$newCustomer->referral_id = $code;
|
|
$newCustomer->save();
|
|
// Construct the SMS message
|
|
|
|
$message = sprintf(
|
|
"%s با کد معرف شما ثبت نام کرد.\nکیف پول شما %d ریال به عنوان پاداش شارژ شد.\n%s",
|
|
$newCustomer->name,
|
|
$rewardAmount,
|
|
$this->Config('name_fa')
|
|
);
|
|
|
|
// Send SMS to the referrer
|
|
$this->Send($referrer->mobile, $message);
|
|
return response()->json(['message' => 'Referral reward processed and SMS sent to referrer.'], 200);
|
|
} else {
|
|
return response()->json(['error' => 'کد نامعتبر میباشد'], 422);
|
|
}
|
|
}
|
|
|
|
public function i_have(Request $request)
|
|
{
|
|
$user = auth('customer')->user();
|
|
$customer_referral_id = Customer::where("id", $user['id'])->first()->referral_id;
|
|
$return['users'] = Customer::where("referral_to_id", $customer_referral_id)->get();
|
|
$return['gifts'] = TransactionsAdmin::with(['withdraw', 'order', "user", 'customerTo', 'customer'])->where("customer_to_id", $user->id)->get();
|
|
$return['usersSum'] = $return['users']->count();
|
|
$return['giftsSum'] = number_format($return['gifts']->sum('gold'), 3);
|
|
|
|
return response()->json($return);
|
|
}
|
|
|
|
|
|
}
|