Show element history on part info page in history tab.

This commit is contained in:
Jan Böhmer 2020-02-22 20:04:43 +01:00
parent fff1864a68
commit c14d6d91ff
12 changed files with 331 additions and 26 deletions

View file

@ -44,6 +44,7 @@ namespace App\Services;
use App\Entity\Attachments\Attachment;
use App\Entity\Attachments\AttachmentType;
use App\Entity\Attachments\PartAttachment;
use App\Entity\Base\AbstractDBElement;
use App\Entity\Devices\Device;
use App\Entity\Parts\Category;
@ -51,9 +52,12 @@ use App\Entity\Parts\Footprint;
use App\Entity\Parts\Manufacturer;
use App\Entity\Parts\MeasurementUnit;
use App\Entity\Parts\Part;
use App\Entity\Parts\PartLot;
use App\Entity\Parts\Storelocation;
use App\Entity\Parts\Supplier;
use App\Entity\PriceInformations\Currency;
use App\Entity\PriceInformations\Orderdetail;
use App\Entity\PriceInformations\Pricedetail;
use App\Entity\UserSystem\Group;
use App\Entity\UserSystem\User;
use App\Exceptions\EntityNotSupportedException;
@ -120,6 +124,49 @@ class EntityURLGenerator
throw new InvalidArgumentException('Method is not supported!');
}
/**
* Gets the URL to view the given element at a given timestamp
* @param $entity
* @param \DateTime $dateTime
* @return string
*/
public function timeTravelURL($entity, \DateTime $dateTime): string
{
if ($entity instanceof Part) {
return $this->urlGenerator->generate('part_info', [
'id' => $entity->getID(),
'timestamp' => $dateTime->getTimestamp()
]);
}
if ($entity instanceof PartLot) {
return $this->urlGenerator->generate('part_info', [
'id' => $entity->getPart()->getID(),
'timestamp' => $dateTime->getTimestamp()
]);
}
if ($entity instanceof PartAttachment) {
return $this->urlGenerator->generate('part_info', [
'id' => $entity->getElement()->getID(),
'timestamp' => $dateTime->getTimestamp()
]);
}
if ($entity instanceof Orderdetail) {
return $this->urlGenerator->generate('part_info', [
'id' => $entity->getPart()->getID(),
'timestamp' => $dateTime->getTimestamp()
]);
}
if ($entity instanceof Pricedetail) {
return $this->urlGenerator->generate('part_info', [
'id' => $entity->getOrderdetail()->getPart()->getID(),
'timestamp' => $dateTime->getTimestamp()
]);
}
//Otherwise throw an error
throw new EntityNotSupportedException('The given entity is not supported yet!');
}
public function viewURL($entity): string
{
if ($entity instanceof Attachment) {