unify access to custom fields (#3106)
This commit is contained in:
@@ -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()))) {
|
||||
|
||||
@@ -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()))) {
|
||||
|
||||
@@ -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()))) {
|
||||
|
||||
@@ -29,7 +29,7 @@ interface MetaTableTypeInterface
|
||||
public function setName(string $name): MetaTableTypeInterface;
|
||||
|
||||
/**
|
||||
* @return mixed|null
|
||||
* @return int|bool|string|null
|
||||
*/
|
||||
public function getValue();
|
||||
|
||||
|
||||
@@ -109,7 +109,7 @@ trait MetaTableTypeTrait
|
||||
}
|
||||
|
||||
/**
|
||||
* @return mixed|null
|
||||
* @return int|bool|string|null
|
||||
*/
|
||||
public function getValue()
|
||||
{
|
||||
|
||||
@@ -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()))) {
|
||||
|
||||
@@ -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()))) {
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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());
|
||||
|
||||
@@ -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());
|
||||
|
||||
@@ -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));
|
||||
|
||||
@@ -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());
|
||||
|
||||
@@ -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());
|
||||
|
||||
@@ -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());
|
||||
|
||||
@@ -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());
|
||||
|
||||
Reference in New Issue
Block a user