Release 2.43 (#5694)
This commit is contained in:
@@ -36,7 +36,6 @@ use Symfony\Component\Security\Http\Attribute\IsGranted;
|
||||
final class ActivityController extends BaseApiController
|
||||
{
|
||||
public const GROUPS_ENTITY = ['Default', 'Entity', 'Activity', 'Activity_Entity'];
|
||||
public const GROUPS_FORM = ['Default', 'Entity', 'Activity'];
|
||||
public const GROUPS_COLLECTION = ['Default', 'Collection', 'Activity'];
|
||||
public const GROUPS_RATE = ['Default', 'Entity', 'Activity_Rate'];
|
||||
|
||||
@@ -130,8 +129,7 @@ final class ActivityController extends BaseApiController
|
||||
throw $this->createAccessDeniedException('User cannot create activities');
|
||||
}
|
||||
|
||||
$activity = new Activity();
|
||||
$this->activityService->loadMetaFields($activity);
|
||||
$activity = $this->activityService->createNewActivity();
|
||||
|
||||
$form = $this->createForm(ActivityApiEditForm::class, $activity, [
|
||||
'include_budget' => $this->isGranted('budget', $activity),
|
||||
@@ -150,7 +148,7 @@ final class ActivityController extends BaseApiController
|
||||
}
|
||||
|
||||
$view = new View($form);
|
||||
$view->getContext()->setGroups(self::GROUPS_FORM);
|
||||
$view->getContext()->setGroups(self::GROUPS_ENTITY);
|
||||
|
||||
return $this->viewHandler->handle($view);
|
||||
}
|
||||
@@ -177,7 +175,7 @@ final class ActivityController extends BaseApiController
|
||||
|
||||
if (false === $form->isValid()) {
|
||||
$view = new View($form, Response::HTTP_OK);
|
||||
$view->getContext()->setGroups(self::GROUPS_FORM);
|
||||
$view->getContext()->setGroups(self::GROUPS_ENTITY);
|
||||
|
||||
return $this->viewHandler->handle($view);
|
||||
}
|
||||
|
||||
@@ -36,7 +36,6 @@ use Symfony\Component\Security\Http\Attribute\IsGranted;
|
||||
final class CustomerController extends BaseApiController
|
||||
{
|
||||
public const GROUPS_ENTITY = ['Default', 'Entity', 'Customer', 'Customer_Entity'];
|
||||
public const GROUPS_FORM = ['Default', 'Entity', 'Customer'];
|
||||
public const GROUPS_COLLECTION = ['Default', 'Collection', 'Customer'];
|
||||
public const GROUPS_RATE = ['Default', 'Entity', 'Customer_Rate'];
|
||||
|
||||
@@ -139,7 +138,7 @@ final class CustomerController extends BaseApiController
|
||||
}
|
||||
|
||||
$view = new View($form);
|
||||
$view->getContext()->setGroups(self::GROUPS_FORM);
|
||||
$view->getContext()->setGroups(self::GROUPS_ENTITY);
|
||||
|
||||
return $this->viewHandler->handle($view);
|
||||
}
|
||||
@@ -166,7 +165,7 @@ final class CustomerController extends BaseApiController
|
||||
|
||||
if (false === $form->isValid()) {
|
||||
$view = new View($form, Response::HTTP_OK);
|
||||
$view->getContext()->setGroups(self::GROUPS_FORM);
|
||||
$view->getContext()->setGroups(self::GROUPS_ENTITY);
|
||||
|
||||
return $this->viewHandler->handle($view);
|
||||
}
|
||||
|
||||
@@ -38,7 +38,6 @@ use Symfony\Component\Validator\Constraints;
|
||||
final class ProjectController extends BaseApiController
|
||||
{
|
||||
public const GROUPS_ENTITY = ['Default', 'Entity', 'Project', 'Project_Entity'];
|
||||
public const GROUPS_FORM = ['Default', 'Entity', 'Project'];
|
||||
public const GROUPS_COLLECTION = ['Default', 'Collection', 'Project'];
|
||||
public const GROUPS_RATE = ['Default', 'Entity', 'Project_Rate'];
|
||||
|
||||
@@ -194,7 +193,7 @@ final class ProjectController extends BaseApiController
|
||||
}
|
||||
|
||||
$view = new View($form);
|
||||
$view->getContext()->setGroups(self::GROUPS_FORM);
|
||||
$view->getContext()->setGroups(self::GROUPS_ENTITY);
|
||||
|
||||
return $this->viewHandler->handle($view);
|
||||
}
|
||||
@@ -223,7 +222,7 @@ final class ProjectController extends BaseApiController
|
||||
|
||||
if (false === $form->isValid()) {
|
||||
$view = new View($form, Response::HTTP_OK);
|
||||
$view->getContext()->setGroups(self::GROUPS_FORM);
|
||||
$view->getContext()->setGroups(self::GROUPS_ENTITY);
|
||||
|
||||
return $this->viewHandler->handle($view);
|
||||
}
|
||||
|
||||
@@ -100,7 +100,7 @@ final class ResetTestCommand extends AbstractResetCommand
|
||||
$user2->setAvatar('https://www.gravatar.com/avatar/00000000000000000000000000000000?d=retro&f=y');
|
||||
$user2->setEnabled(true);
|
||||
$user2->setRoles(['ROLE_USER']);
|
||||
$user2->setUserIdentifier('john_user');
|
||||
$user2->setUserIdentifier(UserFixtures::USERNAME_USER);
|
||||
$user2->setEmail('john_user@example.com');
|
||||
$token2 = new AccessToken($user2, UserFixtures::DEFAULT_API_TOKEN . '_user');
|
||||
$token2->setName('Test fixture');
|
||||
@@ -118,41 +118,41 @@ final class ResetTestCommand extends AbstractResetCommand
|
||||
$token3 = new AccessToken($user3, UserFixtures::DEFAULT_API_TOKEN . '_inactive');
|
||||
$token3->setName('Test fixture');
|
||||
|
||||
$user4 = new User();
|
||||
$user4->setPreferenceValue(UserPreference::HOURLY_RATE, 35);
|
||||
$user4->setAlias('Tony Maier');
|
||||
$user4->setRegisteredAt(new \DateTime('2018-02-06 23:28:57'));
|
||||
$user4->setTitle('Head of Development');
|
||||
$user4->setAvatar('https://en.gravatar.com/userimage/3533186/bf2163b1dd23f3107a028af0195624e9.jpeg');
|
||||
$user4->setEnabled(true);
|
||||
$user4->setRoles(['ROLE_TEAMLEAD']);
|
||||
$user4->setUserIdentifier('tony_teamlead');
|
||||
$user4->setEmail('tony_teamlead@example.com');
|
||||
$token4 = new AccessToken($user4, UserFixtures::DEFAULT_API_TOKEN . '_teamlead');
|
||||
$userTeamlead = new User();
|
||||
$userTeamlead->setPreferenceValue(UserPreference::HOURLY_RATE, 35);
|
||||
$userTeamlead->setAlias('Tony Maier');
|
||||
$userTeamlead->setRegisteredAt(new \DateTime('2018-02-06 23:28:57'));
|
||||
$userTeamlead->setTitle('Head of Development');
|
||||
$userTeamlead->setAvatar('https://en.gravatar.com/userimage/3533186/bf2163b1dd23f3107a028af0195624e9.jpeg');
|
||||
$userTeamlead->setEnabled(true);
|
||||
$userTeamlead->setRoles(['ROLE_TEAMLEAD']);
|
||||
$userTeamlead->setUserIdentifier(UserFixtures::USERNAME_TEAMLEAD);
|
||||
$userTeamlead->setEmail('tony_teamlead@example.com');
|
||||
$token4 = new AccessToken($userTeamlead, UserFixtures::DEFAULT_API_TOKEN . '_teamlead');
|
||||
$token4->setName('Test fixture');
|
||||
|
||||
$user5 = new User();
|
||||
$user5->setPreferenceValue(UserPreference::HOURLY_RATE, 81);
|
||||
$user5->setAlias('Anna Smith');
|
||||
$user5->setRegisteredAt(new \DateTime('2018-02-06 23:28:57'));
|
||||
$user5->setTitle('Administrator');
|
||||
$user5->setEnabled(true);
|
||||
$user5->setRoles(['ROLE_ADMIN']);
|
||||
$user5->setUserIdentifier('anna_admin');
|
||||
$user5->setEmail('anna_admin@example.com');
|
||||
$token5 = new AccessToken($user5, UserFixtures::DEFAULT_API_TOKEN . '_admin');
|
||||
$userAdmin = new User();
|
||||
$userAdmin->setPreferenceValue(UserPreference::HOURLY_RATE, 81);
|
||||
$userAdmin->setAlias('Anna Smith');
|
||||
$userAdmin->setRegisteredAt(new \DateTime('2018-02-06 23:28:57'));
|
||||
$userAdmin->setTitle('Administrator');
|
||||
$userAdmin->setEnabled(true);
|
||||
$userAdmin->setRoles(['ROLE_ADMIN']);
|
||||
$userAdmin->setUserIdentifier(UserFixtures::USERNAME_ADMIN);
|
||||
$userAdmin->setEmail('anna_admin@example.com');
|
||||
$token5 = new AccessToken($userAdmin, UserFixtures::DEFAULT_API_TOKEN . '_admin');
|
||||
$token5->setName('Test fixture');
|
||||
|
||||
$user6 = new User();
|
||||
$user6->setPreferenceValue(UserPreference::HOURLY_RATE, 46);
|
||||
$user6->setRegisteredAt(new \DateTime('2018-02-06 23:28:57'));
|
||||
$user6->setTitle('Super Administrator');
|
||||
$user6->setAvatar('/bundles/avanzuadmintheme/img/avatar.png');
|
||||
$user6->setEnabled(true);
|
||||
$user6->setRoles(['ROLE_SUPER_ADMIN']);
|
||||
$user6->setUserIdentifier('susan_super');
|
||||
$user6->setEmail('susan_super@example.com');
|
||||
$token6 = new AccessToken($user6, UserFixtures::DEFAULT_API_TOKEN . '_super');
|
||||
$userSuperAdmin = new User();
|
||||
$userSuperAdmin->setPreferenceValue(UserPreference::HOURLY_RATE, 46);
|
||||
$userSuperAdmin->setRegisteredAt(new \DateTime('2018-02-06 23:28:57'));
|
||||
$userSuperAdmin->setTitle('Super Administrator');
|
||||
$userSuperAdmin->setAvatar('/bundles/avanzuadmintheme/img/avatar.png');
|
||||
$userSuperAdmin->setEnabled(true);
|
||||
$userSuperAdmin->setRoles(['ROLE_SUPER_ADMIN']);
|
||||
$userSuperAdmin->setUserIdentifier(UserFixtures::USERNAME_SUPER_ADMIN);
|
||||
$userSuperAdmin->setEmail('susan_super@example.com');
|
||||
$token6 = new AccessToken($userSuperAdmin, UserFixtures::DEFAULT_API_TOKEN . '_super');
|
||||
$token6->setName('Test fixture');
|
||||
|
||||
$user7 = new User();
|
||||
@@ -180,9 +180,9 @@ final class ResetTestCommand extends AbstractResetCommand
|
||||
[$user1, $token1],
|
||||
[$user2, $token2],
|
||||
[$user3, $token3],
|
||||
[$user4, $token4],
|
||||
[$user5, $token5],
|
||||
[$user6, $token6],
|
||||
[$userTeamlead, $token4],
|
||||
[$userAdmin, $token5],
|
||||
[$userSuperAdmin, $token6],
|
||||
[$user7, $token7],
|
||||
[$user8, $token8],
|
||||
];
|
||||
|
||||
@@ -17,11 +17,11 @@ final class Constants
|
||||
/**
|
||||
* The current release version
|
||||
*/
|
||||
public const VERSION = '2.42.0';
|
||||
public const VERSION = '2.43.0';
|
||||
/**
|
||||
* The current release: major * 10000 + minor * 100 + patch
|
||||
*/
|
||||
public const VERSION_ID = 24200;
|
||||
public const VERSION_ID = 24300;
|
||||
/**
|
||||
* The software name
|
||||
*/
|
||||
|
||||
@@ -96,7 +96,7 @@ class Customer implements EntityWithMetaFields, EntityWithBudget, CreatedAt
|
||||
#[Exporter\Expose(label: 'contact')]
|
||||
private ?string $contact = null;
|
||||
/**
|
||||
* Unstructured address, better use the fields: address_line1-3, postcode, city, country
|
||||
* Unstructured address, better use the fields: addressLine1-3, postcode, city, country
|
||||
*/
|
||||
#[ORM\Column(name: 'address', type: Types::TEXT, nullable: true)]
|
||||
#[Serializer\Expose]
|
||||
|
||||
@@ -10,7 +10,22 @@
|
||||
namespace App\Form\API;
|
||||
|
||||
use App\Form\ActivityEditForm;
|
||||
use Symfony\Component\Form\AbstractType;
|
||||
use Symfony\Component\OptionsResolver\OptionsResolver;
|
||||
|
||||
final class ActivityApiEditForm extends ActivityEditForm
|
||||
final class ActivityApiEditForm extends AbstractType
|
||||
{
|
||||
public function getParent(): string
|
||||
{
|
||||
return ActivityEditForm::class;
|
||||
}
|
||||
|
||||
public function configureOptions(OptionsResolver $resolver): void
|
||||
{
|
||||
// overwritten, so the docs show these fields
|
||||
$resolver->setDefaults([
|
||||
'include_budget' => true,
|
||||
'include_time' => true,
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,7 +10,22 @@
|
||||
namespace App\Form\API;
|
||||
|
||||
use App\Form\CustomerEditForm;
|
||||
use Symfony\Component\Form\AbstractType;
|
||||
use Symfony\Component\OptionsResolver\OptionsResolver;
|
||||
|
||||
final class CustomerApiEditForm extends CustomerEditForm
|
||||
final class CustomerApiEditForm extends AbstractType
|
||||
{
|
||||
public function getParent(): string
|
||||
{
|
||||
return CustomerEditForm::class;
|
||||
}
|
||||
|
||||
public function configureOptions(OptionsResolver $resolver): void
|
||||
{
|
||||
// overwritten, so the docs show these fields
|
||||
$resolver->setDefaults([
|
||||
'include_budget' => true,
|
||||
'include_time' => true,
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,7 +10,22 @@
|
||||
namespace App\Form\API;
|
||||
|
||||
use App\Form\ProjectEditForm;
|
||||
use Symfony\Component\Form\AbstractType;
|
||||
use Symfony\Component\OptionsResolver\OptionsResolver;
|
||||
|
||||
final class ProjectApiEditForm extends ProjectEditForm
|
||||
final class ProjectApiEditForm extends AbstractType
|
||||
{
|
||||
public function getParent(): string
|
||||
{
|
||||
return ProjectEditForm::class;
|
||||
}
|
||||
|
||||
public function configureOptions(OptionsResolver $resolver): void
|
||||
{
|
||||
// overwritten, so the docs show these fields
|
||||
$resolver->setDefaults([
|
||||
'include_budget' => true,
|
||||
'include_time' => true,
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -33,7 +33,7 @@ class CustomerEditForm extends AbstractType
|
||||
|
||||
public function buildForm(FormBuilderInterface $builder, array $options): void
|
||||
{
|
||||
$isNew = false;
|
||||
$isNew = true;
|
||||
$hasAddress = false;
|
||||
|
||||
if (isset($options['data'])) {
|
||||
@@ -54,6 +54,9 @@ class CustomerEditForm extends AbstractType
|
||||
->add('number', TextType::class, [
|
||||
'label' => 'number',
|
||||
'required' => false,
|
||||
'attr' => [
|
||||
'maxlength' => 50,
|
||||
],
|
||||
])
|
||||
->add('comment', TextareaType::class, [
|
||||
'label' => 'description',
|
||||
@@ -83,19 +86,19 @@ class CustomerEditForm extends AbstractType
|
||||
}
|
||||
|
||||
$builder
|
||||
->add('address_line1', TextType::class, [
|
||||
->add('addressLine1', TextType::class, [
|
||||
'label' => 'address',
|
||||
'required' => false,
|
||||
])
|
||||
->add('address_line2', TextType::class, [
|
||||
->add('addressLine2', TextType::class, [
|
||||
'label' => false,
|
||||
'required' => false,
|
||||
])
|
||||
->add('address_line3', TextType::class, [
|
||||
->add('addressLine3', TextType::class, [
|
||||
'label' => false,
|
||||
'required' => false,
|
||||
])
|
||||
->add('postcode', TextType::class, [
|
||||
->add('postCode', TextType::class, [
|
||||
'label' => 'postcode',
|
||||
'required' => false,
|
||||
])
|
||||
|
||||
@@ -31,6 +31,9 @@ trait EntityFormTrait
|
||||
|
||||
if ($showMoney) {
|
||||
$builder->add('budget', MoneyType::class, [
|
||||
'documentation' => [
|
||||
'description' => 'The money budget',
|
||||
],
|
||||
'empty_data' => '0.00',
|
||||
'label' => 'budget',
|
||||
'required' => false,
|
||||
|
||||
@@ -29,7 +29,7 @@ class ProjectEditForm extends AbstractType
|
||||
public function buildForm(FormBuilderInterface $builder, array $options): void
|
||||
{
|
||||
$customer = null;
|
||||
$isNew = false;
|
||||
$isNew = true;
|
||||
$options['currency'] = null;
|
||||
$customerOptions = [];
|
||||
|
||||
|
||||
@@ -31,6 +31,9 @@ final class BudgetType extends AbstractType
|
||||
'choices' => [
|
||||
'budgetType_month' => self::TYPE_MONTH,
|
||||
],
|
||||
'documentation' => [
|
||||
'description' => 'The type of budget. Only submit if you want to use a monthly budget.',
|
||||
],
|
||||
]);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user