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) { $counter = Cnt::where('key', 'jibit_counter')->first(); if(empty($counter)){ $counter = new Cnt(); $counter->key = "jibit_counter"; $counter->value = 0; $counter->save(); } $nationalCode = $customer->n_code; $mobileNumber = $customer->mobile; // Storage::put('accessTokenGibit', ['accessToken']); // Storage::put('refreshTokenGibit', ['refreshToken']); $response = Http::withoutVerifying()->withToken(Storage::get('accessTokenGibit')) ->get("https://napi.jibit.ir/ide/v1/services/matching?nationalCode=".$nationalCode."&mobileNumber=".$mobileNumber)->json(); if (isset($response['code']) && $response['code']== "forbidden"){ $response = Http::withoutVerifying()->withToken(Storage::get('refreshTokenGibit')) ->post("https://napi.jibit.ir/ide/v1/tokens/generate",[ 'apiKey' => "J5WxrPxPOg", 'secretKey' => "7dgeE70xQXsQL7r36j3wif6X9", ])->json(); Storage::put('accessTokenGibit', $response['accessToken']); Storage::put('refreshTokenGibit', $response['refreshToken']); $response = Http::withoutVerifying()->withToken(Storage::get('accessTokenGibit')) ->get("https://napi.jibit.ir/ide/v1/services/matching?nationalCode=".$nationalCode."&mobileNumber=".$mobileNumber)->json(); } //update jibit counter $counter->value = (int)$counter->value + 1; $counter->save(); // $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 = $this->Config('gift_for_referrer'); $gift_for_invited = $this->Config('gift_for_referral'); $companyName = $this->Config('name_fa'); $companyurl = $this->Config('app_url'); $referrer = $customer->referral; $total_referrals = Customer::where('referral_to_id', $referrer->referral_id)->where('is_legal', '!=', 0)->get()->count(); $referral_limit = Setting::where('key', 'referral_limit')->first(); $gift_permision = $referral_limit->is_active ? $total_referrals < $referral_limit->value ? true : false : true ; if ($gift_permision && $gift_for_inviter > 0) { // dd($gift_for_inviter > 0, $gift_for_invited > 0); $Withdraw = Withdraw::create([ 'user_id' => $customer->id, 'customer_id' => $customer->referral->id, "cash" => 0, "gold" => $gift_for_inviter, 'sts' => 5, ]); $wallet_interface = new WalletInterface($customer->referral->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->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_inviter, 'balance_cash' => 0, // یا مقدار مناسب دیگری 'withdraw_id' => $Withdraw->id, ]); $referrerWallet = Wallet::where('owner', $customer->referral->id)->first(); if($this->Config('send_to_tahesab') == "true"){ try { $tahesab = new TahesabController(); $tahesab->walletGold([ 'customer_id'=> $customer->id, 'value'=> $gift_for_inviter, 'direction'=> 0 ]); }catch (\Exception $e){ return response($e->getMessage(), 500); } } $message = "سلام {$referrer->name} عزیز،\n\n{$gift_for_inviter} گرم طلا بابت معرفی {$customer->name} به حساب شما واریز شد.\nموجودی فعلی: {$referrerWallet->gold} گرم.\n\nاطلاعات بیشتر: $companyurl\n\nبا احترام،\n$companyName"; $this->Send($referrer->mobile, $message); } if($gift_for_invited > 0 ){ $Withdraw = Withdraw::create([ 'user_id' => $customer->id, 'customer_id' => $customer->id, "cash" => 0, "gold" => $gift_for_invited, 'sts' => 5, ]); $wallet_interface = new WalletInterface($customer->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->id)->latest()->first(); TransactionsAdmin::create([ 'customer_id' => $customer->id, 'customer_to_id' => $customer->referal->id, 'user_id' => $customer->id, 'wallet' => null, // یا مقدار مناسب دیگری 'transaction_id' => $transaction->id, 'cash' => 0, 'note' => 'پاداش بابت ثبت نام', 'type' => 1, // یا مقدار مناسب دیگری 'gold' => (float)$gift_for_invited, 'balance_cash' => 0, // یا مقدار مناسب دیگری 'withdraw_id' => $Withdraw->id, ]); $referrerWallet = Wallet::where('owner', $customer->id)->first(); if($this->Config('send_to_tahesab') == "true"){ try { $tahesab = new TahesabController(); $tahesab->walletGold([ 'customer_id'=> $customer->id, 'value'=> $gift_for_inviter, 'direction'=> 0 ]); }catch (\Exception $e){ return response($e->getMessage(), 500); } } $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); } }