src/JanusHercules/IndeedCampaignManagement/Domain/Entity/FeedGenerationRun.php line 17

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace JanusHercules\IndeedCampaignManagement\Domain\Entity;
  4. use App\Utility\DatabaseIdGenerator;
  5. use App\Utility\DateTimeUtility;
  6. use DateTime;
  7. use Doctrine\DBAL\Types\Types;
  8. use Doctrine\ORM\Mapping as ORM;
  9. use Exception;
  10. use JanusHercules\IndeedCampaignManagement\Domain\Enum\FeedGenerationStatus;
  11. #[ORM\Entity]
  12. #[ORM\Table(name: 'icm_feed_generation_runs')]
  13. class FeedGenerationRun
  14. {
  15. /**
  16. * @throws Exception
  17. */
  18. public function __construct()
  19. {
  20. $this->createdAt = DateTimeUtility::createDateTimeUtc();
  21. $this->status = FeedGenerationStatus::STARTED;
  22. $this->publishing_plan_simulation_time = DateTimeUtility::createDateTimeUtc();
  23. }
  24. #[ORM\Id]
  25. #[ORM\GeneratedValue(strategy: 'CUSTOM')]
  26. #[ORM\CustomIdGenerator(class: DatabaseIdGenerator::class)]
  27. #[ORM\Column(type: Types::GUID, unique: true)]
  28. private ?string $id = null;
  29. public function getId(): ?string
  30. {
  31. return $this->id;
  32. }
  33. #[ORM\Column(type: Types::DATETIME_MUTABLE, nullable: false)]
  34. private DateTime $createdAt;
  35. public function getCreatedAt(): DateTime
  36. {
  37. return $this->createdAt;
  38. }
  39. #[ORM\Column(type: Types::STRING, enumType: FeedGenerationStatus::class)]
  40. private FeedGenerationStatus $status;
  41. public function getStatus(): FeedGenerationStatus
  42. {
  43. return $this->status;
  44. }
  45. public function setStatus(FeedGenerationStatus $status): void
  46. {
  47. $this->status = $status;
  48. }
  49. #[ORM\Column(name: 'publishing_plan_simulation_time', type: Types::DATETIME_MUTABLE)]
  50. private DateTime $publishing_plan_simulation_time;
  51. public function getPublishingPlanSimulationTime(): DateTime
  52. {
  53. return $this->publishing_plan_simulation_time;
  54. }
  55. public function setPublishingPlanSimulationTime(DateTime $publishing_plan_simulation_time): void
  56. {
  57. $this->publishing_plan_simulation_time = $publishing_plan_simulation_time;
  58. }
  59. #[ORM\Column(name: 'publishing_plan_total_entries', type: Types::INTEGER, nullable: false, options: ['default' => 0])]
  60. private int $publishing_plan_total_entries = 0;
  61. public function getPublishingPlanTotalEntries(): int
  62. {
  63. return $this->publishing_plan_total_entries;
  64. }
  65. public function setPublishingPlanTotalEntries(int $publishing_plan_total_entries): void
  66. {
  67. $this->publishing_plan_total_entries = $publishing_plan_total_entries;
  68. }
  69. #[ORM\Column(name: 'publishing_plan_publishable_entries', type: Types::INTEGER, nullable: false, options: ['default' => 0])]
  70. private int $publishing_plan_publishable_entries = 0;
  71. public function getPublishingPlanPublishableEntries(): int
  72. {
  73. return $this->publishing_plan_publishable_entries;
  74. }
  75. public function setPublishingPlanPublishableEntries(int $publishing_plan_publishable_entries): void
  76. {
  77. $this->publishing_plan_publishable_entries = $publishing_plan_publishable_entries;
  78. }
  79. #[ORM\Column(name: 'publishing_plan_blocked_entries', type: Types::INTEGER, nullable: false, options: ['default' => 0])]
  80. private int $publishing_plan_blocked_entries = 0;
  81. public function getPublishingPlanBlockedEntries(): int
  82. {
  83. return $this->publishing_plan_blocked_entries;
  84. }
  85. public function setPublishingPlanBlockedEntries(int $publishing_plan_blocked_entries): void
  86. {
  87. $this->publishing_plan_blocked_entries = $publishing_plan_blocked_entries;
  88. }
  89. #[ORM\Column(name: 'number_of_items_published', type: Types::INTEGER, nullable: false, options: ['default' => 0])]
  90. private int $numberOfItemsPublished = 0;
  91. public function getNumberOfItemsPublished(): int
  92. {
  93. return $this->numberOfItemsPublished;
  94. }
  95. public function setNumberOfItemsPublished(int $numberOfItemsPublished): void
  96. {
  97. $this->numberOfItemsPublished = $numberOfItemsPublished;
  98. }
  99. #[ORM\Column(name: 'error_message', type: Types::TEXT, nullable: true)]
  100. private ?string $errorMessage = null;
  101. public function getErrorMessage(): ?string
  102. {
  103. return $this->errorMessage;
  104. }
  105. public function setErrorMessage(?string $errorMessage): void
  106. {
  107. $this->errorMessage = $errorMessage;
  108. }
  109. #[ORM\Column(name: 's3_url', type: Types::STRING, nullable: true)]
  110. private ?string $s3Url = null;
  111. public function getS3Url(): ?string
  112. {
  113. return $this->s3Url;
  114. }
  115. public function setS3Url(?string $s3Url): void
  116. {
  117. $this->s3Url = $s3Url;
  118. }
  119. }