unify access to custom fields (#3106)

This commit is contained in:
Kevin Papst
2022-01-28 00:04:58 +01:00
committed by GitHub
parent 7a6fab8624
commit 4cb0ac37a6
16 changed files with 132 additions and 9 deletions

View File

@@ -261,6 +261,20 @@ class Activity implements EntityWithMetaFields, EntityWithBudget
return null;
}
/**
* @param string $name
* @return bool|int|string|null
*/
public function getMetaFieldValue(string $name)
{
$field = $this->getMetaField($name);
if ($field === null) {
return null;
}
return $field->getValue();
}
public function setMetaField(MetaTableTypeInterface $meta): EntityWithMetaFields
{
if (null === ($current = $this->getMetaField($meta->getName()))) {

View File

@@ -531,6 +531,20 @@ class Customer implements EntityWithMetaFields, EntityWithBudget
return null;
}
/**
* @param string $name
* @return bool|int|string|null
*/
public function getMetaFieldValue(string $name)
{
$field = $this->getMetaField($name);
if ($field === null) {
return null;
}
return $field->getValue();
}
public function setMetaField(MetaTableTypeInterface $meta): EntityWithMetaFields
{
if (null === ($current = $this->getMetaField($meta->getName()))) {

View File

@@ -441,6 +441,20 @@ class Invoice implements EntityWithMetaFields
return null;
}
/**
* @param string $name
* @return bool|int|string|null
*/
public function getMetaFieldValue(string $name)
{
$field = $this->getMetaField($name);
if ($field === null) {
return null;
}
return $field->getValue();
}
public function setMetaField(MetaTableTypeInterface $meta): EntityWithMetaFields
{
if (null === ($current = $this->getMetaField($meta->getName()))) {

View File

@@ -29,7 +29,7 @@ interface MetaTableTypeInterface
public function setName(string $name): MetaTableTypeInterface;
/**
* @return mixed|null
* @return int|bool|string|null
*/
public function getValue();

View File

@@ -109,7 +109,7 @@ trait MetaTableTypeTrait
}
/**
* @return mixed|null
* @return int|bool|string|null
*/
public function getValue()
{

View File

@@ -425,6 +425,20 @@ class Project implements EntityWithMetaFields, EntityWithBudget
return null;
}
/**
* @param string $name
* @return bool|int|string|null
*/
public function getMetaFieldValue(string $name)
{
$field = $this->getMetaField($name);
if ($field === null) {
return null;
}
return $field->getValue();
}
public function setMetaField(MetaTableTypeInterface $meta): EntityWithMetaFields
{
if (null === ($current = $this->getMetaField($meta->getName()))) {

View File

@@ -719,6 +719,20 @@ class Timesheet implements EntityWithMetaFields, ExportItemInterface
return null;
}
/**
* @param string $name
* @return bool|int|string|null
*/
public function getMetaFieldValue(string $name)
{
$field = $this->getMetaField($name);
if ($field === null) {
return null;
}
return $field->getValue();
}
public function setMetaField(MetaTableTypeInterface $meta): EntityWithMetaFields
{
if (null === ($current = $this->getMetaField($meta->getName()))) {

View File

@@ -537,7 +537,7 @@ class User implements UserInterface, EquatableInterface, \Serializable
/**
* @param string $name
* @param mixed $default
* @return bool|int|null|string
* @return bool|int|string|null
*/
public function getPreferenceValue(string $name, $default = null)
{
@@ -549,6 +549,15 @@ class User implements UserInterface, EquatableInterface, \Serializable
return $preference->getValue();
}
/**
* @param string $name
* @return bool|int|string|null
*/
public function getMetaFieldValue(string $name)
{
return $this->getPreferenceValue($name);
}
/**
* @param UserPreference $preference
* @return User

View File

@@ -94,13 +94,22 @@ final class InvoiceItem
public function getAdditionalField(string $name, $default = null)
{
if (isset($this->additionalFields[$name])) {
if (\array_key_exists($name, $this->additionalFields)) {
return $this->additionalFields[$name];
}
return $default;
}
public function getMetaFieldValue(string $field)
{
if (\array_key_exists($field, $this->additionalFields)) {
return $this->additionalFields[$field];
}
return null;
}
public function getActivity(): ?Activity
{
return $this->activity;

View File

@@ -38,6 +38,7 @@ class ActivityTest extends AbstractEntityTest
$this->assertInstanceOf(Collection::class, $sut->getMetaFields());
$this->assertEquals(0, $sut->getMetaFields()->count());
$this->assertNull($sut->getMetaField('foo'));
$this->assertNull($sut->getMetaFieldValue('foo'));
$this->assertInstanceOf(Collection::class, $sut->getTeams());
}
@@ -77,12 +78,14 @@ class ActivityTest extends AbstractEntityTest
{
$sut = new Activity();
$meta = new ActivityMeta();
$meta->setName('foo')->setValue('bar')->setType('test');
$meta->setName('foo')->setValue('bar2')->setType('test');
$this->assertInstanceOf(Activity::class, $sut->setMetaField($meta));
self::assertEquals(1, $sut->getMetaFields()->count());
$result = $sut->getMetaField('foo');
self::assertSame($result, $meta);
self::assertEquals('test', $result->getType());
self::assertEquals('bar2', $result->getValue());
self::assertEquals('bar2', $sut->getMetaFieldValue('foo'));
$meta2 = new ActivityMeta();
$meta2->setName('foo')->setValue('bar')->setType('test2');
@@ -93,6 +96,7 @@ class ActivityTest extends AbstractEntityTest
$result = $sut->getMetaField('foo');
self::assertSame($result, $meta);
self::assertEquals('test2', $result->getType());
self::assertEquals('bar2', $sut->getMetaFieldValue('foo'));
$sut->setMetaField((new ActivityMeta())->setName('blub')->setIsVisible(true));
$sut->setMetaField((new ActivityMeta())->setName('blab')->setIsVisible(true));
@@ -190,6 +194,7 @@ class ActivityTest extends AbstractEntityTest
foreach ($sut->getMetaFields() as $metaField) {
$cloneMeta = $clone->getMetaField($metaField->getName());
self::assertEquals($cloneMeta->getValue(), $metaField->getValue());
self::assertEquals($metaField->getValue(), $clone->getMetaFieldValue($metaField->getName()));
}
self::assertEquals($clone->getBudget(), $sut->getBudget());
self::assertEquals($clone->getTimeBudget(), $sut->getTimeBudget());

View File

@@ -51,6 +51,7 @@ class CustomerTest extends AbstractEntityTest
self::assertInstanceOf(Collection::class, $sut->getMetaFields());
self::assertEquals(0, $sut->getMetaFields()->count());
self::assertNull($sut->getMetaField('foo'));
self::assertNull($sut->getMetaFieldValue('foo'));
self::assertInstanceOf(Collection::class, $sut->getTeams());
self::assertEquals(0, $sut->getTeams()->count());
}
@@ -117,12 +118,14 @@ class CustomerTest extends AbstractEntityTest
{
$sut = new Customer();
$meta = new CustomerMeta();
$meta->setName('foo')->setValue('bar')->setType('test');
$meta->setName('foo')->setValue('bar2')->setType('test');
self::assertInstanceOf(Customer::class, $sut->setMetaField($meta));
self::assertEquals(1, $sut->getMetaFields()->count());
$result = $sut->getMetaField('foo');
self::assertSame($result, $meta);
self::assertEquals('test', $result->getType());
self::assertEquals('bar2', $result->getValue());
self::assertEquals('bar2', $sut->getMetaFieldValue('foo'));
$meta2 = new CustomerMeta();
$meta2->setName('foo')->setValue('bar')->setType('test2');
@@ -133,6 +136,7 @@ class CustomerTest extends AbstractEntityTest
$result = $sut->getMetaField('foo');
self::assertSame($result, $meta);
self::assertEquals('test2', $result->getType());
self::assertEquals('bar2', $sut->getMetaFieldValue('foo'));
$sut->setMetaField((new CustomerMeta())->setName('blub')->setIsVisible(true));
$sut->setMetaField((new CustomerMeta())->setName('blab')->setIsVisible(true));
@@ -234,6 +238,7 @@ class CustomerTest extends AbstractEntityTest
foreach ($sut->getMetaFields() as $metaField) {
$cloneMeta = $clone->getMetaField($metaField->getName());
self::assertEquals($cloneMeta->getValue(), $metaField->getValue());
self::assertEquals($metaField->getValue(), $clone->getMetaFieldValue($metaField->getName()));
}
self::assertEquals($clone->getBudget(), $sut->getBudget());
self::assertEquals($clone->getTimeBudget(), $sut->getTimeBudget());

View File

@@ -249,13 +249,18 @@ class InvoiceTest extends TestCase
public function testMetaFields()
{
$sut = new Invoice();
self::assertNull($sut->getMetaFieldValue('foo'));
$meta = new InvoiceMeta();
$meta->setName('foo')->setValue('bar')->setType('test');
$meta->setName('foo')->setValue('bar2')->setType('test');
self::assertInstanceOf(Invoice::class, $sut->setMetaField($meta));
self::assertEquals(1, $sut->getMetaFields()->count());
$result = $sut->getMetaField('foo');
self::assertSame($result, $meta);
self::assertEquals('test', $result->getType());
self::assertEquals('bar2', $result->getValue());
self::assertEquals('bar2', $sut->getMetaFieldValue('foo'));
$meta2 = new InvoiceMeta();
$meta2->setName('foo')->setValue('bar')->setType('test2');
@@ -266,6 +271,7 @@ class InvoiceTest extends TestCase
$result = $sut->getMetaField('foo');
self::assertSame($result, $meta);
self::assertEquals('test2', $result->getType());
self::assertEquals('bar2', $sut->getMetaFieldValue('foo'));
$sut->setMetaField((new InvoiceMeta())->setName('blub')->setIsVisible(true));
$sut->setMetaField((new InvoiceMeta())->setName('blab')->setIsVisible(true));

View File

@@ -41,6 +41,7 @@ class ProjectTest extends AbstractEntityTest
self::assertInstanceOf(Collection::class, $sut->getMetaFields());
self::assertEquals(0, $sut->getMetaFields()->count());
self::assertNull($sut->getMetaField('foo'));
self::assertNull($sut->getMetaFieldValue('foo'));
self::assertInstanceOf(Collection::class, $sut->getTeams());
self::assertEquals(0, $sut->getTeams()->count());
self::assertTrue($sut->isVisibleAtDate(new \DateTime()));
@@ -101,12 +102,14 @@ class ProjectTest extends AbstractEntityTest
{
$sut = new Project();
$meta = new ProjectMeta();
$meta->setName('foo')->setValue('bar')->setType('test');
$meta->setName('foo')->setValue('bar2')->setType('test');
self::assertInstanceOf(Project::class, $sut->setMetaField($meta));
self::assertEquals(1, $sut->getMetaFields()->count());
$result = $sut->getMetaField('foo');
self::assertSame($result, $meta);
self::assertEquals('test', $result->getType());
self::assertEquals('bar2', $result->getValue());
self::assertEquals('bar2', $sut->getMetaFieldValue('foo'));
$meta2 = new ProjectMeta();
$meta2->setName('foo')->setValue('bar')->setType('test2');
@@ -117,6 +120,7 @@ class ProjectTest extends AbstractEntityTest
$result = $sut->getMetaField('foo');
self::assertSame($result, $meta);
self::assertEquals('test2', $result->getType());
self::assertEquals('bar2', $sut->getMetaFieldValue('foo'));
$sut->setMetaField((new ProjectMeta())->setName('blub')->setIsVisible(true));
$sut->setMetaField((new ProjectMeta())->setName('blab')->setIsVisible(true));
@@ -218,6 +222,7 @@ class ProjectTest extends AbstractEntityTest
foreach ($sut->getMetaFields() as $metaField) {
$cloneMeta = $clone->getMetaField($metaField->getName());
self::assertEquals($cloneMeta->getValue(), $metaField->getValue());
self::assertEquals($metaField->getValue(), $clone->getMetaFieldValue($metaField->getName()));
}
self::assertEquals($clone->getBudget(), $sut->getBudget());
self::assertEquals($clone->getTimeBudget(), $sut->getTimeBudget());

View File

@@ -55,6 +55,7 @@ class TimesheetTest extends TestCase
self::assertInstanceOf(Collection::class, $sut->getMetaFields());
self::assertEquals(0, $sut->getMetaFields()->count());
self::assertNull($sut->getMetaField('foo'));
self::assertNull($sut->getMetaFieldValue('foo'));
}
public function testValueCanBeNull()
@@ -120,12 +121,14 @@ class TimesheetTest extends TestCase
{
$sut = new Timesheet();
$meta = new TimesheetMeta();
$meta->setName('foo')->setValue('bar')->setType('test');
$meta->setName('foo')->setValue('bar2')->setType('test');
self::assertInstanceOf(Timesheet::class, $sut->setMetaField($meta));
self::assertEquals(1, $sut->getMetaFields()->count());
$result = $sut->getMetaField('foo');
self::assertSame($result, $meta);
self::assertEquals('test', $result->getType());
self::assertEquals('bar2', $result->getValue());
self::assertEquals('bar2', $sut->getMetaFieldValue('foo'));
$meta2 = new TimesheetMeta();
$meta2->setName('foo')->setValue('bar')->setType('test2');
@@ -136,6 +139,7 @@ class TimesheetTest extends TestCase
$result = $sut->getMetaField('foo');
self::assertSame($result, $meta);
self::assertEquals('test2', $result->getType());
self::assertEquals('bar2', $sut->getMetaFieldValue('foo'));
$sut->setMetaField((new TimesheetMeta())->setName('blub')->setIsVisible(true));
$sut->setMetaField((new TimesheetMeta())->setName('blab')->setIsVisible(true));
@@ -198,6 +202,7 @@ class TimesheetTest extends TestCase
foreach ($sut->getMetaFields() as $metaField) {
$cloneMeta = $clone->getMetaField($metaField->getName());
self::assertEquals($cloneMeta->getValue(), $metaField->getValue());
self::assertEquals($metaField->getValue(), $clone->getMetaFieldValue($metaField->getName()));
}
self::assertEquals($clone->getTags(), $sut->getTags());
self::assertEquals($clone->getTags(), $sut->getTags());

View File

@@ -137,6 +137,7 @@ class UserTest extends TestCase
$user = new User();
self::assertNull($user->getPreference('test'));
self::assertNull($user->getPreferenceValue('test'));
self::assertNull($user->getMetaFieldValue('test'));
self::assertEquals('foo', $user->getPreferenceValue('test', 'foo'));
$preference = new UserPreference();
@@ -145,14 +146,18 @@ class UserTest extends TestCase
->setValue('foobar');
$user->addPreference($preference);
self::assertEquals('foobar', $user->getPreferenceValue('test', 'foo'));
self::assertEquals('foobar', $user->getMetaFieldValue('test'));
self::assertEquals($preference, $user->getPreference('test'));
$user->setPreferenceValue('test', 'Hello World');
self::assertEquals('Hello World', $user->getPreferenceValue('test', 'foo'));
self::assertEquals('Hello World', $user->getMetaFieldValue('test'));
self::assertNull($user->getPreferenceValue('test2'));
self::assertNull($user->getMetaFieldValue('test2'));
$user->setPreferenceValue('test2', 'I like rain');
self::assertEquals('I like rain', $user->getPreferenceValue('test2'));
self::assertEquals('I like rain', $user->getMetaFieldValue('test2'));
$user->setPreferenceValue('theme.layout', 'boxed');
self::assertTrue($user->isSmallLayout());

View File

@@ -31,9 +31,13 @@ class InvoiceItemTest extends TestCase
self::assertIsArray($sut->getAdditionalFields());
self::assertEmpty($sut->getAdditionalFields());
self::assertNull($sut->getAdditionalField('foo'));
self::assertNull($sut->getMetaFieldValue('foo'));
self::assertEquals('bar', $sut->getAdditionalField('foo', 'bar'));
self::assertNull($sut->getAdditionalField('foo'));
self::assertNull($sut->getMetaFieldValue('foo'));
self::assertInstanceOf(InvoiceItem::class, $sut->addAdditionalField('foo', 'bar2'));
self::assertEquals('bar2', $sut->getAdditionalField('foo'));
self::assertEquals('bar2', $sut->getMetaFieldValue('foo'));
self::assertEquals(0, $sut->getAmount());
self::assertNull($sut->getBegin());
self::assertNull($sut->getActivity());