*/ class CustomerFamily extends BaseModule { /** @cont string */ const MODULE_DOMAIN = 'customerfamily'; /** @cont string */ const MESSAGE_DOMAIN = 'customerfamily'; /** @cont string */ const CUSTOMER_FAMILY_PARTICULAR = "particular"; /** @cont string */ const CUSTOMER_FAMILY_PROFESSIONAL = "professional"; /** * @param ConnectionInterface $con */ public function postActivation(ConnectionInterface $con = null) { try { CustomerFamilyQuery::create()->findOne(); } catch (\Exception $e) { $database = new Database($con); $database->insertSql(null, [__DIR__ . "/Config/thelia.sql"]); } //Generate the 2 defaults customer_family //Customer self::getCustomerFamilyByCode(self::CUSTOMER_FAMILY_PARTICULAR, "Particulier", "fr_FR"); self::getCustomerFamilyByCode(self::CUSTOMER_FAMILY_PARTICULAR, "Private individual", "en_US"); //Professional self::getCustomerFamilyByCode(self::CUSTOMER_FAMILY_PROFESSIONAL, "Professionnel", "fr_FR"); self::getCustomerFamilyByCode(self::CUSTOMER_FAMILY_PROFESSIONAL, "Professional", "en_US"); } public function update($currentVersion, $newVersion, ConnectionInterface $con = null) { $finder = Finder::create() ->name('*.sql') ->depth(0) ->sortByName() ->in(__DIR__ . DS . 'Config' . DS . 'update'); $database = new Database($con); /** @var \SplFileInfo $file */ foreach ($finder as $file) { if (version_compare($currentVersion, $file->getBasename('.sql'), '<')) { $database->insertSql(null, [$file->getPathname()]); } } } /** * @param $code * @param null $title * @param string $locale * * @return Model\CustomerFamily */ public static function getCustomerFamilyByCode($code, $title = null, $locale = "fr_FR") { if ($title == null) { $title = $code; } // Set 'particular' as default family if ($code == self::CUSTOMER_FAMILY_PARTICULAR) { $isDefault = 1; } else { $isDefault = 0; } /** @var CustomerFamilyModel $customerFamily */ if (null == $customerFamily = CustomerFamilyQuery::create() ->useCustomerFamilyI18nQuery() ->filterByLocale($locale) ->endUse() ->filterByCode($code) ->findOne() ) { //Be sure that you don't create it twice /** @var CustomerFamilyModel $customerF */ if (null != $customerF = CustomerFamilyQuery::create()->findOneByCode($code)) { $customerF ->setLocale($locale) ->setTitle($title) ->save(); } else { $customerFamily = new CustomerFamilyModel(); $customerFamily ->setCode($code) ->setIsDefault($isDefault) ->setLocale($locale) ->setTitle($title) ->save(); } } return $customerFamily; } }