Edit File: HomeController.php
<?php namespace App\Http\Controllers\Api; use DB; use Auth; use App\Models\Ads; use App\Models\Faq; use App\Models\City; use App\Models\User; use App\Models\Intro; use App\Models\Store; use App\Models\Region; use App\Models\Cartype; use App\Models\Country; use App\Models\Product; use App\Models\Setting; use App\Models\CarModel; use App\Models\Category; use App\Traits\ApiTrait; use Illuminate\Http\Request; use App\Models\Paymentmethod; use App\Http\Resources\AdsResource; use App\Http\Resources\FqsResource; use App\Models\DelegateJoinrequest; use App\Http\Controllers\Controller; use Illuminate\Support\Facades\Http; use App\Http\Resources\GroupResource; use App\Http\Resources\StoreResource; use App\Http\Resources\CitiesResource; use Illuminate\Support\Facades\Cache; use App\Http\Resources\IntrosResource; use App\Http\Resources\StoresResource; use App\Http\Resources\CarTypeResource; use App\Http\Resources\ProductResource; use App\Http\Resources\CarModelResource; use App\Http\Resources\CountriesResource; use App\Http\Resources\CategoriesResource; use App\Http\Resources\PaymentmethodResource; use App\Http\Requests\Api\Group\SelectRequest; use App\Http\Resources\ServicesResource; use App\Models\Service; class HomeController extends Controller { use ApiTrait; public function intro(Request $request) { $lang = $request->header('lang') ?? 'ar'; $data = []; //intros $intros = Intro::get(); $data['intros'] = IntrosResource::collection($intros); return $this->dataReturn($data); } public function carTypes(Request $request) { $lang = $request->header('lang') ?? 'ar'; // dd($lang); $data = []; //intros $car_types = Cartype::where(function ($query) use ($request) { if ($request['category_id']){ $query->where('category_id', $request['category_id']); } })->get(); $data['cars_types'] = CarTypeResource::collection($car_types); return $this->dataReturn($data); } public function carModels(Request $request) { $lang = $request->header('lang') ?? 'ar'; // dd($lang); $data = []; //intros $car_models = CarModel::get(); $data['cars_models'] = CarModelResource::collection($car_models); return $this->dataReturn($data); } public function services(Request $request) { $lang = $request->header('lang') ?? 'ar'; // dd($lang); $data = []; //intros $services = Service::get(); $data['services'] = ServicesResource::collection($services); return $this->dataReturn($data); } public function cities(Request $request) { $lang = $request->header('lang') ?? 'ar'; // dd($lang); $data = []; //intros $cities = City::get(); $data['cities'] = CitiesResource::collection($cities); return $this->dataReturn($data); } // public function transferdb(Request $request) // { // app()->setLocale('en'); // $url = "https://seazonetest.4hoste.com/api/transferdb"; // $response = Http::get($url); // $array = json_decode($response->getBody()->getContents(), true); // $data=[]; // foreach ($array as $country){ // $region=Region::where('name->en',$country['region']['en'])->first(); // if(!$region){ // $region=new Region(); // $region->name_ar=$country['region']['ar']; // $region->name_en=$country['region']['en']; // $region->update(); // } // $city=City::where('name->en',$country['city']['en'])->first(); // if(!$city){ // $city=new City(); // $city->name_ar=$country['region']['ar']; // $city->name_en=$country['region']['en']; // $city->update(); // } // $data=[ // 'status' => $country['status'], // 'qr'=>$country['qr'], // 'citc_errorCodes'=>$country['citc_errorCodes'], // 'citc_refrenceCode'=>$country['citc_refrenceCode'], // 'citc_notification'=>$country['citc_notification'], // 'fullname'=>$country['fullname'], // 'driver_date_of_birth'=>$country['driver_date_of_birth'], // 'identity_card'=>$country['identity_card'], // 'sponsor_name'=>$country['sponsor_name'], // 'car_model'=>$country['car_model'], // 'email'=>$country['email'], // 'phone'=>$country['phone'], // 'car_back'=>$country['car_back'], // 'address'=>$country['address'], // 'bank_acc_number'=>$country['bank_acc_number'], // 'car_front'=>$country['car_front'], // 'bank_iban_number'=>$country['bank_iban_number'], // 'personal_image'=>$country['personal_image'], // 'seen'=>$country['seen'], // 'manufacturing_year'=>$country['manufacturing_year'], // 'car_letters'=>$country['car_letters'], // 'car_numbers'=>$country['car_numbers'], // 'driving_license'=>$country['driving_license'], // 'identity_card_image'=>$country['identity_card_image'], // 'city_id'=> $city->id, // 'region_id'=> $region->id, // ]; // $store=DelegateJoinrequest::create($data); // } // return 'success'; // } public function about_App(Request $request){ $lang = $request->header('lang') ?? 'ar'; $data = []; $name = 'about_' . $lang; //about $about = Setting::where('key', $name)->first()->value; // $data['about_app'] = html_entity_decode(strip_tags($about)); $data['about_app']=$about; return $this->dataReturn($data); } public function productDeclaration(Request $request){ $lang = $request->header('lang') ?? 'ar'; $data = []; $name = 'product_declaration_' . $lang; //$product_declaration $product_declaration = Setting::where('key', $name)->first()->value; $data['product_declaration']=$product_declaration; return $this->dataReturn($data); } public function policy(Request $request) { $lang = $request->header('lang'); $data = []; $name = 'policy_' . $lang; // $name = 'policy_' . $lang; // switch ($lang) { // case 'ar': // // Code to display data in Arabic // return $name = 'policy_' . 'ar'; // case 'en': // // Code to display data in English // return $name = 'policy_' . 'en'; // case 'ur': // // Code to display data in Urdu // return $name = 'policy_' . 'ur'; // default: // // Code to handle unsupported languages or fallback to a default language // return $name = 'policy_' . 'ar'; // } //intros $policy = Setting::where('key', $name)->first()->value; // $data['policy'] = html_entity_decode(strip_tags($policy)); $data['policy']=$policy; return $this->dataReturn($data); } public function faqs() { $fqss = FqsResource::collection(Faq::latest()->get()); return $this->dataReturn( $fqss); } public function terms(Request $request) { $lang = $request->header('lang') ?? 'ar'; $data = []; $name = 'terms_' . $lang; //intros $terms = Setting::where('key', $name)->first()->value; // $data['terms'] = html_entity_decode(strip_tags($terms)); $data['terms']=$terms; return $this->dataReturn($data); } public function countries(Request $request) { $lang = $request->header('lang') ?? 'ar'; $data = []; //intros $countries = Country::get(); $data['countries'] = CountriesResource::collection($countries); return $this->dataReturn($data); } public function home(Request $request) { $user = auth('api')->user(); $lang = $request->header('lang') ?? 'ar'; $lat = doubleval($request['lat']) ?? doubleval(23.8859); $long = doubleval($request['long']) ?? doubleval(45.0792); $limit = 10; $settings = Setting::all()->pluck('value', 'key'); $max_distance = (int)$settings['distance']; if ($user) { $user->update([ 'show_policy' => 'true', ]); } $data = []; //ads $ads = Ads::latest()->take(5)->get(); $data['ads']=AdsResource::collection($ads); //categories $categories = Category::where('status', 'true')->get(); $data['categories'] = CategoriesResource::collection($categories); return $this->dataReturn($data); } public function categories(Request $request) { //categories $categories = Category::where('status', 'true')->get(); $data['categories'] = CategoriesResource::collection($categories); return $this->dataReturn($data); } public function nearstores(Request $request) { $lang = $request->header('lang') ?? 'ar'; $page = $request['page'] ?? 1; $lat = doubleval($request['lat']) ?? doubleval(23.8859); $long = doubleval($request['long']) ?? doubleval(45.0792); $settings = Setting::all()->pluck('value', 'key'); $max_distance = (int)$settings['distance']; //get neareast special stores $stores = Store::select("stores.*" , DB::raw("6371 * acos(cos(radians(" . $lat . ")) * cos(radians(stores.lat)) * cos(radians(stores.long) - radians(" . $long . ")) + sin(radians(" . $lat . ")) * sin(radians(stores.lat))) AS distance")) ->having("distance", '<', $max_distance) ->where(function ($query) use ($request) { if ($request['category']) { if ($request['category'] == 'free_delivery') { $query->where('stores.offer', 'true') ->where('stores.offer_amount', 100) ->where('stores.offer_type', 'percentage'); } else { $query->where('stores.category', $request['category']); } } if ($request['search']) { $query->where('stores.name->ar', 'like', '%' . $request['search'] . '%') ->orwhere('stores.name->en', 'like', '%' . $request['search'] . '%'); } }) ->groupBy("stores.name") ->whereHas('user') ->orderBy("distance", "asc") ->paginate($this->paginateNum()); $data['stores'] = StoresResource::collection($stores); $data['pagination'] = $this->paginationModel($stores); return $this->dataReturn($data); } public function singleStore(Request $request) { $lat = doubleval($request['lat']) ?? doubleval(23.8859); $long = doubleval($request['long']) ?? doubleval(45.0792); $settings = Setting::all()->pluck('value', 'key'); $max_distance = (int)$settings['distance']; $store = Store::select("stores.*" , DB::raw("6371 * acos(cos(radians(" . $lat . ")) * cos(radians(stores.lat)) * cos(radians(stores.long) - radians(" . $long . ")) + sin(radians(" . $lat . ")) * sin(radians(stores.lat))) AS distance")) ->having("distance", '<', $max_distance) ->where("stores.id", $request['store_id']) ->first(); if (!$store) { $msg = trans('stores.not_available'); return $this->failMsg($msg); } $store->updateCacheWithProducts(); // $data['store'] = new StoreResource($store->load('menuCategories')); $data['store'] = $store->cachedMenusWithProducts(); return $this->dataReturn($data); } public function storeBranches(Request $request) { $store = Store::find($request['store_id']); if (!$store) { $msg = trans('stores.not_available'); return $this->failMsg($msg); } $limit = 15; $page = $request['page'] ?? 1; $offset = ($page - 1) * $limit; $lat = doubleval($request['lat']) ?? doubleval(23.8859); $long = doubleval($request['long']) ?? doubleval(45.0792); $settings = Setting::all()->pluck('value', 'key'); $max_distance = (int)$settings['distance']; $parent_id = ($store->store_id == null) ? $store->id : $store->store_id; //get neareast branches $branches = Store:: select("stores.*" , DB::raw("6371 * acos(cos(radians(" . $lat . ")) * cos(radians(stores.lat)) * cos(radians(stores.long) - radians(" . $long . ")) + sin(radians(" . $lat . ")) * sin(radians(stores.lat))) AS distance")) ->having("distance", '<', $max_distance) ->where('store_id', '=', $parent_id) ->where('id', '!=', $store->id) ->orwhere('id', '=', $parent_id) ->where('id', '!=', $store->id) ->orderBy("distance", "asc") ->get(); $data['branches'] = StoresResource::collection($branches); return $this->dataReturn($data); } public function singleProduct(Request $request) { $product = Product::find($request['product_id']); if (!$product) { $msg = trans('stores.product_not_available'); return $this->failMsg($msg); } $data['product'] = new ProductResource($product); return $this->dataReturn($data); } public function identical_values($arrayA, $arrayB) { sort($arrayA); sort($arrayB); return $arrayA == $arrayB; } public function selectGroup(SelectRequest $request) { $product = Product::find($request['product_id']); if (!$product) { $msg = trans('stores.product_not_available'); return $this->failMsg($msg); } $groups = $product->groups()->where('status', 'posted')->where('properities', '!=', null)->get(); foreach ($groups as $group) { if ($this->identical_values(json_decode($group->properities), json_decode($request['properities']))) { $data['group'] = new GroupResource($group); return $this->dataReturn($data); } } $msg = trans('stores.group_not_available'); return $this->failMsg($msg); } public function paymentMethods(Request $request) { $payment_methods = Paymentmethod::where('status', 'active')->get(); $data = []; $data['payment_methods'] = PaymentmethodResource::collection($payment_methods); return $this->dataReturn($data); } }
Back to File Manager