whereDate('date_at', '<=', date("Y-m-d")) ->whereDate('date_at', '>', Carbon::now()->subDays(30)->format("Y-m-d")) ->get()->toArray(); $a = []; foreach ($candle as $c) { $create['date'] = $c["date_at"]; unset($c["date_at"]); $create['candle'] = array_values($c); $a[] = array_values($create); } return response()->json($a); } public function updatePrise() { // $difference = config('fee.single'); $difference = Setting::where('key', 'fee_single')->first()->value; $lastPrice = Price::latest()->first(); $PriceTriggers = PriceTrigger::where("is_active", true)->get(); foreach ($PriceTriggers as $PriceTrigger) { $priseGold = $PriceTrigger->dirction == 1 ? $lastPrice->price - $difference : ($PriceTrigger->dirction == 2 ? $lastPrice->price + $difference : $lastPrice->price); if (eval('return $priseGold ' . $PriceTrigger->price_condition . ' $PriceTrigger->target_price;')) { $customer = Customer::find($PriceTrigger->customer_id); $message = "قیمت طلا به " . number_format($priseGold, -1) . " در هر گرم رسید\n" .$this->Config('name_fa'); if ($PriceTrigger->action == 'email') { Mail::to("$customer->email")->send(new YourMailableClass($message, '', '', '', '')); } elseif ($PriceTrigger->action == 'sms') { $this->send($customer->mobile, $message); } $PriceTrigger->is_active = false; $PriceTrigger->triggered_at = Carbon::now(); $PriceTrigger->save(); } } return response()->json(); } public function upDownPrice() { // $difference = config('fee.single'); $difference = Setting::where('key', 'fee_single')->first()->value; $today = Carbon::now()->format("Y-m-d"); $prises = Price::where('date_at', $today)->get("price"); $minP = 0; // Initialize to the highest possible value $maxP = 0; // Initialize to the lowest possible value foreach ($prises as $p) { // Initialize $minP to the first price if it's null if ($minP == 0 || $p->price < $minP) { $minP = $p->price; } // Initialize $maxP to the first price if it's null if ($maxP == 0 || $p->price > $maxP) { $maxP = $p->price; } } if (count($prises) === 0) { // Fetching the current gold price from the API $response = Http::get('https://www.tala.ir/ajax/price'); $data = $response->json(); // Clean the price value retrieved from API $data['gold']['gold_18k']['v'] = str_replace(',', '', $data['gold']['gold_18k']['v']); $priceValue = $data['gold']['gold_18k']['v'] * 10; // Assuming the multiplication by 10 is needed // Create and save the new Price instance $price = new Price(); $price->price = $priceValue; // Assign the cleaned and calculated price value $price->time_at = Carbon::now()->toTimeString(); // Set current time $price->date_at = Carbon::now()->toDateString(); // Set current date $price->save(); // Save to the database return ['sell' => $price->price - $difference, 'buy' => $price->price + $difference]; } else { // Assuming $minP and $maxP are defined elsewhere in your code return ['sell' => $minP - $difference, 'buy' => $maxP + $difference]; } // return $prises; // $add_sell_price = config('add_sell_price.major'); // $price = PriceCandle::whereDate('date_at',)->first(); // $price_price = Price::orderBy('id','desc')->first(); } public function lastPrice() { // $difference = config('fee.single'); $settings = Setting::whereIn('key', ['fee_single', 'goldir_price', 'tabanGohar_price', 'main_product_price'])->get(); $settingsMap = $settings->pluck('value', 'key'); $taban_gohar_price = $settingsMap->get('tabanGohar_price'); $difference = $settingsMap->get('fee_single'); $gold_ir_price = $settingsMap->get('goldir_price'); $main_product_price = $settingsMap->get('main_product_price'); if($gold_ir_price == 'true'){ $goldir_price = 0; try{ $goldir = Http::timeout(7)->withOptions([ 'curl' => [ CURLOPT_IPRESOLVE => CURL_IPRESOLVE_V4, CURLOPT_TCP_FASTOPEN => 1, ] ]) ->withoutVerifying() // غیرفعال کردن بررسی SSL (برای تست سرعت) ->withToken(Cnt::where('key', 'goldir')->first()['value']) ->get('https://gold.ir/server/customer/product/list')->json(); if((isset($goldir['message']) && $goldir['message'] == 'no authorised') || $goldir == null){ $cnt = new Cnt(); $goldir = Http::timeout(2)->withToken($cnt->goldir_login()) ->get('https://gold.ir/server/customer/product/list')->json(); } $customPrice= []; $collection = collect($goldir); $lp = $collection->firstWhere('id', 40); // foreach ($goldir as $lp) { // if ($lp['id'] == 40) { $buy = $lp['sub_agent']['rate_buy_gram_price']; $sell = $lp['sub_agent']['rate_sell_gram_price']; $customPrice['price'] = (ceil($buy) + ceil($sell)) / 2; Cnt::where('key', 'goldir_price')->update(['value' => (float)$customPrice['price']]);//was float $customPrice['diff'] = (ceil($buy) - ceil($sell)) / 2; Cnt::where('key', 'goldir_diff')->update(['value' => (float)$customPrice['diff']]);//was float Cnt::where('key', 'goldir_mazaneh')->update(['value' => ((float)$customPrice['price'] * 4.331802)]); Cnt::where('key', 'goldir_truly_buy_mazaneh')->update(['value' => $lp['sub_agent']['rate_buy_price']]); Cnt::where('key', 'goldir_truly_sell_mazaneh')->update(['value' => $lp['sub_agent']['rate_sell_price']]); Cnt::where('key', 'log')->update(['value' => json_encode($goldir, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT)]); if ($lp['open_sell'] == 'true' && $lp['open_buy'] == 'true') { $goldir_price = (int)$customPrice['price']; } // } // } if($goldir_price == 0){ Cnt::where('key', 'goldir_closed')->update(['value' => "true"]); }else{ Cnt::where('key', 'goldir_closed')->update(['value' => "false"]); } } catch (\Exception $e) {$goldir_price = 0;} } if($main_product_price == 'true'){ $main_product_id = Cnt::where('key', 'main_product')->first()['value']; $pr_product = Product::find($main_product_id); $pr_price = $pr_product['price'] + $pr_product['price_profit']; } if($taban_gohar_price == 'true') { try { $taban_gohar = Http::withOptions([ 'curl' => [ // اجبار به استفاده از IPv4 و جلوگیری از تاخیر IPv6 CURLOPT_IPRESOLVE => CURL_IPRESOLVE_V4, // افزایش سرعت برقراری ارتباط TCP CURLOPT_TCP_FASTOPEN => 1, ] ])->withoutVerifying()->timeout(2)->get('https://tabangohar.com/GheymatKhan/prices_in_table.html')->json(); $tgn = (int)$taban_gohar['c'] * 10; } catch (\Exception $e) { $tgn = 0; } } // try { // $tala_ir = (int)str_replace(',', '', Http::timeout(2)->get('https://www.tala.ir/ajax/price')->json()['gold']['gold_18k']['v']) * 10; // } catch (\Exception $e) {$tala_ir = 0;} // $refpricer = new ProductController(); // if ($refpricer->getPrice()) { // $ref = true; // } else { // $ref = false; // } if($gold_ir_price == 'true' && $goldir_price !== 0) { $priceValue = (int)$goldir_price; }elseif($taban_gohar_price == 'true' && $tgn !== 0){ $priceValue = $tgn; }elseif($main_product_price == 'true' && $pr_price !== 0){ $priceValue = $pr_price; }else{ $priceValue = 0; } $lastPrice = Price::latest()->first(); if (!$lastPrice || $lastPrice->price != $priceValue and $priceValue > 30000000) { $price = new Price(); $price->price = $priceValue; // Assign the cleaned price value $price->time_at = Carbon::now()->toTimeString(); $price->date_at = Carbon::now()->toDateString(); $price->save(); $this->updatePrise(); $candle = PriceCandle::whereDate('date_at',date("Y-m-d"))->first(); if (!is_null($candle)){ $candle->end = $priceValue; if ($priceValue < $candle->low){ $candle->low = $priceValue;} elseif ($priceValue > $candle->high){ $candle->high = $priceValue;}$candle->save(); }else{ PriceCandle::create([ "start"=>$priceValue, "end"=>$priceValue, "high"=>$priceValue, "low"=>$priceValue, "date_at"=>date("Y-m-d") ]); } } $price = Price::orderBy('id', 'desc')->first(); if ($price) { if($this->Config('goldir_price') == 'true' && $goldir_price !==0){ $goldir_profit = Cnt::where('key', 'goldir_diff')->first()['value']; $difference = $goldir_profit; } return [ 'sell' => $priceValue !== 0 ? ceil($price->price - $difference) : 0, 'buy' => $priceValue !== 0 ? ceil($price->price + $difference) : 0, 'price_last' => $priceValue !== 0 ? ceil($price->price + $difference) : 0, 'price' => $priceValue, 'main_product' => $pr_price ?? 0, 'taban_gohar' => $tgn ?? 0, 'goldir' => $goldir_price ?? 0 ]; } else { return []; } } public function check() { $service = Http:: withHeaders([ 'accept' => 'application/json', 'Authorization' => 'Bearer ohxsrbjagqvbt0glaygt' ])->get('https://studio.persianapi.com/index.php/web-service/common/gold-currency-coin?format=json&limit=30&page=1') ->json(); $list = []; if (isset($service['result'])) { foreach ($service['result'] as $item) { if ($item['key'] == 137120 || $item['key'] == 137119) { $list[] = $item; if ($item['key'] == 137120) { (new PriceController())->store(new Request(["price" => $item['price']])); } } } Cnt::where('key', 'price')->update(['value_json' => $list]); } } public function test() { $a = '{{12, 23, {4, 0, {1}, {1}}}, 0, {1}}'; $b = str_split($a); $c = []; $str = ""; foreach ($b as $item) { if ($item != " ") { print_r($item); print_r('++'); if ($item == ',' || $item == '}') { if (!in_array($c[count($c) - 1], ['{', '}'])) { $c[count($c) - 1] += (int)$str; print_r((int)$str); print_r('^^'); } else { $c[] = $str; print_r($c); print_r('&&'); } $str = ""; } elseif (in_array($item, ['{', '}'])) { $c[] = $item; print_r($c); print_r('**'); } else { $str .= $item; print_r($str); print_r('@@'); } } } dd($c); $d = []; $e = []; foreach ($c as $item) { if ($item == '}') { print_r($d[count($d) - 1]); print_r('***'); $e[] = $d[count($d) - 1]; } else { $d[] = $item; print_r($d); print_r('-----'); } } dd($e); } }