Viewing File: /home/ubuntu/vedadeals-backend-base/app/Http/Controllers/Admin/CountryController.php
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Helpers\Helper;
use DB, Exception, Setting, CountryState, Excel;
use App\Models\{ Country };
use App\Http\Requests\Admin\Country\{ CountryPostRequest, CountryGetRequest };
use App\Exports\{ CountriesExport };
use App\Imports\{ CountriesImport };
class CountryController extends Controller
{
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct(Request $request)
{
$this->middleware('auth:admin');
$this->skip = $request->skip ?: 0;
$this->take = $request->take ?: (Setting::get('admin_take_count') ?: TAKE_COUNT);
}
/**
* @method countries_index()
*
* @uses to list the countries
*
* @created Karthick
*
* @updated
*
* @param
*
* @return to countries index page
*/
public function countries_index(Request $request) {
$base_query = Country::orderBy('created_at', 'DESC');
if($request->filled('search_key')) {
$base_query = $base_query->where(function ($query) use ($request) {
$query->where('state', "LIKE", "%" . $request->search_key . "%");
$query->orWhere('country', "LIKE", "%" . $request->search_key . "%");
$query->orWhere('country_code', "LIKE", "%" . $request->search_key . "%");
});
}
if($request->filled('status')) {
$base_query = $base_query->where('status', $request->status);
}
$countries = $base_query->paginate($this->take);
return view('admin.countries.index')
->with('page', 'countries')
->with('sub_page', 'countries-view')
->with('countries', $countries);
}
/**
* @method countries_create()
*
* @uses To create a new country
*
* @created Karthick
*
* @updated
*
* @param create a new object
*
* @return to create country page
*
*/
public function countries_create() {
try {
$country = new Country;
$countries = CountryState::getCountries();
$states = [];
return view('admin.countries.create')
->with('page', 'countries')
->with('sub_page', 'countries-create')
->with(compact(['country', 'countries', 'states']));
} catch(Exception $e) {
return redirect()->route('admin.countries.index')->with('flash_error', $e->getMessage());
}
}
/**
* @method countries_edit()
*
* @uses to edit country details based on the country_id
*
* @created Karthick
*
* @updated
*
* @param object $request - country_id
*
* @return to edit country page
*
*/
public function countries_edit(CountryGetRequest $request) {
try {
$country = Country::find($request->country_id);
$countries = CountryState::getCountries();
return view('admin.countries.edit')
->with('page' , 'countries')
->with('sub_page','countries-create')
->with(compact(['country', 'countries']));
} catch(Exception $e) {
return redirect()->route('admin.countries.index')->with('flash_error', $e->getMessage());
}
}
/**
* @method countries_save()
*
* @uses to save the country details of new/existing object based on country_id
*
* @created Karthick
*
* @updated
*
* @param object $request - country_id
*
* @return view country page
*
*/
public function countries_save(CountryPostRequest $request) {
try {
$country_check = Country::when(request('country_id'), function($query){
$query->where('id', '!=', request('country_id'));
})->where(['state' => request('state'), 'country' => request('country')])
->exists();
if($country_check) {
throw new Exception(tr('country_state_already_exists', (request('country').' - '.request('state'))));
}
DB::begintransaction();
$country = Country::updateOrCreate(['id' => $request->country_id], $request->validated());
if($country) {
DB::commit();
$message = $request->country_id ? tr('country_updated_success') : tr('country_created_success');
return redirect(route('admin.countries.view', ['country_id' => $country->id ]))->with('flash_success', $message);
}
throw new Exception(tr('country_save_failed'));
} catch(Exception $e){
DB::rollback();
return back()->withInput()->with('flash_error', $e->getMessage());
}
}
/**
* @method countries_view()
*
* @uses to view the country details based on country_id
*
* @created Karthick
*
* @updated
*
* @param object $request - country_id
*
* @return View page
*
*/
public function countries_view(CountryGetRequest $request) {
try {
$country = Country::find($request->country_id);
return view('admin.countries.view')
->with('page', 'countries')
->with('sub_page', 'countries-view')
->with('country',$country);
} catch (Exception $e) {
return redirect()->route('admin.countries.index')->with('flash_error', $e->getMessage());
}
}
/**
* @method countries_status
*
* @uses to change country status as DECLINED/APPROVED based on country_id
*
* @created Karthick
*
* @updated
*
* @param object $request - country_id
*
* @return response success/failure message
*
**/
public function countries_status(CountryGetRequest $request) {
try {
DB::beginTransaction();
$country = Country::find($request->country_id);
$result = $country->update(['status' => $country->status ? DECLINED : APPROVED]);
if($result) {
DB::commit();
$message = $country->status ? tr('country_approve_success') : tr('country_decline_success');
return back()->with('flash_success', $message);
}
throw new Exception(tr('country_status_change_failed'));
} catch(Exception $e) {
DB::rollback();
return redirect()->route('admin.countries.index')->with('flash_error', $e->getMessage());
}
}
/**
* @method countries_delete()
*
* @uses to delete the country details based on country_id
*
* @created Karthick
*
* @updated
*
* @param object $request - country_id
*
* @return response of success/failure details with view page
*
*/
public function countries_delete(CountryGetRequest $request) {
try {
DB::begintransaction();
$country = Country::find($request->country_id);
if($country->delete()) {
DB::commit();
return redirect()->route('admin.countries.index')->with('flash_success',tr('country_deleted_success'));
}
throw new Exception(tr('country_delete_failed'));
} catch(Exception $e){
DB::rollback();
return back()->with('flash_error', $e->getMessage());
}
}
/**
* @method countries_export()
*
* @uses to export countries in excel format
*
* @created Karthick
*
* @updated
*
* @param
*
* @return
*
*/
public function countries_export(Request $request) {
try {
$file_format = $request->file_format ? : '.xlsx';
$filename = routefreestring(Setting::get('site_name'))."-".now()."-".uniqid().$file_format;
return Excel::download(new CountriesExport($request), $filename);
} catch(\Exception $e) {
return redirect()->route('admin.countries.index')->with('flash_error' , $e->getMessage());
}
}
/**
* @method countries_import()
*
* @uses to import countries from excel
*
* @created Karthick
*
* @updated
*
* @param
*
* @return
*
*/
public function countries_import(Request $request) {
try {
return view('admin.countries.import')
->with('page', 'countries')
->with('sub_page', 'countries-import');
} catch(\Exception $e) {
return redirect()->route('admin.countries.index')->with('flash_error' , $e->getMessage());
}
}
/**
* @method countries_import_save()
*
* @uses to import countries from excel
*
* @created Karthick
*
* @updated
*
* @param
*
* @return
*
*/
public function countries_import_save(Request $request) {
try {
$rules = ['excel' => ['required', 'mimes:xlsx']];
Helper::custom_validator($request->all(), $rules, []);
Excel::import(new CountriesImport, request('excel'));
return redirect()->route('admin.countries.index');
} catch(\Exception $e) {
return redirect()->back()->with('flash_error' , $e->getMessage());
}
}
/**
* @method get_states()
*
* @uses to get all states from a country.
*
* @created Karthick
*
* @updated
*
* @param
*
* @return return data
*
*/
public function get_states() {
$states = CountryState::getStates(request('country_code'));
$view_page = view('admin.countries.states_list')->with('states' , $states)->render();
$response_array = ['success' => true , 'view' => $view_page];
return response()->json($response_array);
}
}
Back to Directory
File Manager