Inital commit

This commit is contained in:
2020-11-19 15:36:28 +01:00
parent 71f32f83d3
commit 66ce4ee218
18077 changed files with 2166122 additions and 35184 deletions

View File

@@ -0,0 +1,54 @@
<?php
/*************************************************************************************/
/* This file is part of the Thelia package. */
/* */
/* Copyright (c) OpenStudio */
/* email : dev@thelia.net */
/* web : http://www.thelia.net */
/* */
/* For the full copyright and license information, please view the LICENSE.txt */
/* file that was distributed with this source code. */
/*************************************************************************************/
namespace TheliaMigrateCountry\Form;
use Symfony\Component\Validator\Constraints\Count;
use Thelia\Form\BaseForm;
/**
* Class CountryStateMigrationForm
* @package TheliaMigrateCountry\Form
*
* @author Julien Chanséaume <julien@thelia.net>
*/
class CountryStateMigrationForm extends BaseForm
{
/**
* @inheritdocs
*/
protected function buildForm()
{
$this->formBuilder
->add(
'migrations',
'collection',
[
"type" => "country_state_migration",
"allow_add" => true,
"required" => true,
"cascade_validation" => true,
"constraints" => array(
new Count(["min" => 1]),
),
]
)
;
}
public function getName()
{
return "thelia_country_state_migration";
}
}

View File

@@ -0,0 +1,114 @@
<?php
/*************************************************************************************/
/* This file is part of the Thelia package. */
/* */
/* Copyright (c) OpenStudio */
/* email : dev@thelia.net */
/* web : http://www.thelia.net */
/* */
/* For the full copyright and license information, please view the LICENSE.txt */
/* file that was distributed with this source code. */
/*************************************************************************************/
namespace TheliaMigrateCountry\Form\Type;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\Validator\Constraints\Callback;
use Symfony\Component\Validator\Context\ExecutionContextInterface;
use Thelia\Core\Form\Type\AbstractTheliaType;
use Thelia\Core\Translation\Translator;
use Thelia\Model\StateQuery;
/**
* Class CountryStateMigrationType
* @package TheliaMigrateCountry\Form\Type
* @author Julien Chanséaume <julien@thelia.net>
*/
class CountryStateMigrationType extends AbstractTheliaType
{
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(
[
"cascade_validation" => true,
"constraints" => array(
new Callback([
"methods" => array(
[$this, "checkStateId"],
),
]),
),
]
);
}
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add("migrate", "checkbox")
->add(
"country",
"country_id"
)
->add(
"new_country",
"country_id"
)
->add(
"new_state",
"state_id",
[
"constraints" => [],
]
)
;
}
public function checkStateId($value, ExecutionContextInterface $context)
{
if ($value['migrate']) {
if (null !== $state = StateQuery::create()->findPk($value['new_state'])) {
if ($state->getCountryId() !== $value['new_country']) {
$context->addViolation(
Translator::getInstance()->trans(
"The state id '%id' does not belong to country id '%id_country'",
[
'%id' => $value['new_state'],
'%id_country' => $value['new_country']
]
)
);
}
} else {
$context->addViolation(
Translator::getInstance()->trans(
"The state id '%id' doesn't exist",
['%id' => $value['new_state']]
)
);
}
}
}
private function getRowData(ExecutionContextInterface $context)
{
$propertyPath = $context->getPropertyPath();
$data = $this->getRowData($context);
}
/**
* Returns the name of this type.
*
* @return string The name of this type
*/
public function getName()
{
return 'country_state_migration';
}
}