with = ['file', 'price', 'default', 'sub']; $this->with = []; parent::__construct(Product::class, $this->with, ['*'], null, null, ['title']); } public function tableProduct(Request $request) { $data = $request->all(); if (isset($data["select"]) && is_null($data["select"])){ $data["select"] = []; } if (is_null($this->query)){ $query_table = $this->model::with($this->with); //*******کداضافه شده // ->where('active', '<=', now()) // فیلتر محصولات فعال // ->get(); //********* }else{ $query_table = $this->query; // $query_table = $query_table->where('active', '<=', now()); } TableEngine::create($query_table, $data) ->initSearch($this->search) ->select($this->select) ->export($query_table); $query_table['auto_open_at'] = Product::selectRaw( 'SEC_TO_TIME(AVG(TIME_TO_SEC(TIME(auto_open_at)))) as avg_time' )->value('avg_time'); $query_table['auto_close_at'] = Product::selectRaw( 'SEC_TO_TIME(AVG(TIME_TO_SEC(TIME(auto_close_at)))) as avg_time' )->value('avg_time'); // $query_table['11'] = $avgDuration; // $query_table['11'] = Product::avg('auto_open_at'); // $query_table['112'] = Product::avg('auto_close_at'); return $query_table; } public function editProducts(Request $request) { if (isset($request->auto_open_at, $request->auto_close_at)) { Product::query()->update([ 'auto_open_at' => $request->auto_open_at, 'auto_close_at' => $request->auto_close_at, ]); return response()->json(['message' => 'Products updated successfully.']); } return response()->json(['error' => 'auto_open_at and auto_close_at must be set'], 400); } public function store(Request $request) { $data = $request->all(); $product = Product::create($data); return $this->resultCreate($product->id); } public function update(Request $request, $id) { // return 1; $data = $request->all(); if (isset($data["price"])){ $data["reading_method"] = null; } if (isset($data["auto_close_at"]) and isset($data["auto_close_at"])){ if ($data["auto_close_at"] == $data["auto_open_at"]){ unset($data["auto_open_at"]); unset($data["auto_close_at"]); } } // return $data['price']; // if(!isset($data['default'])){ // throw new UnprocessableEntityHttpException('مقادیر اعتبارات را وارد کنید'); // } // $data['auto_open_at'] = Carbon::parse($data['auto_open_at'])->format('Y-m-d H:i:s'); // $data['auto_close_at'] = Carbon::parse($data['auto_close_at'])->format('Y-m-d H:i:s'); // Product::find($id)->update($data); Product::find($id)->update($data); return response()->json(true); } public function destroy($id) { Product::findOrFail($id)->delete(); return response()->json(true); } public function listProduct() { $this->getPrice(); $this->auto_close_open(); $product = Product::with([])->where('active', 1)->get(); return response()->json($product); } public function getPrice() { // $RPrices = Http::get('https://pricing.liman.gold/pricingApi', [])->json(); // $RPrices = Http::get('https://pricing.liman.gold/pricingApi', [])->json(); $RPrices =Http::timeout(40)->get('http://212.23.201.173:8381/price_list', [])->json(); $products = Product::with([])->whereNotNull('reading_method')->get(); foreach ($products as $product) { foreach ($RPrices as $RPrice) { if ($product->reading_method == $RPrice['name']) { $p = Product::where('id', $product->id)->update([ 'price' => $RPrice['price'], 'price_profit' => $RPrice['profit'], ]); if($product->bubble== 1){ $ReportController = new ReportController(); $liquidGold= $ReportController->lastPrice(); $p = Product::find($product->id); $p->amount = $RPrice['price'] / $liquidGold['price']; $p->save(); } } } } return response()->json(true); } public function auto_close_open() { $products = Product::with([])->get(); $current_time = now()->format('H:i:s'); foreach ($products as $product) { $show = ($current_time >= $product->auto_open_at && $current_time <= $product->auto_close_at); Product::where('id', $product->id)->update([ 'show' => $show, ]); } return response()->json(true); } public function getProduct($id) { $product = Product::with($this->with)->where('id', $id)->first(); return response()->json($product); } /** * @param $id * @return \Illuminate\Http\JsonResponse */ public function hide($id) { $query = Product::findOrFail($id); $query->update([ 'show' => !$query->show ]); return response()->json(true); } public function openSell($id) { return $this->toggleBooleanStatus($id, 'open_sell'); } public function openBuy($id) { return $this->toggleBooleanStatus($id, 'open_buy'); } public function auto_buy($id) { return $this->toggleBooleanStatus($id, 'auto_buy'); } public function auto_sell($id) { return $this->toggleBooleanStatus($id, 'auto_sell'); } private function toggleBooleanStatus($id, $field) { $product = Product::findOrFail($id); $product->$field = !$product->$field; $product->save(); if (!$product->open_buy and !$product->open_sell) { $product->show = false; $product->active = false; } else { $product->show = true; $product->active = true; } $product->save(); return response()->json($product->$field); } public function auto_group($action, $method) { // Define valid actions and methods $validActions = ['sell' => 'auto_sell', 'buy' => 'auto_buy', 'all' => ['auto_buy', 'auto_sell']]; $validMethods = ['true' => 1, 'false' => 0]; // Validate action and method if (!isset($validActions[$action]) || !array_key_exists($method, $validMethods)) { return response()->json(['error' => 'Invalid action or method'], 400); } // Get fields to update and value to set $fields = $validActions[$action]; $value = $validMethods[$method]; // Update products Product::query()->update(array_fill_keys((array)$fields, $value)); return response()->json(true); } public function updatePrice(Request $request){ } }