Advertisement
Guest User

Untitled

a guest
Apr 26th, 2017
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Diff 8.19 KB | None | 0 0
  1. diff --git a/app/app/Http/Controllers/Admin/ServicesController.php b/app/app/Http/Controllers/Admin/ServicesController.php
  2. index f99917c..8f74396 100644
  3. --- a/app/app/Http/Controllers/Admin/ServicesController.php
  4. +++ b/app/app/Http/Controllers/Admin/ServicesController.php
  5. @@ -7,6 +7,8 @@ use App\Models\Service;
  6.  use App\Models\ServiceCategory;
  7.  use App\Http\Requests\ServiceFormRequest;
  8.  use App\ScopeRepository;
  9. +use App\Models\GeographicRegion;
  10. +use App\Models\Region;
  11.  use Illuminate\Contracts\View\View;
  12.  use Illuminate\Contracts\View\Factory;
  13.  use Illuminate\Database\DatabaseManager;
  14. @@ -79,24 +81,59 @@ class ServicesController extends Controller
  15.              ->with('serviceCategories', $this->categories->get());
  16.      }
  17.  
  18. -    public function create():View
  19. +    public function create(ScopeRepository $scopeRepo, Region $regions):View
  20.      {
  21.          $onlineContentID = $this->db->table('services')
  22.                  ->where('brand_id', $this->repository->getBrandId())
  23.                  ->where('region_id', $this->repository->getRegionId())
  24.                  ->max('online_content_id') + 1;
  25. +        $selectedRegion = $scopeRepo->getRegionId();
  26. +        $selectedRegionIds = $scopeRepo->getRegionIds();
  27. +        $selectedGeoRegionIds = $scopeRepo->getGeoRegionIds();
  28. +        $regionChoices = [];
  29. +
  30. +        if (!isset($selectedRegion)) {
  31. +            if ((count($selectedGeoRegionIds) == 0 && count($selectedRegionIds) == 1 && $selectedRegionIds[0]=='0') || ($selectedRegionIds == null && $selectedGeoRegionIds == null)) { // Special handling for '-- All --'
  32. +                $regionChoices = Region::all()->lists('name', 'id')->toArray();
  33. +            } else {
  34. +                // Pull out all regions if a user has selected a geo-region.
  35. +                foreach ($selectedGeoRegionIds as $geoRegionId) {
  36. +                    $regionChoices += Region::where('geographic_region_id', $geoRegionId)->lists('name', 'id')->toArray();
  37. +                }
  38. +
  39. +                // Associate the selected regions now to the region choice array.
  40. +                $regionChoices += Region::find($selectedRegionIds)->lists('name', 'id')->toArray();
  41. +
  42. +                // If user only has region scope selected, just use that value for $selectedRegion.
  43. +                if (count($regionChoices) == 1) {
  44. +                    $selectedRegion = key($regionChoices);
  45. +                }
  46. +            }
  47. +        }
  48. +        $serviceCategoryRegions = $this->categories->lists('region_id', 'id')->all();
  49. +        $serviceCategoryNames = $this->categories->lists('name', 'id')->all();
  50. +
  51. +        $regionToServiceObj = array();
  52. +        foreach ($serviceCategoryRegions as $id => $region) {
  53. +            $name = $serviceCategoryNames[$id];
  54. +            $regionToServiceObj[$region][$id] = $name;
  55. +        }
  56.  
  57.          return $this->view->make('admin.services.create')
  58.              ->with('accreditations', $this->accreditations->get())
  59. -            ->with('serviceCategories', $this->categories->lists('name', 'id')->all())
  60. -            ->with('defaultOnlineContentId', $onlineContentID);
  61. +            ->with('serviceCategories', $serviceCategoryNames)
  62. +            ->with('regionToServiceObj', json_encode($regionToServiceObj))
  63. +            ->with('defaultOnlineContentId', $onlineContentID)
  64. +            ->with('current_region_choices', $regionChoices)
  65. +            ->with('selectedRegion', $selectedRegion)
  66. +            ->with('regions', $regions->lists('name', 'id'));
  67.      }
  68.  
  69. -    public function store(ServiceFormRequest $request):RedirectResponse
  70. +    public function store(ServiceFormRequest $request, ScopeRepository $scopeRepo):RedirectResponse
  71.      {
  72.          $input = $request->input();
  73.          $input['brand_id'] = $this->repository->getBrandId();
  74. -        $input['region_id'] = $this->repository->getRegionId();
  75. +        $input['region_id'] = isset($input['region_id']) ? $input['region_id'] : $scopeRepo->getRegionId();
  76.          $input['accreditations'] = $request->input('accreditations', []);
  77.  
  78.          if (!$input['price']) {
  79. @@ -111,23 +148,38 @@ class ServicesController extends Controller
  80.              ->with('message', $this->translator->get('messages.service.created'));
  81.      }
  82.  
  83. -    public function edit(Service $service):View
  84. +    public function edit(Service $service, ScopeRepository $scopeRepo, Region $regions):View
  85.      {
  86.          $accreditations = $this->accreditations->get();
  87.          $onlineContentID = $service->online_content_id;
  88. +        $selectedRegion = $service->region_id;
  89. +        $regionChoices = [];
  90. +
  91. +        $serviceCategoryRegions = $this->categories->lists('region_id', 'id')->all();
  92. +        $serviceCategoryNames = $this->categories->lists('name', 'id')->all();
  93. +
  94. +        $regionToServiceObj = array();
  95. +        foreach ($serviceCategoryRegions as $id => $region) {
  96. +            $name = $serviceCategoryNames[$id];
  97. +            $regionToServiceObj[$region][$id] = $name;
  98. +        }
  99.  
  100.          return $this->view->make('admin.services.edit')
  101.              ->with('accreditations', $accreditations)
  102.              ->with('service', $service)
  103.              ->with('serviceCategories', $this->categories->lists('name', 'id')->all())
  104. -            ->with('defaultOnlineContentId', $onlineContentID);
  105. +            ->with('defaultOnlineContentId', $onlineContentID)
  106. +            ->with('current_region_choices', $regionChoices)
  107. +            ->with('selectedRegion', $selectedRegion)
  108. +            ->with('regions', $regions->lists('name', 'id'))
  109. +            ->with('regionToServiceObj', json_encode($regionToServiceObj));
  110. +
  111.      }
  112.  
  113.      public function update(ServiceFormRequest $request, Service $service):RedirectResponse
  114.      {
  115.          $inputs = $request->input();
  116.          $inputs['brand_id'] = $this->repository->getBrandId();
  117. -        $inputs['region_id'] = $this->repository->getRegionId();
  118.          $inputs['add_on'] = isset($inputs['add_on']); // Assume missing value is unchecked checkbox
  119.          $inputs['accreditations'] = $request->input('accreditations', []);
  120.  
  121.  
  122. diff --git a/app/resources/views/admin/services/form.blade.php b/app/resources/views/admin/services/form.blade.php
  123. index d352b6a..df7a560 100644
  124. --- a/app/resources/views/admin/services/form.blade.php
  125. +++ b/app/resources/views/admin/services/form.blade.php
  126. @@ -1,6 +1,14 @@
  127.  <legend>{{Lang::get('forms.services.title') }}</legend>
  128.  <p>{{Lang::get('forms.required_field_hint')}}</p>
  129.  
  130. +<div class="form-group" @if(isset($selectedRegion)) style="display:none;" @endif>
  131. +    {!! Form::label('region_id', Lang::get('forms.counters.region') . ':',  array('class' => 'col-sm-2 control-label')) !!}
  132. +            <div class="col-sm-4 @if ($errors->has('region_id')) has-error @endif">
  133. +                    {!! Form::select('region_id', $current_region_choices, null, array('class' => 'form-control')) !!}
  134. +                    @if ($errors->has('region_id')) <p class="help-block">{{ $errors->first('region_id') }}</p> @endif
  135. +            </div>
  136. +</div>
  137. +
  138.  @if(isset($service))
  139.      <div class="form-group">
  140.          <label class="col-sm-2 control-label">{{ Lang::get('forms.services.id') }}</label>
  141. @@ -108,3 +116,28 @@
  142.          {!! Form::submit($submit_text, array('id' => 'service_submit', 'role' => 'button', 'class' => 'btn btn-primary')) !!}
  143.      </div>
  144.  </div>
  145. +
  146. +<script type="text/javascript">
  147. +    $(document).ready(function() {
  148. +        function setServiceCatOptions() {
  149. +            var regionToServiceObj = {!! $regionToServiceObj !!};
  150. +            @if(isset($selectedRegion))
  151. +              var selectedRegion = {!! $selectedRegion !!};
  152. +            @else
  153. +              var selectedRegion = $('select#region_id').val();
  154. +            @endif
  155. +
  156. +            var selectHtml = '';
  157. +            for (var id in regionToServiceObj[selectedRegion]) {
  158. +                console.log('ID is ' + id + " and name is " + regionToServiceObj[selectedRegion][id] )
  159. +                selectHtml += '<option value ="' + id + '">' + regionToServiceObj[selectedRegion][id] + '</option>';
  160. +            };
  161. +            $('select#service_category_id').html(selectHtml);
  162. +        }
  163. +        $('select#region_id').change(function() {
  164. +            setServiceCatOptions();
  165. +        });
  166. +        setServiceCatOptions();
  167. +
  168. +    });
  169. +</script>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement