private function save(ShippingService $shippingService)
 {
     $ratesData = $this->getRatesFromRequest();
     $rates = array();
     if (!($errors = $this->isNotValid($this->request->get('name'), $ratesData))) {
         $shippingService->loadRequestData($this->request);
         $shippingService->setValueArrayByLang(array('name'), $this->application->getDefaultLanguageCode(), $this->application->getLanguageArray(true, false), $this->request);
         $shippingService->isFinal->set($this->request->get('isFinal'));
         $shippingService->setValueArrayByLang(array('description'), $this->application->getDefaultLanguageCode(), $this->application->getLanguageArray(true, false), $this->request);
         $shippingService->deliveryTimeMinDays->set($this->request->get('deliveryTimeMinDays'));
         $shippingService->deliveryTimeMaxDays->set($this->request->get('deliveryTimeMaxDays'));
         $shippingService->save();
         $shippingService->deleteShippingRates();
         $shippingServiceArray = $shippingService->toArray();
         $shippingServiceArray['newRates'] = array();
         foreach ($ratesData as $id => $data) {
             if (!$id) {
                 continue;
             }
             if ($shippingService->rangeType->get() == ShippingService::WEIGHT_BASED) {
                 $rangeStart = $data['weightRangeStart'];
                 $rangeEnd = $data['weightRangeEnd'];
             } else {
                 if ($shippingService->rangeType->get() == ShippingService::SUBTOTAL_BASED) {
                     $rangeStart = $data['subtotalRangeStart'];
                     $rangeEnd = $data['subtotalRangeEnd'];
                 }
             }
             $rate = ShippingRate::getNewInstance($shippingService, $rangeStart, $rangeEnd);
             foreach ($data as $var => $value) {
                 $rate->{$var}->set($value);
             }
             $rate->save();
             $shippingServiceArray['newRates'][$id] = $rate->getID();
         }
         return new JSONResponse(array('service' => $shippingServiceArray), 'success');
     } else {
         return new JSONResponse(array('errors' => $errors), 'failure', $this->translate('_could_note_save_shipping_service'));
     }
 }