/** * Save the custom table values */ public function saveValuesAction() { $manager = Shopware()->Models(); $name = $this->Request()->getQuery('name'); $repository = $this->getRepository($name); $data = $this->Request()->getPost(); $data = isset($data[0]) ? array_pop($data) : $data; if ($repository === null) { $this->View()->assign(array( 'success' => false, 'message' => 'Model repository "' . $name . '" not found failure.' )); return; } if (!empty($data['id'])) { $model = $repository->find($data['id']); } else { unset($data['id']); $model = $repository->getClassName(); $model = new $model(); } switch ($name) { case 'customerGroup': if (isset($data['discounts'])) { $model->getDiscounts()->clear(); $manager->flush(); $discounts = array(); foreach ($data['discounts'] as $discountData) { $discount = new Shopware\Models\Customer\Discount(); $discount->setDiscount($discountData['discount']); $discount->setValue($discountData['value']); $discount->setGroup($model); $discounts[] = $discount; } $data['discounts'] = $discounts; } if(empty($data["mode"])) { $data["discount"] = 0; } break; case 'tax': if (isset($data['rules'])) { $model->getRules()->clear(); $rules = array(); foreach ($data['rules'] as $ruleData) { $rule = new Shopware\Models\Tax\Rule(); $rule->fromArray($ruleData); $rule->setGroup($model); $rules[] = $rule; } $data['rules'] = $rules; } break; case 'shop': if (isset($data['currencies'])) { $mappingRepository = $this->getRepository('currency'); $currencies = array(); foreach ($data['currencies'] as $currency) { $currencies[] = $mappingRepository->find($currency['id']); } $data['currencies'] = $currencies; } if (isset($data['pages'])) { $mappingRepository = $this->getRepository('pageGroup'); $currencies = array(); foreach ($data['pages'] as $currency) { $currencies[] = $mappingRepository->find($currency['id']); } $data['pages'] = $currencies; } foreach ($data as $key => $value) { if ($value === '' && !in_array($key, array('name', 'hosts'))) { $data[$key] = null; } } $fields = array( 'mainId' => 'main', 'templateId' => 'template', 'documentTemplateId' => 'documentTemplate', 'fallbackId' => 'fallback', 'localeId' => 'locale', 'currencyId' => 'currency', 'categoryId' => 'category', 'customerGroupId' => 'customerGroup' ); foreach ($fields as $field => $mapping) { if (isset($data[$field])) { $mappingRepository = $this->getRepository($mapping); $data[$mapping] = $mappingRepository->find($data[$field]); unset($data[$field]); } } break; case 'country': unset($data['area']); if (isset($data['areaId'])) { $mappingRepository = $this->getRepository('countryArea'); $data['area'] = $mappingRepository->find($data['areaId']); unset($data['areaId']); } break; case 'widgetView': if (isset($data['widgetId'])) { $mappingRepository = $this->getRepository('widget'); $data['widget'] = $mappingRepository->find($data['widgetId']); unset($data['widgetId']); } if (Shopware()->Auth()->hasIdentity()) { $mappingRepository = $this->getRepository('auth'); $authId = Shopware()->Auth()->getIdentity()->id; $data['auth'] = $mappingRepository->find($authId); } break; case 'pageGroup': if (isset($data['mappingId'])) { $mappingRepository = $this->getRepository('pageGroup'); $data['mapping'] = $mappingRepository->find($data['mappingId']); unset($data['mappingId']); } break; case 'document': if ($data['id']) { $elements = new \Doctrine\Common\Collections\ArrayCollection(); foreach ($data['elements'] as $element) { /** * @var $elementModel Shopware\Models\Document\Element */ $elementRepository = $this->getRepository('documentElement'); $elementModel = $elementRepository->find($element['id']); $elementModel->fromArray($element); $elements[] = $elementModel; } $data['elements'] = $elements; } else { $data['elements'] = $this->createDocumentElements($model); } break; default: break; } $model->fromArray($data); $manager->persist($model); $manager->flush(); if ($name === 'shop') { $this->fixTranslationTable(); } $this->View()->assign(array('success' => true)); }
/** * @param array $data * @param \Shopware\Models\Tax\Tax $model */ private function saveTaxRules(array $data, \Shopware\Models\Tax\Tax $model) { if (isset($data['rules'])) { $model->getRules()->clear(); $rules = array(); foreach ($data['rules'] as $ruleData) { $rule = new Shopware\Models\Tax\Rule(); $rule->fromArray($ruleData); $rule->setGroup($model); $rules[] = $rule; } $data['rules'] = $rules; $model->fromArray($data); $this->getModelManager()->persist($model); $this->getModelManager()->flush(); } $this->View()->assign(array('success' => true)); }