Commit aada9e84 by Arpit Jain

implemented mange country city state in admin section

parent 5d70f6b4
<?php
namespace App\Http\Controllers\Admin;
use Illuminate\Http\Request;
use App\Http\Controllers\Admin\AdminController;
use App\City;
use DB;
use Validator;
use Illuminate\Support\Facades\Hash;
class CityController extends AdminController
{
const RECORD_PER_PAGE = 10;
public function __construct()
{
$this->middleware('auth');
}
public function citiesList(Request $request) {
$admin_id = $request->session()->get('id');
$pageNo = trim($request->input('page', 1));
DB::enableQueryLog();
$keyword = strtolower(trim($request->input('keyword')));
$citiesList = City::where('cities.is_deleted', '=', '0');
$count = City::where('cities.is_deleted', '=', '0')->count();
if($keyword)
{
$citiesList = $citiesList->where(function ($query) use ($keyword) {
$query->orwhere('cities.name', 'like', '%'.$keyword);
});
}
$records = $citiesList->sortable(['id'=>'desc'])->paginate(Self::RECORD_PER_PAGE);
$queries = DB::getQueryLog();
return view('admin.cities.cities_mng', ['records' => $records,'pageNo' => @$pageNo, 'record_per_page' => Self::RECORD_PER_PAGE,'request'=>$request]);
}
public function getParentValue(Request $request)
{
if($request->type == 1){
$parentDetail = "";
}else if($request->type == 2){
$parentDetail = City::where('cities.name', '!=', '')->where('cities.type', '=', '1')->pluck('name','id')->toarray();
}else if($request->type == 3){
$parentDetail = City::where('cities.name', '!=', '')->where('cities.type', '=', '2')->pluck('name','id')->toarray();
}
if(!empty($parentDetail)){
$html = view('admin.cities.parent_element', compact('parentDetail'))->render();
return response()->json([
'status' => 'success',
'data' => $html
]);
}else{
$html = view('admin.cities.parent_element', compact('parentDetail'))->render();
return response()->json(['status' => 'error', 'data' => $html]);
}
}
public function createCity(){
return view('admin.cities.add');
}
public function saveCity(Request $request) {
$user_id = auth()->user('id');
if ($request->all()) {
$type = trim($request->type);
$name = trim($request->name);
if(!empty($request->parent_id)){
$parent_id = trim($request->parent_id);
}else{
$parent_id = '';
}
$status = trim($request->status);
$validator = Validator::make($request->all(), [
'type' => 'required',
'name' => 'required',
]);
if ($validator->fails()) {
return redirect()->route('admin.cities.add')
->withErrors($validator)
->withInput();
} else {
$city = new City;
$city->type = $type;
if(!empty($parent_id)){
$city->parent_id = $parent_id;
}
$city->name = $name;
$city->status = $status;
$city->save();
$msg = 'City has been added successfully.';
$request->session()->flash('add_message', $msg);
return redirect()->route('admin.cities');
}
}
}
public function editCity(Request $request, $id){
if(!empty($id)){
$data = City::find($id);
}
$parentDetail = City::where('cities.name', '!=', '')->where('cities.id', '=', $data->parent_id)->pluck('name','id')->toarray();
return view('admin.cities.edit', compact(array('data', 'parentDetail')));
}
public function updateCity(Request $request, $id) {
$user_id = auth()->user('id');
$data = array();
if(!empty($id)){
$data = City::find($id);
}
if ($request->all()) {
$type = trim($request->type);
if(!empty($request->parent_id)){
$parent_id = trim($request->parent_id);
}else{
$parent_id = '';
}
$name = trim($request->name);
$status = trim($request->status);
$validator = Validator::make($request->all(), [
'type' => 'required',
'name' => 'required',
]);
$messages = $validator->messages();
if ($validator->fails()) {
return redirect()->route('admin.cities.edit',['id'=>$id])
->withErrors($validator)
->withInput();
} else {
$city = City::find($id);
$city->type = $type;
if(!empty($parent_id)){
$city->parent_id = $parent_id;
}
$city->name = $name;
$city->status = $status;
$city->save();
$msg = 'City has been updated successfully.';
$request->session()->flash('add_message', $msg);
return redirect()->route('admin.cities');
}
}
}
public function deleteCity($id, Request $request) {
if ($id) {
$city = City::find($id);
$city->is_deleted = '1';
if($city->save()){
$msg = 'Deleted successfully.';
$request->session()->flash('message', $msg);
}
}
return redirect()->route('admin.cities');
}
}
\ No newline at end of file
......@@ -179,124 +179,8 @@ class PageController extends AdminController
}
}
/**
* Function add_page
*
* function to add page
*
* @Created Date: 28 June,2019
* @Modified Date: 28 June,2019
* @param ARRAY
* @return STRING
*/
public function add_page(Request $request, $id = '') {
$user_id = auth()->user('id');
$data = array();
if(!empty($id)){
//echo"<pre>";
//$data = Page::find($id)->with('fetchCreatedByUser')->with('fetchModifiedByUser')->first();
$data = Page::find($id);
//print_r($data);
//die;
}
if ($request->all()) { //post
$title = trim($request->title);
$locater_id = trim($request->locater_id);
if(!empty($request->slug)){
$slug = trim($request->slug);
}else{
$slug = str_replace(' ','_',$title);
}
$contents = trim($request->contents);
$meta_title = trim($request->meta_title);
$meta_keyword = trim($request->meta_keyword);
$meta_description = trim($request->meta_description);
$banner_content = trim($request->banner_content);
$created_by = trim($user_id->id);
$status = trim($request->status);
if ($id) {
//Validate the input
$validator = Validator::make($request->all(), [
'locater_id' => 'required',
'title' => 'required',
'contents' => 'required',
'banner_image' => 'image|mimes:jpeg,png,jpg,gif,svg|max:2048',
]);
$messages = $validator->messages();
}else {
//Validate the input
$validator = Validator::make($request->all(), [
'locater_id' => 'required',
'title' => 'required',
'contents' => 'required',
'banner_image' => 'image|mimes:jpeg,png,jpg,gif,svg|max:2048',
]);
}
if ($validator->fails()) {
if($id) {
return redirect()->route('admin-editpage',['id'=>$id])
->withErrors($validator)
->withInput();
} else {
return redirect()->route('admin-addpage')
->withErrors($validator)
->withInput();
}
} else {
if ($id) { //update case
$page = Page::find($id);//->with('userlists');
$modified_by = trim($user_id->id);
$page->modified_by = $modified_by;
} else {
$page = new Page;
$page->created_by = $user_id->id;
}
$page->title = $title;
$page->locater_id = $locater_id;
$page->contents = $contents;
$page->slug = $slug;
$page->meta_title = $meta_title;
$page->meta_keyword = $meta_keyword;
$page->meta_description = $meta_description;
if(!empty($request->banner_image)){
$page->banner_image = $request->file('banner_image')->store('image');
}
$page->banner_content = $banner_content;
$page->status = $status;
$page->save();
if ($id) {
$msg = 'Page has been updated successfully.';
$request->session()->flash('add_message', $msg);
return redirect()->route('admin-pages');
} else if (!empty($id)){
try{
$msg = 'Page has been added successfully.';
$request->session()->flash('add_message', $msg);
return redirect()->route('admin-pages');
}
catch(\Exception $e){
//
}
} else {
try{
$msg = 'Page has been added successfully.';
$request->session()->flash('add_message', $msg);
return redirect()->route('admin-pages');
}
catch(\Exception $e){
//
}
}
}
}
else {
$locater_id_url = Locater::where('locaters.status', '=', '1')->get();
return view('admin.pages.add_page', ['data' => $data, 'locater_id_url'=> $locater_id_url,'request' => $request]);
}
}
public function page_delete($id, Request $request) {
public function deletePage($id, Request $request) {
if ($id) {
$page = Page::find($id);
$page->is_deleted = '1';
......@@ -305,7 +189,7 @@ class PageController extends AdminController
$request->session()->flash('message', $msg);
}
}
return redirect()->route('admin-pages');
return redirect()->route('admin.pages');
}
}
\ No newline at end of file
......@@ -194,9 +194,6 @@ class SearchController extends Controller
}
/**
* 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();
......
......@@ -160,6 +160,11 @@ return [
],*/
'LABELS',
[
'text' => 'Manage Cities',
'url' => 'admin/cities',
'icon_color' => 'green',
],
[
'text' => 'Manage Locator',
'url' => 'admin/locaters',
'icon_color' => 'red',
......
@extends('adminlte::page')
@section('content')
<div class="container-fluid">
<div class="">
<div class="col-sm-6">
<h2>Manage Country / State / City</h2>
</div>
<div class="col-sm-6">
<ol class="breadcrumb float-sm-right">
<li class="breadcrumb-item"><a href="#">Home</a></li>
<li class="breadcrumb-item active">Add Country / State / City</li>
</ol>
</div>
</div>
</div><!-- /.container-fluid -->
<section class="content">
<div class="container-fluid">
<div class="row">
<div class="col-md-12">
<!-- Horizontal Form -->
<div class="box box-info">
<div class="box-header with-border">
<h3 class="box-title"></h3>
<div class="alert alert-success alert-dismissible groputitle" style="display:none">
</div>
@if(Session::has('add_message'))
<div class="alert alert-success alert-dismissible">
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>
{!! session('add_message') !!}
</div>
@endif
<form class="form-horizontal" id="add-citiesform" action="{{route('admin.cities.save')}}" method="POST" enctype="multipart/form-data">
{{ csrf_field() }}
<div class="col-md-12">
<!-- Custom Tabs -->
<div class="nav-tabs-custom">
<ul class="nav nav-tabs">
<li class="active"><a href="#tab_1" data-toggle="tab" aria-expanded="true">MAIN</a></li>
</ul>
<div class="tab-content">
<div class="tab-pane active" id="tab_1">
<div class="form-group @if($errors->first('type')) {{' has-error has-feedback'}} @endif ">
<label for="inputError" class="col-sm-2 control-label">Type<em>*</em></label>
<div class="col-sm-10">
<?php $options = array('1'=>'Country', '2'=>'State', '3'=>'City'); ?>
<select name="type" class="form-control fieldType">
<option value="">Select</option>
@foreach($options as $key => $option)
<?php if(isset($data->type) && !empty($data->type)){ ?>
<option @if($key == $data->type) {{'selected'}} @endif value="<?php echo $key; ?>"><?php echo $option; ?></option>
<?php }else{ ?>
<option value="<?php echo $key; ?>"><?php echo $option; ?></option>
<?php } ?>
@endforeach
</select>
</div>
</div>
<div class="form-group @if($errors->first('parent_id')) {{' has-error has-feedback'}} @endif parentDetail">
@include('admin.cities.parent_element')
</div>
<!-- new code -->
<div class="form-group @if($errors->first('name')) {{' has-error has-feedback'}} @endif ">
<label for="inputError" class="col-sm-2 control-label">Name</label>
<div class="col-sm-10">
<input type="text" name="name" class="form-control permalink" id="target_url" placeholder="Name" value="{{old('name',@$data->name)}}">
</div>
</div>
<div class="form-group @if($errors->first('status')) {{' has-error has-feedback'}} @endif ">
<label for="inputError" class="col-sm-2 control-label">Status<em>*</em></label>
<div class="col-sm-10">
<?php $options = array('1'=>'Active','0'=>'In Active'); ?>
<select name="status" class="form-control">
<option value="">Select</option>
@foreach($options as $key => $option)
<?php if(isset($data->status) && !empty($data->status)){ ?>
<option @if($key == $data->status) {{'selected'}} @endif value="<?php echo $key; ?>"><?php echo $option; ?></option>
<?php }else{ ?>
<option value="<?php echo $key; ?>"><?php echo $option; ?></option>
<?php } ?>
@endforeach
</select>
</div>
</div>
</div>
</div>
<!-- /.tab-content -->
</div>
<!-- nav-tabs-custom -->
</div>
<!-- /.box-body -->
<div class="box-footer">
<input type="submit" value="Submit" class="btn btn-info">
<a href="{{route('admin.cities')}}" class="btn btn-default">Cancel</a>
</div>
<!-- /.box-footer -->
</form>
</div>
</div>
<!--/.col (right) -->
</div>
</div>
</div>
<style>
.help-block{
color:red;
}
.error{
color:red;
}
</style>
<script type="text/javascript">
$( document ).ready(function() {
$('#add-citiesform').validate({
ignore: ".ignore",
rules: {
type: "required",
name: "required",
},
// Specify validation error messages
messages: {
type: "Please select type",
name: "Please enter Name.",
},
});
});
$(function () {
$('.fieldType').on('change', function (e) {
var type = $(this).val();
e.preventDefault();
$.ajax({
type: 'post',
url: "{{route('getParentValue')}}",
data: {"_token": "{{ csrf_token() }}",type:type},
success: function (datanew) {
if(datanew.status == 'success') {
$('.parentDetail').html(datanew.data);
} else {
$('.parentDetail').html(datanew.data);
}
}
});
});
});
</script>
@endsection
\ No newline at end of file
@extends('adminlte::page')
@section('content')
<div class="container-fluid">
<div class="">
<div class="col-sm-6">
<h2>Manage Country / State / City</h2>
</div>
<div class="col-sm-6">
<ol class="breadcrumb float-sm-right">
<li class="breadcrumb-item"><a href="#">Home</a></li>
<li class="breadcrumb-item active">Manage Country / State / City</li>
</ol>
</div>
</div>
</div><!-- /.container-fluid -->
<section class="content">
<div class="container-fluid">
<div class="row">
<div class="col-md-12">
<!-- Horizontal Form -->
<div class="box box-info">
<div class="box-header with-border">
<h3 class="box-title"></h3>
<div class="alert alert-success alert-dismissible groputitle" style="display:none">
</div>
@if(Session::has('add_message'))
<div class="alert alert-success alert-dismissible">
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>
{!! session('add_message') !!}
</div>
@endif
<form id="cities-mng" method="get" action="{{route('admin.cities')}}">
{{ csrf_field() }}
<div class="row clearfix">
<div class="col-sm-2">
<div class="form-group">
<div class="form-line">
<input class="form-control" name="keyword" value="{{old('keyword',$request->keyword)}}" placeholder="Keyword" type="text">
</div>
</div>
</div>
<div class="col-sm-4">
<button type="submit" class="btn btn-primary btn-info">Search<div></div></button>
<a href="{{route('admin.cities')}}" class="btn btn-primary btn-success">Reset</a>
</div>
<div class="col-sm-2 pull-right">
<a href="{{route('admin.cities.add')}}" class="btn btn-block btn-warning">Add </a>
</div>
</div>
</form>
@if(Session::has('message'))
<div class="alert alert-success alert-dismissible">
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>
{!! session('message') !!}
</div>
@endif
</div>
<!-- /.box-header -->
<form id="cities-add" method="get" action="">
<div class="card">
<!-- /.card-header -->
<div class="card-body">
<table class="table table-bordered">
<tr>
<th style="width: 10px">#</th>
<th>@sortablelink('name')</th>
<th>@sortablelink('created_at')</th>
<th style="width: 40px">Action</th>
</tr>
@if(count($records)>0)
<?php $k = ($pageNo == 1) ? $pageNo : (($pageNo - 1) * $record_per_page) + 1; ?>
@foreach($records as $row)
<tr>
<td>{{$row->id}}</td>
<td>{{$row->name}}</td>
<td>{{date("F j, Y", strtotime($row->created_at))}}</td>
<td style="width:10%">
<a href="{{route('admin.cities.edit',['id'=>$row->id])}}" class="btn btn-info btn-xs action-btn" title ="Edit"><span class="glyphicon glyphicon-pencil" aria-hidden="true"></span></a>
<a href="{{route('admin.cities.delete',['id'=>$row->id])}}" class="btn btn-danger btn-xs action-btn" onclick="return confirm('Are you sure you want to delete ?');" title ="Delete"><span class="glyphicon glyphicon-trash" aria-hidden="true"></span></a>
</td>
</tr>
<?php $k++; ?>
@endforeach
@else
<tr class="bg-info">
<td colspan="4">Record(s) not found.</td>
</tr>
@endif
</table>
</div>
<!-- /.card-body -->
<div class="card-footer clearfix">
<ul class="pagination pagination-sm m-0 float-right">
{!! $records->links() !!}
</ul>
</div>
<!-- /.card -->
</div>
</form>
<!-- /.box-body -->
</div>
<!-- /.box -->
</div>
</div>
</div>
@endsection
@extends('adminlte::page')
@section('content')
<div class="container-fluid">
<div class="">
<div class="col-sm-6">
<h2>Manage Country / State / City</h2>
</div>
<div class="col-sm-6">
<ol class="breadcrumb float-sm-right">
<li class="breadcrumb-item"><a href="#">Home</a></li>
<li class="breadcrumb-item active">Update Country / State / City</li>
</ol>
</div>
</div>
</div><!-- /.container-fluid -->
<section class="content">
<div class="container-fluid">
<div class="row">
<div class="col-md-12">
<!-- Horizontal Form -->
<div class="box box-info">
<div class="box-header with-border">
<h3 class="box-title"></h3>
<div class="alert alert-success alert-dismissible groputitle" style="display:none">
</div>
@if(Session::has('add_message'))
<div class="alert alert-success alert-dismissible">
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>
{!! session('add_message') !!}
</div>
@endif
<form class="form-horizontal" id="add-citiesform" action="{{route('admin.cities.update',['id'=>@$data->id])}}" method="POST" enctype="multipart/form-data">
{{ csrf_field() }}
<div class="col-md-12">
<!-- Custom Tabs -->
<div class="nav-tabs-custom">
<ul class="nav nav-tabs">
<li class="active"><a href="#tab_1" data-toggle="tab" aria-expanded="true">MAIN</a></li>
</ul>
<div class="tab-content">
<div class="tab-pane active" id="tab_1">
<input type="hidden" name="id" value="{{old('id',@$data->id)}}">
<div class="form-group @if($errors->first('type')) {{' has-error has-feedback'}} @endif ">
<label for="inputError" class="col-sm-2 control-label">Type<em>*</em></label>
<div class="col-sm-10">
<?php $options = array('1'=>'Country', '2'=>'State', '3'=>'City'); ?>
<select name="type" class="form-control fieldType">
<option value="">Select</option>
@foreach($options as $key => $option)
<?php if(isset($data->type) && !empty($data->type)){ ?>
<option @if($key == $data->type) {{'selected'}} @endif value="<?php echo $key; ?>"><?php echo $option; ?></option>
<?php }else{ ?>
<option value="<?php echo $key; ?>"><?php echo $option; ?></option>
<?php } ?>
@endforeach
</select>
</div>
</div>
<div class="form-group @if($errors->first('parent_id')) {{' has-error has-feedback'}} @endif parentDetail">
@include('admin.cities.parent_element')
</div>
<!-- new code -->
<div class="form-group @if($errors->first('name')) {{' has-error has-feedback'}} @endif ">
<label for="inputError" class="col-sm-2 control-label">Name</label>
<div class="col-sm-10">
<input type="text" name="name" class="form-control permalink" id="target_url" placeholder="Name" value="{{old('name',@$data->name)}}">
</div>
</div>
<div class="form-group @if($errors->first('status')) {{' has-error has-feedback'}} @endif ">
<label for="inputError" class="col-sm-2 control-label">Status<em>*</em></label>
<div class="col-sm-10">
<?php $options = array('1'=>'Active','0'=>'In Active'); ?>
<select name="status" class="form-control">
<option value="">Select</option>
@foreach($options as $key => $option)
<?php if(isset($data->status) && !empty($data->status)){ ?>
<option @if($key == $data->status) {{'selected'}} @endif value="<?php echo $key; ?>"><?php echo $option; ?></option>
<?php }else{ ?>
<option value="<?php echo $key; ?>"><?php echo $option; ?></option>
<?php } ?>
@endforeach
</select>
</div>
</div>
</div>
<!-- /.tab-pane -->
</div>
<!-- /.tab-content -->
</div>
<!-- nav-tabs-custom -->
</div>
<!-- /.box-body -->
<div class="box-footer">
<input type="submit" value="Submit" class="btn btn-info">
<a href="{{route('admin.pages')}}" class="btn btn-default">Cancel</a>
</div>
<!-- /.box-footer -->
</form>
</div>
</div>
<!--/.col (right) -->
</div>
</div>
</div>
<style>
.help-block{
color:red;
}
.error{
color:red;
}
</style>
<script type="text/javascript">
$( document ).ready(function() {
$('#add-citiesform').validate({
ignore: ".ignore",
rules: {
type: "required",
name: "required",
},
// Specify validation error messages
messages: {
type: "Please select type",
name: "Please enter Name.",
},
});
});
$(function () {
$('.fieldType').on('change', function (e) {
var type = $(this).val();
e.preventDefault();
$.ajax({
type: 'post',
url: "{{route('getParentValue')}}",
data: {"_token": "{{ csrf_token() }}",type:type},
success: function (datanew) {
if(datanew.status == 'success') {
$('.parentDetail').html(datanew.data);
} else {
$('.parentDetail').html(datanew.data);
}
}
});
});
});
</script>
@endsection
\ No newline at end of file
@if(!empty($parentDetail))
<label for="inputError" class="col-sm-2 control-label">Parent<em>*</em></label>
<div class="col-sm-10">
<select name="parent_id" class="form-control">
<option value="">Select</option>
@foreach($parentDetail as $key => $option)
@if(!empty($data))
<option @if($data->parent_id == $key) {{'selected'}} @endif value="<?php echo $key; ?>"><?php echo
$option; ?></option>
@else
<option value="<?php echo $key; ?>"><?php echo
$option; ?></option>
@endif
@endforeach
</select>
</div>
@endif
\ No newline at end of file
......@@ -79,4 +79,13 @@ Route::group(['middleware' => ['auth'], 'prefix' => 'admin', 'namespace' => 'Adm
Route::post('homepages/{id}/edit', 'HomepageController@updateHomepage')->name('admin.homepages.update');
Route::get('homepages/{id}/delete', 'HomepageController@deleteHomepage')->name('admin.homepages.delete');
/* For manage Cities */
Route::any('cities', 'CityController@citiesList')->name('admin.cities');
Route::get('cities/create', 'CityController@createCity')->name('admin.cities.add');
Route::post('cities/create', 'CityController@saveCity')->name('admin.cities.save');
Route::get('cities/{id}/edit', 'CityController@editCity')->name('admin.cities.edit');
Route::post('cities/{id}/edit', 'CityController@updateCity')->name('admin.cities.update');
Route::get('cities/{id}/delete', 'CityController@deleteCity')->name('admin.cities.delete');
Route::post('getParentValue', 'CityController@getParentValue')->name('getParentValue');
});
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