/** * doActionAdd * * @return void */ protected function doActionAdd() { $fields = array('country_code', 'code', 'state'); $postData = \XLite\Core\Request::getInstance()->getData(); foreach ($postData as $k => $v) { if (in_array($k, $fields)) { $postData[$k] = trim($v); } } $country = \XLite\Core\Database::getRepo('XLite\\Model\\Country')->find($postData['country_code']); if (!$country) { $this->set('valid', false); } elseif (empty($postData['code'])) { $this->set('valid', false); } elseif (empty($postData['state'])) { $this->set('valid', false); } else { $found = false; foreach ($country->getStates() as $s) { if ($s->getCode() == $postData['code'] || $s->getState() == $postData['state']) { $found = true; break; } } if ($found) { $this->set('valid', false); } else { $state = new \XLite\Model\State(); $state->map($postData); $state->country = $country; \XLite\Core\Database::getEM()->persist($state); \XLite\Core\Database::getEM()->flush(); \XLite\Core\Database::getRepo('XLite\\Model\\Country')->cleanCache(); } } }