Commit 0c5513f4 by Ajay Barthwal

Merge branch 'develop' into 'master'

Worked on city state drop down and also implemented API according to this drop down

See merge request !1
parents eb5fcc0f 996bb8bc
...@@ -15,7 +15,7 @@ class City extends Model ...@@ -15,7 +15,7 @@ class City extends Model
public $sortable = ['id', public $sortable = ['id',
'name', 'name',
'state', 'type',
'created_at', 'created_at',
'updated_at']; 'updated_at'];
...@@ -25,7 +25,7 @@ class City extends Model ...@@ -25,7 +25,7 @@ class City extends Model
* @var array * @var array
*/ */
protected $fillable = [ protected $fillable = [
'name', 'state' 'name', 'type'
]; ];
} }
...@@ -8,7 +8,7 @@ use Validator; ...@@ -8,7 +8,7 @@ use Validator;
use App\Traits\Apitraits; use App\Traits\Apitraits;
use App\Locater; use App\Locater;
use App\Page; use App\Page;
//use App\City; use App\City;
use Illuminate\Support\Facades\Hash; use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Storage; use Illuminate\Support\Facades\Storage;
...@@ -58,21 +58,56 @@ class CronController extends Controller ...@@ -58,21 +58,56 @@ class CronController extends Controller
} }
/*public function getCity(){ public function getState(){
$file = Storage::disk('public')->exists('city.json'); $file = Storage::disk('public')->exists('city.json');
$body = Storage::get('city.json'); $body = Storage::get('city.json');
$cityData = json_decode($body, true); $cityData = json_decode($body, true);
$arrayDetail = array();
foreach($cityData as $data){ foreach($cityData as $data){
$city = new City;
$city->name = $data['name']; $arrayDetail[]= $data['state'];
$city->state = $data['state'];
$city->parent_id = $data['state']; }
$city->save(); $stateName = array_unique($arrayDetail);
foreach($stateName as $data){
$state = new City;
$state->name = $data;
$state->parent_id = 1;
$state->type = 2;
$state->save();
} }
return response()->json([ return response()->json([
'status' => 'success', 'status' => 'success',
'data' => 'Updated Sucessfully' 'data' => 'Updated Sucessfully'
]); ]);
}*/ }
public function getCity(){
$file = Storage::disk('public')->exists('city.json');
$body = Storage::get('city.json');
$cityData = json_decode($body, true);
$getStateData = City::where('cities.name', '!=', '')->where('cities.type', '=', '2')->pluck('name','id')->toarray();
foreach($getStateData as $key=>$state){
foreach($cityData as $city){
if($state == $city['state']){
$cityaa = new City;
$cityaa->name = $city['name'];
$cityaa->parent_id = $key;
$cityaa->type = 3;
$cityaa->save();
}
}
}
return response()->json([
'status' => 'success',
'data' => 'Updated Sucessfully'
]);
}
} }
\ No newline at end of file
...@@ -8,6 +8,7 @@ use App\Helpers\Apihelpers; ...@@ -8,6 +8,7 @@ use App\Helpers\Apihelpers;
use App\Traits\Apitraits; use App\Traits\Apitraits;
use App\Locater; use App\Locater;
use App\Page; use App\Page;
use App\City;
use DB; use DB;
use Validator; use Validator;
use Illuminate\Support\Facades\Hash; use Illuminate\Support\Facades\Hash;
...@@ -26,11 +27,11 @@ class SearchController extends Controller ...@@ -26,11 +27,11 @@ class SearchController extends Controller
} }
private function getApiData($locality=null, $page=null){ private function getApiData($locality=null, $state=null, $city=null, $location=null, $page=null){
$api_url = config('app.api_list'); $api_url = config('app.api_list');
$apiLocaterData = $this->call_api_page($api_url, $locality, $page); $apiLocaterData = $this->call_api_page($api_url, $locality, $state, $city, $location, $page);
if ( count($apiLocaterData['data']) < 1 ) if ( count($apiLocaterData['data']) < 1 )
return response()->json(['status' => 'error', 'data' => 'No data found!']); return response()->json(['status' => 'error', 'data' => 'No data found!']);
...@@ -86,7 +87,9 @@ class SearchController extends Controller ...@@ -86,7 +87,9 @@ class SearchController extends Controller
$finalData = $final['data']['finalData']; $finalData = $final['data']['finalData'];
$links = $final['data']['links']; $links = $final['data']['links'];
$meta = $final['data']['meta']; $meta = $final['data']['meta'];
return view('frontend.searchs.index', compact('finalData','links','meta')); $getState = City::where('parent_id', '=', '1')->where('type', '=', '2')->get()->toarray();
return view('frontend.searchs.index', compact('finalData','links','meta','getState'));
}else{ }else{
return response()->json(['status' => 'error', 'data' => 'No data found!']); return response()->json(['status' => 'error', 'data' => 'No data found!']);
...@@ -98,8 +101,7 @@ class SearchController extends Controller ...@@ -98,8 +101,7 @@ class SearchController extends Controller
* */ * */
public function searchlocater(Request $request) public function searchlocater(Request $request)
{ {
$detail = $this->getApiData($request['locality'], $request['page']); $detail = $this->getApiData($request['locality'], $request['state'], $request['city'], $request['location'], $request['page']);
$final = $detail->original; $final = $detail->original;
if($final['status'] == 'success'){ if($final['status'] == 'success'){
...@@ -109,8 +111,11 @@ class SearchController extends Controller ...@@ -109,8 +111,11 @@ class SearchController extends Controller
$meta = $final['data']['meta']; $meta = $final['data']['meta'];
$locality = $request->locality; $locality = $request->locality;
$state = $request->state;
$city = $request->city;
$location = $request->location;
$html = view('frontend.searchs.location_element', compact('finalData', 'links', 'locality', 'meta'))->render(); $html = view('frontend.searchs.location_element', compact('finalData', 'links', 'locality','state','city', 'location', 'meta'))->render();
return response()->json([ return response()->json([
'status' => 'success', 'status' => 'success',
'data' => $html 'data' => $html
...@@ -118,7 +123,7 @@ class SearchController extends Controller ...@@ -118,7 +123,7 @@ class SearchController extends Controller
}else{ }else{
$html = view('frontend.searchs.location_element', compact('finalData', 'links', 'locality', 'meta'))->render(); $html = view('frontend.searchs.location_element', compact('finalData', 'links', 'locality','state','city', 'location', 'meta'))->render();
return response()->json(['status' => 'error', 'data' => $html]); return response()->json(['status' => 'error', 'data' => $html]);
} }
...@@ -184,5 +189,29 @@ class SearchController extends Controller ...@@ -184,5 +189,29 @@ class SearchController extends Controller
return view('frontend.searchs.review_element', compact('reviewData')); return view('frontend.searchs.review_element', compact('reviewData'));
} }
/**
* For render location list after searching
* */
public function getCityValue(Request $request)
{
$getCityData = City::where('cities.name', '!=', '')->where('cities.parent_id', '=', $request->state)->pluck('name','id')->toarray();
if(!empty($getCityData)){
$html = view('frontend.searchs.city_dropdown', compact('getCityData'))->render();
return response()->json([
'status' => 'success',
'data' => $html
]);
}else{
$html = view('frontend.searchs.city_dropdown', compact('getCityData'))->render();
return response()->json(['status' => 'error', 'data' => $html]);
}
}
} }
...@@ -102,12 +102,20 @@ Trait Apitraits ...@@ -102,12 +102,20 @@ Trait Apitraits
} }
public function call_api_page($api_url, $locatorID=null, $page=1) public function call_api_page($api_url, $locatorID=null, $state=null, $city=null, $location=null, $page=1)
{ {
$apiKey = $this->getAPiKey(); $apiKey = $this->getAPiKey();
if(!empty($locatorID)){
$locatorID = $locatorID;
}else{
$locatorID = $location;
}
$query_param = array( $query_param = array(
'keyword' => $locatorID, 'keyword' => $locatorID,
'state' => $state,
'city' => $city,
'page' => empty($page) ? 1 : $page 'page' => empty($page) ? 1 : $page
); );
......
<select name="city" class="form-control getCityValue">
<option value="">Select City</option>
@if(!empty($getCityData))
@foreach($getCityData as $key => $option)
<option value="<?php echo $option; ?>"><?php echo $option; ?>
</option>
@endforeach
@endif
</select>
\ No newline at end of file
...@@ -16,17 +16,18 @@ ...@@ -16,17 +16,18 @@
<div class="or">OR</div> <div class="or">OR</div>
<div class="select"> <div class="select">
<select class="form-control"> <select name="state" class="form-control getStateValue">
<option>State</option> <option value="">Select State</option>
</select> @foreach($getState as $key => $option)
</div> <option state="<?php echo $option['name']; ?>" value="<?php echo $option['id']; ?>"><?php echo $option['name']; ?></option>
<div class="select"> @endforeach
<select class="form-control">
<option>City</option>
</select> </select>
</div> </div>
<div class="select cityData">
@include('frontend.searchs.city_dropdown')
</div>
<div class="select"> <div class="select">
<input type="text" class="form-control" placeholder="Location"> <input type="text" class="form-control location" name="location" placeholder="Location">
</div> </div>
<div class="action"> <div class="action">
<input type="button" id="searchbutton" value="Submit" class="btn btn-primary"> <input type="button" id="searchbutton" value="Submit" class="btn btn-primary">
...@@ -94,14 +95,17 @@ ...@@ -94,14 +95,17 @@
$(function () { $(function () {
$('#searchbutton').on('click', function (e) { $('#searchbutton').on('click', function (e) {
var locality = $('.locality').val();
var location = $('.location').val();
var state = $('.getStateValue option:selected').attr('state');
var city = $('.getCityValue').val();
e.preventDefault(); e.preventDefault();
$.ajax({ $.ajax({
type: 'post', type: 'post',
url: "{{route('searchlocater')}}", url: "{{route('searchlocater')}}",
data: $('form').serialize(), data: {"_token": "{{ csrf_token() }}", locality:locality, location:location, state:state,city:city},
success: function (datanew) { success: function (datanew) {
/*$( "#searchlocaterid" ).html( datanew );*/
if(datanew.status == 'success') { if(datanew.status == 'success') {
$('#searchlocaterid').html(datanew.data); $('#searchlocaterid').html(datanew.data);
} else { } else {
...@@ -116,25 +120,51 @@ ...@@ -116,25 +120,51 @@
$("#searchlocaterid").on('click','.pagination li a',function () { $("#searchlocaterid").on('click','.pagination li a',function () {
var page = $(this).data('page'); var page = $(this).data('page');
var locality = $('.locality').val(); var locality = $('.locality').val();
paginate(page,locality); var state = $('.getStateValue option:selected').attr('state');
var city = $('.getCityValue').val();
var location = $('.location').val();
paginate(page, locality, state, city, location);
}); });
function paginate(page,locality){ function paginate(page, locality, state, city, location){
$.ajax({ $.ajax({
type: 'post', type: 'post',
url: "{{route('searchlocater')}}", url: "{{route('searchlocater')}}",
data: {"_token": "{{ csrf_token() }}",page:page,locality:locality}, data: {"_token": "{{ csrf_token() }}",page:page,locality:locality,state:state,city:city,location:location},
success: function (datanew) { success: function (datanew) {
if(datanew.status == 'success') { if(datanew.status == 'success') {
$('#searchlocaterid').html(datanew.data); $('#searchlocaterid').html(datanew.data);
} else { } else {
$('#searchlocaterid').html(datanew.data); $('#searchlocaterid').html(datanew.data);
} }
$(".locality").val(locality); $(".locality").val(locality);
$('.getStateValue option:selected').attr('state');
$(".getCityValue").val(city);
$('.location').val(location);
} }
}); });
} }
$(function () {
$('.getStateValue').on('change', function (e) {
var state = $(this).val();
e.preventDefault();
$.ajax({
type: 'post',
url: "{{route('getCityValue')}}",
data: {"_token": "{{ csrf_token() }}",state:state},
success: function (datanew) {
if(datanew.status == 'success') {
$('.cityData').html(datanew.data);
} else {
$('.cityData').html(datanew.data);
}
}
});
});
});
</script> </script>
......
...@@ -20,10 +20,12 @@ Route::post('searchlocater', 'SearchController@searchlocater')->name('searchloca ...@@ -20,10 +20,12 @@ Route::post('searchlocater', 'SearchController@searchlocater')->name('searchloca
Route::get('autocomplete', 'SearchController@autocomplete')->name('autocomplete'); Route::get('autocomplete', 'SearchController@autocomplete')->name('autocomplete');
Route::get('detail/{slug}', 'SearchController@detail')->name('detail'); Route::get('detail/{slug}', 'SearchController@detail')->name('detail');
Route::post('reviewpaginate', 'SearchController@reviewpaginate')->name('reviewpaginate'); Route::post('reviewpaginate', 'SearchController@reviewpaginate')->name('reviewpaginate');
Route::post('getCityValue', 'SearchController@getCityValue')->name('getCityValue');
/* Cron Routes */ /* Cron Routes */
Route::get('cron/getLocaterListData', 'CronController@getLocaterListData')->name('getLocaterListData'); Route::get('cron/getLocaterListData', 'CronController@getLocaterListData')->name('getLocaterListData');
//Route::get('cron/getCity', 'CronController@getCity')->name('getCity'); Route::get('cron/getState', 'CronController@getState')->name('getState');
Route::get('cron/getCity', 'CronController@getCity')->name('getCity');
/** End Cron Routes */ /** End Cron Routes */
Auth::routes(); Auth::routes();
......
INSERT INTO `cities` (`id`, `name`, `parent_id`, `type`, `status`, `is_deleted`, `created_at`, `updated_at`) VALUES (NULL, 'India', NULL, '1', '1', '0', NULL, NULL);
RUN on browser : WWW_ROOT./cron/getState
RUN on browser : WWW_ROOT./cron/getCity
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment