Files
boursecu_server/app/Http/Controllers/Customer/CustomerController.php
T
2026-02-16 09:29:37 +00:00

278 lines
13 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\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_cash =0;
$count_product =0;
foreach ($user->wallets as $walletSingle) {
if ($walletSingle->product_id) {
if (!($walletSingle->product->group_type == "سکه")){
(float)$count_gold += $walletSingle->product->amount*$walletSingle->gold;
}
$count_cash += $walletSingle->product->price*$walletSingle->gold;
$count_product += $walletSingle->gold;
} else {
(float)$count_gold += $walletSingle->gold;
(float)$count_cash += $walletSingle->cash;
$wallet->count_cash_wallet = $walletSingle->cash;
$wallet->count_gold_wallet = $walletSingle->gold;
}
}
$wallet->count_cash_wallets = $count_cash-$wallet->count_cash_wallet;
$wallet->count_gold_wallets = $count_gold-$wallet->count_gold_wallet;
$wallet->count_gold = $count_gold;
$wallet->count_cash = $count_cash;
$wallet->count_product = $count_product;
$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);
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);
}
}