Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- diff --git a/app/app/Http/Controllers/Admin/ServicesController.php b/app/app/Http/Controllers/Admin/ServicesController.php
- index f99917c..8f74396 100644
- --- a/app/app/Http/Controllers/Admin/ServicesController.php
- +++ b/app/app/Http/Controllers/Admin/ServicesController.php
- @@ -7,6 +7,8 @@ use App\Models\Service;
- use App\Models\ServiceCategory;
- use App\Http\Requests\ServiceFormRequest;
- use App\ScopeRepository;
- +use App\Models\GeographicRegion;
- +use App\Models\Region;
- use Illuminate\Contracts\View\View;
- use Illuminate\Contracts\View\Factory;
- use Illuminate\Database\DatabaseManager;
- @@ -79,24 +81,59 @@ class ServicesController extends Controller
- ->with('serviceCategories', $this->categories->get());
- }
- - public function create():View
- + public function create(ScopeRepository $scopeRepo, Region $regions):View
- {
- $onlineContentID = $this->db->table('services')
- ->where('brand_id', $this->repository->getBrandId())
- ->where('region_id', $this->repository->getRegionId())
- ->max('online_content_id') + 1;
- + $selectedRegion = $scopeRepo->getRegionId();
- + $selectedRegionIds = $scopeRepo->getRegionIds();
- + $selectedGeoRegionIds = $scopeRepo->getGeoRegionIds();
- + $regionChoices = [];
- +
- + if (!isset($selectedRegion)) {
- + if ((count($selectedGeoRegionIds) == 0 && count($selectedRegionIds) == 1 && $selectedRegionIds[0]=='0') || ($selectedRegionIds == null && $selectedGeoRegionIds == null)) { // Special handling for '-- All --'
- + $regionChoices = Region::all()->lists('name', 'id')->toArray();
- + } else {
- + // Pull out all regions if a user has selected a geo-region.
- + foreach ($selectedGeoRegionIds as $geoRegionId) {
- + $regionChoices += Region::where('geographic_region_id', $geoRegionId)->lists('name', 'id')->toArray();
- + }
- +
- + // Associate the selected regions now to the region choice array.
- + $regionChoices += Region::find($selectedRegionIds)->lists('name', 'id')->toArray();
- +
- + // If user only has region scope selected, just use that value for $selectedRegion.
- + if (count($regionChoices) == 1) {
- + $selectedRegion = key($regionChoices);
- + }
- + }
- + }
- + $serviceCategoryRegions = $this->categories->lists('region_id', 'id')->all();
- + $serviceCategoryNames = $this->categories->lists('name', 'id')->all();
- +
- + $regionToServiceObj = array();
- + foreach ($serviceCategoryRegions as $id => $region) {
- + $name = $serviceCategoryNames[$id];
- + $regionToServiceObj[$region][$id] = $name;
- + }
- return $this->view->make('admin.services.create')
- ->with('accreditations', $this->accreditations->get())
- - ->with('serviceCategories', $this->categories->lists('name', 'id')->all())
- - ->with('defaultOnlineContentId', $onlineContentID);
- + ->with('serviceCategories', $serviceCategoryNames)
- + ->with('regionToServiceObj', json_encode($regionToServiceObj))
- + ->with('defaultOnlineContentId', $onlineContentID)
- + ->with('current_region_choices', $regionChoices)
- + ->with('selectedRegion', $selectedRegion)
- + ->with('regions', $regions->lists('name', 'id'));
- }
- - public function store(ServiceFormRequest $request):RedirectResponse
- + public function store(ServiceFormRequest $request, ScopeRepository $scopeRepo):RedirectResponse
- {
- $input = $request->input();
- $input['brand_id'] = $this->repository->getBrandId();
- - $input['region_id'] = $this->repository->getRegionId();
- + $input['region_id'] = isset($input['region_id']) ? $input['region_id'] : $scopeRepo->getRegionId();
- $input['accreditations'] = $request->input('accreditations', []);
- if (!$input['price']) {
- @@ -111,23 +148,38 @@ class ServicesController extends Controller
- ->with('message', $this->translator->get('messages.service.created'));
- }
- - public function edit(Service $service):View
- + public function edit(Service $service, ScopeRepository $scopeRepo, Region $regions):View
- {
- $accreditations = $this->accreditations->get();
- $onlineContentID = $service->online_content_id;
- + $selectedRegion = $service->region_id;
- + $regionChoices = [];
- +
- + $serviceCategoryRegions = $this->categories->lists('region_id', 'id')->all();
- + $serviceCategoryNames = $this->categories->lists('name', 'id')->all();
- +
- + $regionToServiceObj = array();
- + foreach ($serviceCategoryRegions as $id => $region) {
- + $name = $serviceCategoryNames[$id];
- + $regionToServiceObj[$region][$id] = $name;
- + }
- return $this->view->make('admin.services.edit')
- ->with('accreditations', $accreditations)
- ->with('service', $service)
- ->with('serviceCategories', $this->categories->lists('name', 'id')->all())
- - ->with('defaultOnlineContentId', $onlineContentID);
- + ->with('defaultOnlineContentId', $onlineContentID)
- + ->with('current_region_choices', $regionChoices)
- + ->with('selectedRegion', $selectedRegion)
- + ->with('regions', $regions->lists('name', 'id'))
- + ->with('regionToServiceObj', json_encode($regionToServiceObj));
- +
- }
- public function update(ServiceFormRequest $request, Service $service):RedirectResponse
- {
- $inputs = $request->input();
- $inputs['brand_id'] = $this->repository->getBrandId();
- - $inputs['region_id'] = $this->repository->getRegionId();
- $inputs['add_on'] = isset($inputs['add_on']); // Assume missing value is unchecked checkbox
- $inputs['accreditations'] = $request->input('accreditations', []);
- diff --git a/app/resources/views/admin/services/form.blade.php b/app/resources/views/admin/services/form.blade.php
- index d352b6a..df7a560 100644
- --- a/app/resources/views/admin/services/form.blade.php
- +++ b/app/resources/views/admin/services/form.blade.php
- @@ -1,6 +1,14 @@
- <legend>{{Lang::get('forms.services.title') }}</legend>
- <p>{{Lang::get('forms.required_field_hint')}}</p>
- +<div class="form-group" @if(isset($selectedRegion)) style="display:none;" @endif>
- + {!! Form::label('region_id', Lang::get('forms.counters.region') . ':', array('class' => 'col-sm-2 control-label')) !!}
- + <div class="col-sm-4 @if ($errors->has('region_id')) has-error @endif">
- + {!! Form::select('region_id', $current_region_choices, null, array('class' => 'form-control')) !!}
- + @if ($errors->has('region_id')) <p class="help-block">{{ $errors->first('region_id') }}</p> @endif
- + </div>
- +</div>
- +
- @if(isset($service))
- <div class="form-group">
- <label class="col-sm-2 control-label">{{ Lang::get('forms.services.id') }}</label>
- @@ -108,3 +116,28 @@
- {!! Form::submit($submit_text, array('id' => 'service_submit', 'role' => 'button', 'class' => 'btn btn-primary')) !!}
- </div>
- </div>
- +
- +<script type="text/javascript">
- + $(document).ready(function() {
- + function setServiceCatOptions() {
- + var regionToServiceObj = {!! $regionToServiceObj !!};
- + @if(isset($selectedRegion))
- + var selectedRegion = {!! $selectedRegion !!};
- + @else
- + var selectedRegion = $('select#region_id').val();
- + @endif
- +
- + var selectHtml = '';
- + for (var id in regionToServiceObj[selectedRegion]) {
- + console.log('ID is ' + id + " and name is " + regionToServiceObj[selectedRegion][id] )
- + selectHtml += '<option value ="' + id + '">' + regionToServiceObj[selectedRegion][id] + '</option>';
- + };
- + $('select#service_category_id').html(selectHtml);
- + }
- + $('select#region_id').change(function() {
- + setServiceCatOptions();
- + });
- + setServiceCatOptions();
- +
- + });
- +</script>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement