src/StartPlatz/Bundle/StartupBundle/Entity/Application.php line 22

Open in your IDE?
  1. <?php declare(strict_types=1);
  2. namespace App\StartPlatz\Bundle\StartupBundle\Entity;
  3. use DateTime;
  4. use Doctrine\Common\Collections\Collection;
  5. use Doctrine\ORM\Mapping as ORM;
  6. use Symfony\Component\Validator\Constraints as Assert;
  7. use App\StartPlatz\Bundle\StartupBundle\Repository\ApplicationRepository;
  8. use App\StartPlatz\Bundle\AllmedaBundle\Entity\BatchApplicationAssessment;
  9. use Gedmo\Mapping\Annotation as Gedmo;
  10. /**
  11.  * Application
  12.  *
  13.  * @Gedmo\SoftDeleteable(fieldName="deletedAt", timeAware=false, hardDelete=false)
  14.  */
  15. #[ORM\Table(name'sp_applications')]
  16. #[ORM\UniqueConstraint(name'unique'columns: ['programSlug''batchSlug''startupId'])]
  17. #[ORM\Entity(repositoryClassApplicationRepository::class)]
  18. #[ORM\HasLifecycleCallbacks]
  19. class Application
  20. {
  21.     #[ORM\Column(name'id'type'integer')]
  22.     #[ORM\Id]
  23.     #[ORM\GeneratedValue(strategy'AUTO')]
  24.     private int|string|null $id null;
  25.     #[ORM\Column(name'startupId'type'integer'nullabletrue)]
  26.     private int|string|null $startupId null;
  27.     #[ORM\Column(name'programId'type'integer'nullabletrue)]
  28.     private int|string|null $programId null;
  29.     #[ORM\Column(name'batchId'type'integer'nullabletrue)]
  30.     private int|string|null $batchId null;
  31.     #[ORM\Column(name'utm_source'type'string'length255nullabletrue)]
  32.     private ?string $utmSource null;
  33.     #[ORM\Column(name'utm_medium'type'string'length255nullabletrue)]
  34.     private ?string $utmMedium null;
  35.     #[ORM\Column(name'utm_campaign'type'string'length255nullabletrue)]
  36.     private ?string $utmCampaign null;
  37.     #[ORM\Column(name'utm_term'type'string'length255nullabletrue)]
  38.     private ?string $utmTerm null;
  39.     #[ORM\Column(name'utm_content'type'string'length255nullabletrue)]
  40.     private ?string $utmContent null;
  41.     #[ORM\Column(name'votesRegistered'type'integer'nullabletrue)]
  42.     private int|string|null $votesRegistered null;
  43.     #[ORM\Column(name'programName'type'string'length255nullabletrue)]
  44.     private ?string $programName null;
  45.     #[ORM\Column(name'programSlug'type'string'length255nullabletrue)]
  46.     private ?string $programSlug null;
  47.     #[ORM\Column(name'batchName'type'string'length255nullabletrue)]
  48.     private ?string $batchName null;
  49.     #[ORM\Column(name'batchSlug'type'string'length255nullabletrue)]
  50.     private ?string $batchSlug null;
  51.     #[ORM\Column(name'template'type'string'length255nullabletrue)]
  52.     private ?string $template null;
  53.     #[ORM\Column(name'teamId'type'integer'nullabletrue)]
  54.     private int|string|null $teamId null;
  55.     #[ORM\Column(name'memberId'type'integer'nullabletrue)]
  56.     private int|string|null $memberId null;
  57.     #[ORM\Column(name'lang'type'string'length4nullabletrue)]
  58.     private ?string $lang null;
  59.     #[ORM\Column(name'startupName'type'string'length255nullabletrue)]
  60.     private ?string $startupName null;
  61.     #[ORM\Column(name'visibility'type'string'length255nullabletrue)]
  62.     private ?string $visibility null;
  63.     #[ORM\Column(name'firstName'type'string'length64nullabletrue)]
  64.     private ?string $firstName null;
  65.     #[ORM\Column(name'lastName'type'string'length64nullabletrue)]
  66.     private ?string $lastName null;
  67.     #[ORM\Column(name'person'type'string'length255nullabletrue)]
  68.     private ?string $person null;
  69.     #[ORM\Column(name'email'type'string'length255nullabletrue)]
  70.     private ?string $email null;
  71.     #[ORM\Column(name'secondaryEmail'type'string'length255nullabletrue)]
  72.     private ?string $secondaryEmail null;
  73.     #[ORM\Column(name'phone'type'string'length64nullabletrue)]
  74.     private ?string $phone null;
  75.     #[ORM\Column(name'linkedin'type'string'length255nullabletrue)]
  76.     private ?string $linkedin null;
  77.     #[ORM\Column(name'telegram'type'string'length255nullabletrue)]
  78.     private ?string $telegram null;
  79.     #[ORM\Column(name'discord'type'string'length255nullabletrue)]
  80.     private ?string $discord null;
  81.     #[ORM\Column(name'wallet'type'string'length255nullabletrue)]
  82.     private ?string $wallet null;
  83.     #[ORM\Column(name'priceinEuroCent'type'integer'nullabletrue)]
  84.     private int|string|null $priceinEuroCent null;
  85.     #[ORM\Column(name'realPriceinEuroCent'type'integer'nullabletrue)]
  86.     private int|string|null $realPriceinEuroCent null;
  87.     #[ORM\Column(name'discountPercent'type'integer'nullabletrue)]
  88.     private int|string|null $discountPercent null;
  89.     #[ORM\Column(name'discountReason'type'string'length255nullabletrue)]
  90.     private ?string $discountReason null;
  91.     #[ORM\Column(name'teamSize'type'smallint'nullabletrue)]
  92.     private int|string|null $teamSize null;
  93.     #[ORM\Column(name'city'type'string'length64nullabletrue)]
  94.     private ?string $city null;
  95.     #[ORM\Column(name'startupStage'type'string'length64nullabletrue)]
  96.     private ?string $startupStage null;
  97.     #[ORM\Column(name'industry'type'string'length255nullabletrue)]
  98.     private ?string $industry null;
  99.     // UP-111: Track field for Rheinland Pitch (e.g., "Impact", "PropTech", "FinTech")
  100.     #[ORM\Column(name'track'type'string'length64nullabletrue)]
  101.     private ?string $track null;
  102.     #[ORM\Column(name'projectCategory'type'string'length255nullabletrue)]
  103.     private ?string $projectCategory null;
  104.     #[ORM\Column(name'blockchain'type'string'length255nullabletrue)]
  105.     private ?string $blockchain null;
  106.     #[ORM\Column(name'recommendedBy'type'string'length255nullabletrue)]
  107.     private ?string $recommendedBy null;
  108.     #[ORM\Column(name'editStatus'type'string'length64nullabletrue)]
  109.     private ?string $editStatus null;
  110.     #[ORM\Column(name'editMessage'type'string'length255nullabletrue)]
  111.     private ?string $editMessage null;
  112.     #[ORM\Column(name'applicationStatus'type'string'length64nullabletrue)]
  113.     private ?string $applicationStatus null;
  114.     #[ORM\Column(name'reviewStatus'type'string'length64nullabletrue)]
  115.     private ?string $reviewStatus null;
  116.     #[ORM\Column(name'applicantType'type'string'length64nullabletrue)]
  117.     private ?string $applicantType null;
  118.     #[ORM\Column(name'canReadList'type'boolean'nullabletrue)]
  119.     private bool|int|null $canReadList null;
  120.     #[ORM\Column(name'isSitting'type'boolean'nullabletrue)]
  121.     private bool|int|null $isSitting null;
  122.     #[ORM\Column(name'isNewMember'type'boolean'nullabletrue)]
  123.     private bool|int|null $isNewMember null;
  124.     #[ORM\Column(name'hasNewsletterPermissionGiven'type'boolean'nullabletrue)]
  125.     private bool|int|null $hasNewsletterPermissionGiven null;
  126.     #[ORM\Column(name'hasConfirmationMailSent'type'boolean'nullabletrue)]
  127.     private bool|int|null $hasConfirmationMailSent null;
  128.     #[ORM\Column(name'hasTermsAccepted'type'boolean'nullabletrue)]
  129.     private bool|int|null $hasTermsAccepted null;
  130.     #[ORM\Column(name'hasPaid'type'boolean'nullabletrue)]
  131.     private bool|int|null $hasPaid null;
  132.     #[ORM\Column(name'hasVolunteerAgreed'type'boolean'nullabletrue)]
  133.     private bool|int|null $hasVolunteerAgreed null;
  134.     #[ORM\Column(name'hasEmailValidated'type'boolean'nullabletrue)]
  135.     private bool|int|null $hasEmailValidated null;
  136.     #[ORM\Column(name'batchStatus'type'string'length64nullabletrue)]
  137.     private ?string $batchStatus null;
  138.     // UP-002: New status dimensions for GS Admin Greenfield
  139.     #[ORM\Column(name'selectionStatus'type'string'length32nullabletrue)]
  140.     private ?string $selectionStatus null;
  141.     #[ORM\Column(name'participationStatus'type'string'length32nullabletrue)]
  142.     private ?string $participationStatus null;
  143.     #[ORM\Column(name'coachMemberId'type'integer'nullabletrue)]
  144.     private ?int $coachMemberId null;
  145.     #[ORM\Column(name'participationStartedAt'type'datetime'nullabletrue)]
  146.     private ?\DateTime $participationStartedAt null;
  147.     #[ORM\Column(name'participationCompletedAt'type'datetime'nullabletrue)]
  148.     private ?\DateTime $participationCompletedAt null;
  149.     #[ORM\Column(name'pitchPosition'type'string'length8nullabletrue)]
  150.     private ?string $pitchPosition null;
  151.     #[ORM\Column(name'pitchImageLink'type'string'length255nullabletrue)]
  152.     private ?string $pitchImageLink null;
  153.     #[ORM\Column(name'pitchVideoLink'type'string'length255nullabletrue)]
  154.     private ?string $pitchVideoLink null;
  155.     #[ORM\Column(name'linkPitchDeck'type'string'length255nullabletrue)]
  156.     private ?string $linkPitchDeck null;
  157.     #[ORM\Column(name'publicIdPitchDeck'type'string'length255nullabletrue)]
  158.     private ?string $publicIdPitchDeck null;
  159.     #[ORM\Column(name'ideaPaperUrl'type'string'length255nullabletrue)]
  160.     private ?string $ideaPaperUrl null;
  161.     #[ORM\Column(name'publicIdIdeaPaper'type'string'length255nullabletrue)]
  162.     private ?string $publicIdIdeaPaper null;
  163.     #[ORM\Column(name'websiteUrl'type'string'length255nullabletrue)]
  164.     private ?string $websiteUrl null;
  165.     #[ORM\Column(name'fulltime'type'string'length255nullabletrue)]
  166.     private ?string $fulltime null;
  167.     #[ORM\Column(name'language'type'string'length16nullabletrue)]
  168.     private ?string $language null;
  169.     #[ORM\Column(name'mvpStatus'type'string'length255nullabletrue)]
  170.     private ?string $mvpStatus null;
  171.     #[ORM\Column(name'dealroomUrl'type'string'length255nullabletrue)]
  172.     private ?string $dealroomUrl null;
  173.     #[ORM\Column(name'podioId'type'string'length8nullabletrue)]
  174.     private ?string $podioId null;
  175.     #[ORM\Column(name'podioItemId'type'string'length8nullabletrue)]
  176.     private ?string $podioItemId null;
  177.     #[ORM\Column(name'podioUrl'type'string'length255nullabletrue)]
  178.     private ?string $podioUrl null;
  179.     #[ORM\Column(name'ideaPitch'type'text'nullabletrue)]
  180.     #[Assert\Length(min10max2000minMessage'Your pitch must be at least {{ limit }} characters long'maxMessage'Your pitch cannot be longer than {{ limit }} characters')]
  181.     private ?string $ideaPitch null;
  182.     #[ORM\Column(name'createdAt'type'datetime'nullabletrue)]
  183.     private ?DateTime $createdAt null;
  184.     #[ORM\Column(name'lastModified'type'datetime'nullabletrue)]
  185.     private ?DateTime $lastModified null;
  186.     #[ORM\Column(name'deletedAt'type'datetime'nullabletrue)]
  187.     private ?DateTime $deletedAt null;
  188.     #[ORM\Column(name'lastChangeUser'type'string'length255nullabletrue)]
  189.     private ?string $lastChangeUser null;
  190.     #[ORM\Column(name'history'type'text'nullabletrue)]
  191.     private ?string $history null;
  192.     #[ORM\Column(name'extraFields'type'text'nullabletrue)]
  193.     private ?string $extraFields null;
  194.     #[ORM\Column(name'adminNotes'type'text'nullabletrue)]
  195.     private ?string $adminNotes null;
  196.     private $isExistingApplication;
  197.     #[ORM\OneToMany(targetEntityBatchApplicationAssessment::class, mappedBy'application'cascade: ['persist''remove'])]
  198.     private Collection $assessments;
  199.     #[ORM\Column(name'ratingJudge1'type'smallint'nullabletrue)]
  200.     private int|string|null $ratingJudge1 null;
  201.     #[ORM\Column(name'ratingJudge2'type'smallint'nullabletrue)]
  202.     private int|string|null $ratingJudge2 null;
  203.     #[ORM\Column(name'ratingJudge3'type'smallint'nullabletrue)]
  204.     private int|string|null $ratingJudge3 null;
  205.     #[ORM\Column(name'ratingJudge4'type'smallint'nullabletrue)]
  206.     private int|string|null $ratingJudge4 null;
  207.     #[ORM\Column(name'ratingJudge5'type'smallint'nullabletrue)]
  208.     private int|string|null $ratingJudge5 null;
  209.     #[ORM\Column(name'ratingAverage'type'decimal'precision5scale2nullabletrue)]
  210.     private ?float $ratingAverage null;
  211.     #[ORM\Column(name'ratingUpdatedAt'type'datetime'nullabletrue)]
  212.     private ?DateTime $ratingUpdatedAt null;
  213.     #[ORM\Column(name'memberTagsAtRegistration'type'text'nullabletrue)]
  214.     private ?string $memberTagsAtRegistration null;
  215.     #[ORM\Column(name'wasCommunityMemberAtRegistration'type'boolean'nullabletrue)]
  216.     private bool|int|null $wasCommunityMemberAtRegistration null;
  217.     #[ORM\Column(name'wasPhysicalMemberAtRegistration'type'boolean'nullabletrue)]
  218.     private bool|int|null $wasPhysicalMemberAtRegistration null;
  219.     #[ORM\Column(name'memberUtmSourceAtRegistration'type'string'length255nullabletrue)]
  220.     private ?string $memberUtmSourceAtRegistration null;
  221.     #[ORM\Column(name'kiKompetenzAtRegistration'type'string'length50nullabletrue)]
  222.     private ?string $kiKompetenzAtRegistration null;
  223.     // ==================== ApplicationFlow Fields ====================
  224.     #[ORM\Column(name'pendingMemberData'type'json'nullabletrue)]
  225.     private ?array $pendingMemberData null;
  226.     #[ORM\Column(name'pendingTeamData'type'json'nullabletrue)]
  227.     private ?array $pendingTeamData null;
  228.     #[ORM\Column(name'resumeToken'type'string'length64nullabletrue)]
  229.     private ?string $resumeToken null;
  230.     #[ORM\Column(name'resumeTokenExpiresAt'type'datetime'nullabletrue)]
  231.     private ?DateTime $resumeTokenExpiresAt null;
  232.     #[ORM\Column(name'isMemberCreated'type'boolean'options: ['default' => false])]
  233.     private bool $isMemberCreated false;
  234.     #[ORM\Column(name'isTeamCreated'type'boolean'options: ['default' => false])]
  235.     private bool $isTeamCreated false;
  236.     // setter and getter
  237.     /**
  238.      * @param int $id
  239.      */
  240.     public function setId($id): void
  241.     {
  242.         $this->id $id;
  243.     }
  244.     /**
  245.      * Get id
  246.      *
  247.      * @return integer
  248.      */
  249.     public function getId()
  250.     {
  251.         return $this->id;
  252.     }
  253.     /**
  254.      * Set batchSlug
  255.      *
  256.      * @param string $batchSlug
  257.      *
  258.      * @return Application
  259.      */
  260.     public function setBatchSlug($batchSlug)
  261.     {
  262.         $this->batchSlug $batchSlug !== null ? (string) $batchSlug null;
  263.         return $this;
  264.     }
  265.     /**
  266.      * Get batchSlug
  267.      *
  268.      * @return string
  269.      */
  270.     public function getBatchSlug()
  271.     {
  272.         return $this->batchSlug;
  273.     }
  274.     /**
  275.      * @return string
  276.      */
  277.     public function getTemplate()
  278.     {
  279.         return $this->template;
  280.     }
  281.     /**
  282.      * @param string $template
  283.      */
  284.     public function setTemplate($template): void
  285.     {
  286.         $this->template $template !== null ? (string) $template null;
  287.     }
  288.     /**
  289.      * @return string
  290.      */
  291.     public function getStartupName()
  292.     {
  293.         return $this->startupName;
  294.     }
  295.     /**
  296.      * @param string $startupName
  297.      */
  298.     public function setStartupName($startupName): void
  299.     {
  300.         $this->startupName $startupName !== null ? (string) $startupName null;
  301.     }
  302.     /**
  303.      * @return string
  304.      */
  305.     public function getVisibility()
  306.     {
  307.         return $this->visibility;
  308.     }
  309.     /**
  310.      * @param string $visibility
  311.      */
  312.     public function setVisibility($visibility): void
  313.     {
  314.         $this->visibility $visibility !== null ? (string) $visibility null;
  315.     }
  316.     /**
  317.      * @return string
  318.      */
  319.     public function getFirstName()
  320.     {
  321.         return $this->firstName;
  322.     }
  323.     /**
  324.      * @param string $firstName
  325.      */
  326.     public function setFirstName($firstName): void
  327.     {
  328.         $this->firstName $firstName !== null ? (string) $firstName null;
  329.     }
  330.     /**
  331.      * @return string
  332.      */
  333.     public function getLastName()
  334.     {
  335.         return $this->lastName;
  336.     }
  337.     /**
  338.      * @param string $lastName
  339.      */
  340.     public function setLastName($lastName): void
  341.     {
  342.         $this->lastName $lastName !== null ? (string) $lastName null;
  343.     }
  344.     /**
  345.      * Set createdAt
  346.      *
  347.      * @param DateTime $createdAt
  348.      *
  349.      * @return Application
  350.      */
  351.     public function setCreatedAt($createdAt)
  352.     {
  353.         $this->createdAt $createdAt;
  354.         return $this;
  355.     }
  356.     /**
  357.      * Get createdAt
  358.      *
  359.      * @return DateTime
  360.      */
  361.     public function getCreatedAt()
  362.     {
  363.         return $this->createdAt;
  364.     }
  365.     /**
  366.      * Set applicationStatus
  367.      *
  368.      * @param string $applicationStatus
  369.      *
  370.      * @return Application
  371.      */
  372.     public function setApplicationStatus($applicationStatus)
  373.     {
  374.         $this->applicationStatus $applicationStatus !== null ? (string) $applicationStatus null;
  375.         return $this;
  376.     }
  377.     /**
  378.      * Get applicationStatus
  379.      *
  380.      * @return string
  381.      */
  382.     public function getApplicationStatus()
  383.     {
  384.         return $this->applicationStatus;
  385.     }
  386.     /**
  387.      * Set reviewStatus
  388.      *
  389.      * @param string $reviewStatus
  390.      *
  391.      * @return Application
  392.      */
  393.     public function setReviewStatus($reviewStatus)
  394.     {
  395.         $this->reviewStatus $reviewStatus !== null ? (string) $reviewStatus null;
  396.         return $this;
  397.     }
  398.     /**
  399.      * Get reviewStatus
  400.      *
  401.      * @return string
  402.      */
  403.     public function getReviewStatus()
  404.     {
  405.         return $this->reviewStatus;
  406.     }
  407.     /**
  408.      * @return string
  409.      */
  410.     public function getApplicantType()
  411.     {
  412.         return $this->applicantType;
  413.     }
  414.     /**
  415.      * @param string $applicantType
  416.      */
  417.     public function setApplicantType($applicantType): void
  418.     {
  419.         $this->applicantType $applicantType !== null ? (string) $applicantType null;
  420.     }
  421.     /**
  422.      * @return bool
  423.      */
  424.     public function getCanReadList()
  425.     {
  426.         return $this->canReadList;
  427.     }
  428.     /**
  429.      * @param bool $canReadList
  430.      */
  431.     public function setCanReadList(bool|int|null $canReadList)
  432.     {
  433.         $this->canReadList $canReadList !== null ? (bool) $canReadList null;
  434.     }
  435.     /**
  436.      * @return bool
  437.      */
  438.     public function getIsSitting()
  439.     {
  440.         return $this->isSitting;
  441.     }
  442.     /**
  443.      * @return bool
  444.      */
  445.     public function isSitting()
  446.     {
  447.         return $this->isSitting;
  448.     }
  449.     /**
  450.      * @param bool $isSitting
  451.      */
  452.     public function setIsSitting($isSitting): void
  453.     {
  454.         $this->isSitting $isSitting !== null ? (bool) $isSitting null;
  455.     }
  456.     public function getIsNewMember()
  457.     {
  458.         return $this->isNewMember;
  459.     }
  460.     public function isNewMember()
  461.     {
  462.         return $this->isNewMember;
  463.     }
  464.     public function setIsNewMember($isNewMember): void
  465.     {
  466.         $this->isNewMember $isNewMember !== null ? (bool) $isNewMember null;
  467.     }
  468.     /**
  469.      * @return bool
  470.      */
  471.     public function getHasNewsletterPermissionGiven()
  472.     {
  473.         return $this->hasNewsletterPermissionGiven;
  474.     }
  475.     /**
  476.      * @return bool
  477.      */
  478.     public function isHasNewsletterPermissionGiven()
  479.     {
  480.         return $this->hasNewsletterPermissionGiven;
  481.     }
  482.     /**
  483.      * @param bool $hasNewsletterPermissionGiven
  484.      */
  485.     public function setHasNewsletterPermissionGiven($hasNewsletterPermissionGiven): void
  486.     {
  487.         $this->hasNewsletterPermissionGiven $hasNewsletterPermissionGiven !== null ? (bool) $hasNewsletterPermissionGiven null;
  488.     }
  489.     public function getHasConfirmationMailSent()
  490.     {
  491.         return $this->hasConfirmationMailSent;
  492.     }
  493.     public function isHasConfirmationMailSent()
  494.     {
  495.         return $this->hasConfirmationMailSent;
  496.     }
  497.     public function setHasConfirmationMailSent($hasConfirmationMailSent): void
  498.     {
  499.         $this->hasConfirmationMailSent $hasConfirmationMailSent !== null ? (bool) $hasConfirmationMailSent null;
  500.     }
  501.     /**
  502.      * @return bool
  503.      */
  504.     public function getHasTermsAccepted()
  505.     {
  506.         return $this->hasTermsAccepted;
  507.     }
  508.     /**
  509.      * @return bool
  510.      */
  511.     public function isHasTermsAccepted()
  512.     {
  513.         return $this->hasTermsAccepted;
  514.     }
  515.     /**
  516.      * @param bool $hasTermsAccepted
  517.      */
  518.     public function setHasTermsAccepted($hasTermsAccepted): void
  519.     {
  520.         $this->hasTermsAccepted $hasTermsAccepted !== null ? (bool) $hasTermsAccepted null;
  521.     }
  522.     /**
  523.      * @return bool
  524.      */
  525.     public function getHasPaid()
  526.     {
  527.         return $this->hasPaid;
  528.     }
  529.     /**
  530.      * @return bool
  531.      */
  532.     public function isHasPaid()
  533.     {
  534.         return $this->hasPaid;
  535.     }
  536.     /**
  537.      * @param bool $hasPaid
  538.      */
  539.     public function setHasPaid($hasPaid): void
  540.     {
  541.         $this->hasPaid $hasPaid !== null ? (bool) $hasPaid null;
  542.     }
  543.     /**
  544.      * @return bool
  545.      */
  546.     public function isHasVolunteerAgreed()
  547.     {
  548.         return $this->hasVolunteerAgreed;
  549.     }
  550.     /**
  551.      * @return bool
  552.      */
  553.     public function getHasVolunteerAgreed()
  554.     {
  555.         return $this->hasVolunteerAgreed;
  556.     }
  557.     /**
  558.      * @param bool $hasVolunteerAgreed
  559.      */
  560.     public function setHasVolunteerAgreed($hasVolunteerAgreed): void
  561.     {
  562.         $this->hasVolunteerAgreed $hasVolunteerAgreed !== null ? (bool) $hasVolunteerAgreed null;
  563.     }
  564.     /**
  565.      * @return bool
  566.      */
  567.     public function isHasEmailValidated()
  568.     {
  569.         return $this->hasEmailValidated;
  570.     }
  571.     /**
  572.      * @return bool
  573.      */
  574.     public function getHasEmailValidated()
  575.     {
  576.         return $this->hasEmailValidated;
  577.     }
  578.     /**
  579.      * @param bool $hasEmailValidated
  580.      */
  581.     public function setHasEmailValidated($hasEmailValidated): void
  582.     {
  583.         $this->hasEmailValidated $hasEmailValidated !== null ? (bool) $hasEmailValidated null;
  584.     }
  585.     
  586.     /**
  587.      * Set ideaPitch
  588.      *
  589.      * @param string $ideaPitch
  590.      *
  591.      * @return Application
  592.      */
  593.     public function setIdeaPitch($ideaPitch)
  594.     {
  595.         $this->ideaPitch $ideaPitch !== null ? (string) $ideaPitch null;
  596.         return $this;
  597.     }
  598.     /**
  599.      * Get ideaPitch
  600.      *
  601.      * @return string
  602.      */
  603.     public function getIdeaPitch()
  604.     {
  605.         return $this->ideaPitch;
  606.     }
  607.     /**
  608.      * Set person
  609.      *
  610.      * @param string $person
  611.      *
  612.      * @return Application
  613.      */
  614.     public function setPerson($person)
  615.     {
  616.         $this->person $person !== null ? (string) $person null;
  617.         return $this;
  618.     }
  619.     /**
  620.      * Get person
  621.      *
  622.      * @return string
  623.      */
  624.     public function getPerson()
  625.     {
  626.         return $this->person;
  627.     }
  628.     /**
  629.      * Set email
  630.      *
  631.      * @param string $email
  632.      *
  633.      * @return Application
  634.      */
  635.     public function setEmail($email)
  636.     {
  637.         $this->email $email !== null strtolower($email) : null;
  638.         return $this;
  639.     }
  640.     /**
  641.      * Get email
  642.      *
  643.      * @return string
  644.      */
  645.     public function getEmail()
  646.     {
  647.         return strtolower($this->email ?? '');
  648.     }
  649.     /**
  650.      * @return string
  651.      */
  652.     public function getSecondaryEmail()
  653.     {
  654.         return $this->secondaryEmail;
  655.     }
  656.     /**
  657.      * @param string $secondaryEmail
  658.      */
  659.     public function setSecondaryEmail($secondaryEmail): void
  660.     {
  661.         $this->secondaryEmail $secondaryEmail !== null ? (string) $secondaryEmail null;
  662.     }
  663.     /**
  664.      * Set phone
  665.      *
  666.      * @param string $phone
  667.      *
  668.      * @return Application
  669.      */
  670.     public function setPhone($phone)
  671.     {
  672.         $this->phone $phone !== null ? (string) $phone null;
  673.         return $this;
  674.     }
  675.     /**
  676.      * @return string
  677.      */
  678.     public function getLinkedin()
  679.     {
  680.         return $this->linkedin;
  681.     }
  682.     /**
  683.      * @param string $linkedin
  684.      */
  685.     public function setLinkedin($linkedin): void
  686.     {
  687.         $this->linkedin $this->adjustExternalUrlToHttps($linkedin);
  688.     }
  689.     /**
  690.      * @return string
  691.      */
  692.     public function getTelegram()
  693.     {
  694.         return $this->telegram;
  695.     }
  696.     /**
  697.      * @param string $telegram
  698.      */
  699.     public function setTelegram($telegram): void
  700.     {
  701.         $this->telegram $telegram !== null ? (string) $telegram null;
  702.     }
  703.     /**
  704.      * @return string
  705.      */
  706.     public function getDiscord()
  707.     {
  708.         return $this->discord;
  709.     }
  710.     /**
  711.      * @param string $discord
  712.      */
  713.     public function setDiscord($discord): void
  714.     {
  715.         $this->discord $discord !== null ? (string) $discord null;
  716.     }
  717.     /**
  718.      * @return string
  719.      */
  720.     public function getWallet()
  721.     {
  722.         return $this->wallet;
  723.     }
  724.     /**
  725.      * @param string $wallet
  726.      */
  727.     public function setWallet($wallet): void
  728.     {
  729.         $this->wallet $wallet !== null ? (string) $wallet null;
  730.     }
  731.     /**
  732.      * @return int
  733.      */
  734.     public function getPriceinEuroCent()
  735.     {
  736.         return $this->priceinEuroCent;
  737.     }
  738.     /**
  739.      * @param int $priceinEuroCent
  740.      */
  741.     public function setPriceinEuroCent($priceinEuroCent): void
  742.     {
  743.         $this->priceinEuroCent $priceinEuroCent !== null ? (string) $priceinEuroCent null;
  744.     }
  745.     /**
  746.      * @return int
  747.      */
  748.     public function getRealPriceinEuroCent()
  749.     {
  750.         return $this->realPriceinEuroCent;
  751.     }
  752.     /**
  753.      * @param int $realPriceinEuroCent
  754.      */
  755.     public function setRealPriceinEuroCent($realPriceinEuroCent): void
  756.     {
  757.         $this->realPriceinEuroCent $realPriceinEuroCent !== null ? (string) $realPriceinEuroCent null;
  758.     }
  759.     /**
  760.      * @return int
  761.      */
  762.     public function getDiscountPercent()
  763.     {
  764.         return $this->discountPercent;
  765.     }
  766.     /**
  767.      * @param int $discountPercent
  768.      */
  769.     public function setDiscountPercent($discountPercent): void
  770.     {
  771.         $this->discountPercent $discountPercent !== null ? (string) $discountPercent null;
  772.     }
  773.     /**
  774.      * @return string
  775.      */
  776.     public function getDiscountReason()
  777.     {
  778.         return $this->discountReason;
  779.     }
  780.     /**
  781.      * @param string $discountReason
  782.      */
  783.     public function setDiscountReason($discountReason): void
  784.     {
  785.         $this->discountReason $discountReason !== null ? (string) $discountReason null;
  786.     }
  787.     /**
  788.      * Get phone
  789.      *
  790.      * @return string
  791.      */
  792.     public function getPhone()
  793.     {
  794.         return $this->phone;
  795.     }
  796.     /**
  797.      * @return int
  798.      */
  799.     public function getStartupId()
  800.     {
  801.         return $this->startupId;
  802.     }
  803.     /**
  804.      * @param int $startupId
  805.      */
  806.     public function setStartupId($startupId): void
  807.     {
  808.         $this->startupId $startupId !== null ? (string) $startupId null;
  809.     }
  810.     /**
  811.      * @return int
  812.      */
  813.     public function getProgramId()
  814.     {
  815.         return $this->programId;
  816.     }
  817.     /**
  818.      * @param int $programId
  819.      */
  820.     public function setProgramId($programId): void
  821.     {
  822.         $this->programId $programId !== null ? (string) $programId null;
  823.     }
  824.     /**
  825.      * @return int
  826.      */
  827.     public function getBatchId()
  828.     {
  829.         return $this->batchId;
  830.     }
  831.     /**
  832.      * @param int $batchId
  833.      */
  834.     public function setBatchId($batchId): void
  835.     {
  836.         $this->batchId $batchId !== null ? (string) $batchId null;
  837.     }
  838.     /**
  839.      * @return string|null
  840.      */
  841.     public function getUtmSource()
  842.     {
  843.         return $this->utmSource;
  844.     }
  845.     /**
  846.      * @param string|null $utmSource
  847.      */
  848.     public function setUtmSource($utmSource): void
  849.     {
  850.         $this->utmSource $utmSource !== null ? (string) $utmSource null;
  851.     }
  852.     /**
  853.      * @return string|null
  854.      */
  855.     public function getUtmMedium()
  856.     {
  857.         return $this->utmMedium;
  858.     }
  859.     /**
  860.      * @param string|null $utmMedium
  861.      */
  862.     public function setUtmMedium($utmMedium): void
  863.     {
  864.         $this->utmMedium $utmMedium !== null ? (string) $utmMedium null;
  865.     }
  866.     /**
  867.      * @return string|null
  868.      */
  869.     public function getUtmCampaign()
  870.     {
  871.         return $this->utmCampaign;
  872.     }
  873.     /**
  874.      * @param string|null $utmCampaign
  875.      */
  876.     public function setUtmCampaign($utmCampaign): void
  877.     {
  878.         $this->utmCampaign $utmCampaign !== null ? (string) $utmCampaign null;
  879.     }
  880.     /**
  881.      * @return string|null
  882.      */
  883.     public function getUtmTerm()
  884.     {
  885.         return $this->utmTerm;
  886.     }
  887.     /**
  888.      * @param string|null $utmTerm
  889.      */
  890.     public function setUtmTerm($utmTerm): void
  891.     {
  892.         $this->utmTerm $utmTerm !== null ? (string) $utmTerm null;
  893.     }
  894.     /**
  895.      * @return string|null
  896.      */
  897.     public function getUtmContent()
  898.     {
  899.         return $this->utmContent;
  900.     }
  901.     /**
  902.      * @param string|null $utmContent
  903.      */
  904.     public function setUtmContent($utmContent): void
  905.     {
  906.         $this->utmContent $utmContent !== null ? (string) $utmContent null;
  907.     }
  908.     
  909.     /**
  910.      * @return int
  911.      */
  912.     public function getVotesRegistered()
  913.     {
  914.         return $this->votesRegistered;
  915.     }
  916.     /**
  917.      * @param int $votesRegistered
  918.      */
  919.     public function setVotesRegistered($votesRegistered): void
  920.     {
  921.         $this->votesRegistered $votesRegistered !== null ? (string) $votesRegistered null;
  922.     }
  923.     /**
  924.      * Set programName
  925.      *
  926.      * @param string $programName
  927.      *
  928.      * @return Application
  929.      */
  930.     public function setProgramName($programName)
  931.     {
  932.         $this->programName $programName !== null ? (string) $programName null;
  933.         return $this;
  934.     }
  935.     /**
  936.      * Get programName
  937.      *
  938.      * @return string
  939.      */
  940.     public function getProgramName()
  941.     {
  942.         return $this->programName;
  943.     }
  944.     /**
  945.      * Set programSlug
  946.      *
  947.      * @param string $programSlug
  948.      *
  949.      * @return Application
  950.      */
  951.     public function setProgramSlug($programSlug)
  952.     {
  953.         $this->programSlug $programSlug !== null ? (string) $programSlug null;
  954.         return $this;
  955.     }
  956.     /**
  957.      * Get programSlug
  958.      *
  959.      * @return string
  960.      */
  961.     public function getProgramSlug()
  962.     {
  963.         return $this->programSlug;
  964.     }
  965.     /**
  966.      * Set batchName
  967.      *
  968.      * @param string $batchName
  969.      *
  970.      * @return Application
  971.      */
  972.     public function setBatchName($batchName)
  973.     {
  974.         $this->batchName $batchName !== null ? (string) $batchName null;
  975.         return $this;
  976.     }
  977.     /**
  978.      * Get batchName
  979.      *
  980.      * @return string
  981.      */
  982.     public function getBatchName()
  983.     {
  984.         return $this->batchName;
  985.     }
  986.     /**
  987.      * Set teamId
  988.      *
  989.      * @param integer $teamId
  990.      *
  991.      * @return Application
  992.      */
  993.     public function setTeamId($teamId)
  994.     {
  995.         $this->teamId $teamId !== null ? (string) $teamId null;
  996.         return $this;
  997.     }
  998.     /**
  999.      * Get teamId
  1000.      *
  1001.      * @return integer
  1002.      */
  1003.     public function getTeamId()
  1004.     {
  1005.         return $this->teamId;
  1006.     }
  1007.     /**
  1008.      * @return int
  1009.      */
  1010.     public function getMemberId()
  1011.     {
  1012.         return $this->memberId;
  1013.     }
  1014.     /**
  1015.      * @param int $memberId
  1016.      */
  1017.     public function setMemberId($memberId): void
  1018.     {
  1019.         $this->memberId $memberId !== null ? (string) $memberId null;
  1020.     }
  1021.     /**
  1022.      * @return string
  1023.      */
  1024.     public function getLang()
  1025.     {
  1026.         return $this->lang;
  1027.     }
  1028.     /**
  1029.      * @param string $lang
  1030.      */
  1031.     public function setLang($lang): void
  1032.     {
  1033.         $this->lang $lang !== null ? (string) $lang null;
  1034.     }
  1035.     /**
  1036.      * @return int
  1037.      */
  1038.     public function getTeamSize()
  1039.     {
  1040.         return $this->teamSize;
  1041.     }
  1042.     /**
  1043.      * @param int $teamSize
  1044.      */
  1045.     public function setTeamSize($teamSize): void
  1046.     {
  1047.         $this->teamSize $teamSize !== null ? (string) $teamSize null;
  1048.     }
  1049.     /**
  1050.      * @return string
  1051.      */
  1052.     public function getCity()
  1053.     {
  1054.         return $this->city;
  1055.     }
  1056.     /**
  1057.      * @param string $city
  1058.      */
  1059.     public function setCity($city): void
  1060.     {
  1061.         $this->city $city !== null ? (string) $city null;
  1062.     }
  1063.     /**
  1064.      * Set startupStage
  1065.      *
  1066.      * @param string $startupStage
  1067.      *
  1068.      * @return Application
  1069.      */
  1070.     public function setStartupStage($startupStage)
  1071.     {
  1072.         $this->startupStage $startupStage !== null ? (string) $startupStage null;
  1073.         return $this;
  1074.     }
  1075.     /**
  1076.      * @return string
  1077.      */
  1078.     public function getIndustry()
  1079.     {
  1080.         return $this->industry;
  1081.     }
  1082.     /**
  1083.      * @param string $industry
  1084.      */
  1085.     public function setIndustry($industry): void
  1086.     {
  1087.         $this->industry $industry !== null ? (string) $industry null;
  1088.     }
  1089.     // UP-111: Track getter/setter for Rheinland Pitch
  1090.     public function getTrack(): ?string
  1091.     {
  1092.         return $this->track;
  1093.     }
  1094.     public function setTrack(?string $track): self
  1095.     {
  1096.         $this->track $track;
  1097.         return $this;
  1098.     }
  1099.     /**
  1100.      * @return string
  1101.      */
  1102.     public function getProjectCategory()
  1103.     {
  1104.         return $this->projectCategory;
  1105.     }
  1106.     /**
  1107.      * @param string $projectCategory
  1108.      */
  1109.     public function setProjectCategory($projectCategory): void
  1110.     {
  1111.         $this->projectCategory $projectCategory !== null ? (string) $projectCategory null;
  1112.     }
  1113.     /**
  1114.      * @return string
  1115.      */
  1116.     public function getBlockchain()
  1117.     {
  1118.         return $this->blockchain;
  1119.     }
  1120.     /**
  1121.      * @param string $blockchain
  1122.      */
  1123.     public function setBlockchain($blockchain): void
  1124.     {
  1125.         $this->blockchain $blockchain !== null ? (string) $blockchain null;
  1126.     }
  1127.     /**
  1128.      * @return string
  1129.      */
  1130.     public function getRecommendedBy()
  1131.     {
  1132.         return $this->recommendedBy;
  1133.     }
  1134.     /**
  1135.      * @param string $recommendedBy
  1136.      */
  1137.     public function setRecommendedBy($recommendedBy): void
  1138.     {
  1139.         $this->recommendedBy $recommendedBy !== null ? (string) $recommendedBy null;
  1140.     }
  1141.     /**
  1142.      * Get startupStage
  1143.      *
  1144.      * @return string
  1145.      */
  1146.     public function getStartupStage()
  1147.     {
  1148.         return $this->startupStage;
  1149.     }
  1150.     /**
  1151.      * @return string
  1152.      */
  1153.     public function getEditStatus()
  1154.     {
  1155.         return $this->editStatus;
  1156.     }
  1157.     /**
  1158.      * @param string $editStatus
  1159.      */
  1160.     public function setEditStatus($editStatus): void
  1161.     {
  1162.         $this->editStatus $editStatus !== null ? (string) $editStatus null;
  1163.     }
  1164.     /**
  1165.      * @return string
  1166.      */
  1167.     public function getEditMessage()
  1168.     {
  1169.         return $this->editMessage;
  1170.     }
  1171.     /**
  1172.      * @param string $editMessage
  1173.      */
  1174.     public function setEditMessage($editMessage): void
  1175.     {
  1176.         $this->editMessage $editMessage !== null ? (string) $editMessage null;
  1177.     }
  1178.     /**
  1179.      * Set batchStatus
  1180.      *
  1181.      * @param string $batchStatus
  1182.      *
  1183.      * @return Application
  1184.      */
  1185.     public function setBatchStatus($batchStatus)
  1186.     {
  1187.         $this->batchStatus $batchStatus !== null ? (string) $batchStatus null;
  1188.         return $this;
  1189.     }
  1190.     /**
  1191.      * Get batchStatus
  1192.      *
  1193.      * @return string
  1194.      */
  1195.     public function getBatchStatus()
  1196.     {
  1197.         return $this->batchStatus;
  1198.     }
  1199.     // ==================== UP-002: New Status Fields ====================
  1200.     public function getSelectionStatus(): ?string
  1201.     {
  1202.         return $this->selectionStatus;
  1203.     }
  1204.     public function setSelectionStatus($selectionStatus): self
  1205.     {
  1206.         $this->selectionStatus $selectionStatus !== null ? (string) $selectionStatus null;
  1207.         return $this;
  1208.     }
  1209.     public function getParticipationStatus(): ?string
  1210.     {
  1211.         return $this->participationStatus;
  1212.     }
  1213.     public function setParticipationStatus($participationStatus): self
  1214.     {
  1215.         $this->participationStatus $participationStatus !== null ? (string) $participationStatus null;
  1216.         return $this;
  1217.     }
  1218.     public function getCoachMemberId(): ?int
  1219.     {
  1220.         return $this->coachMemberId;
  1221.     }
  1222.     public function setCoachMemberId(?int $coachMemberId): self
  1223.     {
  1224.         $this->coachMemberId $coachMemberId;
  1225.         return $this;
  1226.     }
  1227.     public function getParticipationStartedAt(): ?\DateTime
  1228.     {
  1229.         return $this->participationStartedAt;
  1230.     }
  1231.     public function setParticipationStartedAt(?\DateTime $participationStartedAt): self
  1232.     {
  1233.         $this->participationStartedAt $participationStartedAt;
  1234.         return $this;
  1235.     }
  1236.     public function getParticipationCompletedAt(): ?\DateTime
  1237.     {
  1238.         return $this->participationCompletedAt;
  1239.     }
  1240.     public function setParticipationCompletedAt(?\DateTime $participationCompletedAt): self
  1241.     {
  1242.         $this->participationCompletedAt $participationCompletedAt;
  1243.         return $this;
  1244.     }
  1245.     /**
  1246.      * @return string
  1247.      */
  1248.     public function getPitchPosition()
  1249.     {
  1250.         return $this->pitchPosition;
  1251.     }
  1252.     /**
  1253.      * @param string $pitchPosition
  1254.      */
  1255.     public function setPitchPosition($pitchPosition): void
  1256.     {
  1257.         $this->pitchPosition $pitchPosition !== null ? (string) $pitchPosition null;
  1258.     }
  1259.     /**
  1260.      * @return string
  1261.      */
  1262.     public function getPitchImageLink()
  1263.     {
  1264.         return $this->pitchImageLink;
  1265.     }
  1266.     /**
  1267.      * @param string $pitchImageLink
  1268.      */
  1269.     public function setPitchImageLink($pitchImageLink): void
  1270.     {
  1271.         $this->pitchImageLink $pitchImageLink !== null ? (string) $pitchImageLink null;
  1272.     }
  1273.     /**
  1274.      * @return string
  1275.      */
  1276.     public function getPitchVideoLink()
  1277.     {
  1278.         return $this->pitchVideoLink;
  1279.     }
  1280.     /**
  1281.      * @param string $pitchVideoLink
  1282.      */
  1283.     public function setPitchVideoLink($pitchVideoLink): void
  1284.     {
  1285.         $this->pitchVideoLink $pitchVideoLink !== null ? (string) $pitchVideoLink null;
  1286.     }
  1287.     /**
  1288.      * Set linkPitchDeck
  1289.      *
  1290.      * @param string $linkPitchDeck
  1291.      *
  1292.      * @return Application
  1293.      */
  1294.     public function setLinkPitchDeck($linkPitchDeck)
  1295.     {
  1296.         $this->linkPitchDeck $linkPitchDeck !== null ? (string) $linkPitchDeck null;
  1297.         return $this;
  1298.     }
  1299.     /**
  1300.      * Get linkPitchDeck
  1301.      *
  1302.      * @return string
  1303.      */
  1304.     public function getLinkPitchDeck()
  1305.     {
  1306.         return $this->linkPitchDeck;
  1307.     }
  1308.     /**
  1309.      * @return string
  1310.      */
  1311.     public function getPublicIdPitchDeck()
  1312.     {
  1313.         return $this->publicIdPitchDeck;
  1314.     }
  1315.     /**
  1316.      * @param string $publicIdPitchDeck
  1317.      */
  1318.     public function setPublicIdPitchDeck($publicIdPitchDeck): void
  1319.     {
  1320.         $this->publicIdPitchDeck $publicIdPitchDeck !== null ? (string) $publicIdPitchDeck null;
  1321.     }
  1322.     /**
  1323.      * @return string|null
  1324.      */
  1325.     public function getIdeaPaperUrl(): ?string
  1326.     {
  1327.         return $this->ideaPaperUrl;
  1328.     }
  1329.     /**
  1330.      * @param string|null $ideaPaperUrl
  1331.      */
  1332.     public function setIdeaPaperUrl($ideaPaperUrl): void
  1333.     {
  1334.         $this->ideaPaperUrl $ideaPaperUrl !== null ? (string) $ideaPaperUrl null;
  1335.     }
  1336.     /**
  1337.      * @return string|null
  1338.      */
  1339.     public function getPublicIdIdeaPaper(): ?string
  1340.     {
  1341.         return $this->publicIdIdeaPaper;
  1342.     }
  1343.     /**
  1344.      * @param string|null $publicIdIdeaPaper
  1345.      */
  1346.     public function setPublicIdIdeaPaper(?string $publicIdIdeaPaper): void
  1347.     {
  1348.         $this->publicIdIdeaPaper $publicIdIdeaPaper !== null ? (string) $publicIdIdeaPaper null;
  1349.     }
  1350.     /**
  1351.      * @return string
  1352.      */
  1353.     public function getWebsiteUrl()
  1354.     {
  1355.         return $this->websiteUrl;
  1356.     }
  1357.     /**
  1358.      * @param string $websiteUrl
  1359.      */
  1360.     public function setWebsiteUrl($websiteUrl): void
  1361.     {
  1362.         $this->websiteUrl $websiteUrl !== null ? (string) $websiteUrl null;
  1363.     }
  1364.     /**
  1365.      * @return string
  1366.      */
  1367.     public function getFulltime()
  1368.     {
  1369.         return $this->fulltime;
  1370.     }
  1371.     /**
  1372.      * @param string $fulltime
  1373.      */
  1374.     public function setFulltime($fulltime): void
  1375.     {
  1376.         $this->fulltime $fulltime !== null ? (string) $fulltime null;
  1377.     }
  1378.     /**
  1379.      * @return string
  1380.      */
  1381.     public function getLanguage()
  1382.     {
  1383.         return $this->language;
  1384.     }
  1385.     /**
  1386.      * @param string $language
  1387.      */
  1388.     public function setLanguage($language): void
  1389.     {
  1390.         $this->language $language !== null ? (string) $language null;
  1391.     }
  1392.     /**
  1393.      * @return string
  1394.      */
  1395.     public function getMvpStatus()
  1396.     {
  1397.         return $this->mvpStatus;
  1398.     }
  1399.     /**
  1400.      * @param string $mvpStatus
  1401.      */
  1402.     public function setMvpStatus($mvpStatus): void
  1403.     {
  1404.         $this->mvpStatus $mvpStatus !== null ? (string) $mvpStatus null;
  1405.     }
  1406.     /**
  1407.      * @return string
  1408.      */
  1409.     public function getDealroomUrl()
  1410.     {
  1411.         return $this->dealroomUrl;
  1412.     }
  1413.     /**
  1414.      * @param string $dealroomUrl
  1415.      */
  1416.     public function setDealroomUrl($dealroomUrl): void
  1417.     {
  1418.         $this->dealroomUrl $dealroomUrl !== null ? (string) $dealroomUrl null;
  1419.     }
  1420.     /**
  1421.      * @return string
  1422.      */
  1423.     public function getPodioId()
  1424.     {
  1425.         return $this->podioId;
  1426.     }
  1427.     /**
  1428.      * @param string $podioId
  1429.      */
  1430.     public function setPodioId($podioId): void
  1431.     {
  1432.         $this->podioId $podioId !== null ? (string) $podioId null;
  1433.     }
  1434.     /**
  1435.      * @return string
  1436.      */
  1437.     public function getPodioItemId()
  1438.     {
  1439.         return $this->podioItemId;
  1440.     }
  1441.     /**
  1442.      * @param string $podioItemId
  1443.      */
  1444.     public function setPodioItemId($podioItemId): void
  1445.     {
  1446.         $this->podioItemId $podioItemId !== null ? (string) $podioItemId null;
  1447.     }
  1448.     /**
  1449.      * @return string
  1450.      */
  1451.     public function getPodioUrl()
  1452.     {
  1453.         return $this->podioUrl;
  1454.     }
  1455.     /**
  1456.      * @param string $podioUrl
  1457.      */
  1458.     public function setPodioUrl($podioUrl): void
  1459.     {
  1460.         $this->podioUrl $podioUrl !== null ? (string) $podioUrl null;
  1461.     }
  1462.     /**
  1463.      * Set lastModified
  1464.      *
  1465.      * @param DateTime $lastModified
  1466.      *
  1467.      * @return Application
  1468.      */
  1469.     public function setLastModified($lastModified)
  1470.     {
  1471.         $this->lastModified $lastModified;
  1472.         return $this;
  1473.     }
  1474.     /**
  1475.      * Get lastModified
  1476.      *
  1477.      * @return DateTime
  1478.      */
  1479.     public function getLastModified()
  1480.     {
  1481.         return $this->lastModified;
  1482.     }
  1483.     /**
  1484.      * Set lastChangeUser
  1485.      *
  1486.      * @param string $lastChangeUser
  1487.      *
  1488.      * @return Application
  1489.      */
  1490.     public function setLastChangeUser($lastChangeUser)
  1491.     {
  1492.         $this->lastChangeUser $lastChangeUser !== null ? (string) $lastChangeUser null;
  1493.         return $this;
  1494.     }
  1495.     /**
  1496.      * Get lastChangeUser
  1497.      *
  1498.      * @return string
  1499.      */
  1500.     public function getLastChangeUser()
  1501.     {
  1502.         return $this->lastChangeUser;
  1503.     }
  1504.     /**
  1505.      * @return string
  1506.      */
  1507.     public function getHistory()
  1508.     {
  1509.         return $this->history;
  1510.     }
  1511.     /**
  1512.      * @param string $history
  1513.      */
  1514.     public function setHistory($history): void
  1515.     {
  1516.         $this->history $history !== null ? (string) $history null;
  1517.     }
  1518.     /**
  1519.      * @return string
  1520.      */
  1521.     public function getExtraFields()
  1522.     {
  1523.         return $this->extraFields;
  1524.     }
  1525.     /**
  1526.      * @param string $extraFields
  1527.      */
  1528.     public function setExtraFields($extraFields): void
  1529.     {
  1530.         $this->extraFields $extraFields !== null ? (string) $extraFields null;
  1531.     }
  1532.     /**
  1533.      * @return string
  1534.      */
  1535.     public function getAdminNotes()
  1536.     {
  1537.         return $this->adminNotes;
  1538.     }
  1539.     /**
  1540.      * @param string $adminNotes
  1541.      */
  1542.     public function setAdminNotes($adminNotes): void
  1543.     {
  1544.         $this->adminNotes $adminNotes !== null ? (string) $adminNotes null;
  1545.     }
  1546.     /**
  1547.      * @return bool
  1548.      */
  1549.     public function getIsExistingApplication()
  1550.     {
  1551.         return $this->isExistingApplication;
  1552.     }
  1553.     /**
  1554.      * @return bool
  1555.      */
  1556.     public function isExistingApplication()
  1557.     {
  1558.         return $this->isExistingApplication;
  1559.     }
  1560.     /**
  1561.      * @param bool $isExistingApplication
  1562.      */
  1563.     public function setIsExistingApplication($isExistingApplication): void
  1564.     {
  1565.         $this->isExistingApplication $isExistingApplication;
  1566.     }
  1567.     /**
  1568.      * @return array
  1569.      */
  1570.     public function getAssessments()
  1571.     {
  1572.         return $this->assessments;
  1573.     }
  1574.     #[ORM\PrePersist]
  1575.     public function onAdd(): void
  1576.     {
  1577.         $this->setCreatedAt(new DateTime('now'));
  1578.         $this->setVotesRegistered(0);
  1579.     }
  1580.     #[ORM\PrePersist]
  1581.     #[ORM\PreUpdate]
  1582.     public function onUpdate(): void
  1583.     {
  1584.         $this->setLastModified(new DateTime('now'));
  1585.     }
  1586.     private function adjustExternalUrlToHttps($url)
  1587.     {
  1588.         $url trim((string) $url);
  1589.         if($url == '') {
  1590.             return $url;
  1591.         } elseif(str_starts_with($url'https://')) {
  1592.             return $url;
  1593.         } elseif(str_starts_with($url'http://')) {
  1594.             return str_replace('http''https'$url);
  1595.         } elseif(strpos($url'://') and $arr explode('://'$url) and count($arr) == 2) {
  1596.             return 'https://'.$arr[1];
  1597.         } else {
  1598.             return 'https://'.$url;
  1599.         }
  1600.     }
  1601.     /**
  1602.      * Get ratingJudge1
  1603.      *
  1604.      * @return integer|null
  1605.      */
  1606.     public function getRatingJudge1()
  1607.     {
  1608.         return $this->ratingJudge1;
  1609.     }
  1610.     /**
  1611.      * Set ratingJudge1
  1612.      *
  1613.      * @param integer|null $ratingJudge1
  1614.      * @return Application
  1615.      */
  1616.     public function setRatingJudge1($ratingJudge1)
  1617.     {
  1618.         $this->ratingJudge1 $ratingJudge1 !== null ? (string) $ratingJudge1 null;
  1619.         return $this;
  1620.     }
  1621.     /**
  1622.      * Get ratingJudge2
  1623.      *
  1624.      * @return integer|null
  1625.      */
  1626.     public function getRatingJudge2()
  1627.     {
  1628.         return $this->ratingJudge2;
  1629.     }
  1630.     /**
  1631.      * Set ratingJudge2
  1632.      *
  1633.      * @param integer|null $ratingJudge2
  1634.      * @return Application
  1635.      */
  1636.     public function setRatingJudge2($ratingJudge2)
  1637.     {
  1638.         $this->ratingJudge2 $ratingJudge2 !== null ? (string) $ratingJudge2 null;
  1639.         return $this;
  1640.     }
  1641.     /**
  1642.      * Get ratingJudge3
  1643.      *
  1644.      * @return integer|null
  1645.      */
  1646.     public function getRatingJudge3()
  1647.     {
  1648.         return $this->ratingJudge3;
  1649.     }
  1650.     /**
  1651.      * Set ratingJudge3
  1652.      *
  1653.      * @param integer|null $ratingJudge3
  1654.      * @return Application
  1655.      */
  1656.     public function setRatingJudge3($ratingJudge3)
  1657.     {
  1658.         $this->ratingJudge3 $ratingJudge3 !== null ? (string) $ratingJudge3 null;
  1659.         return $this;
  1660.     }
  1661.     /**
  1662.      * Get ratingJudge4
  1663.      *
  1664.      * @return integer|null
  1665.      */
  1666.     public function getRatingJudge4()
  1667.     {
  1668.         return $this->ratingJudge4;
  1669.     }
  1670.     /**
  1671.      * Set ratingJudge4
  1672.      *
  1673.      * @param integer|null $ratingJudge4
  1674.      * @return Application
  1675.      */
  1676.     public function setRatingJudge4($ratingJudge4)
  1677.     {
  1678.         $this->ratingJudge4 $ratingJudge4 !== null ? (string) $ratingJudge4 null;
  1679.         return $this;
  1680.     }
  1681.     /**
  1682.      * Get ratingJudge5
  1683.      *
  1684.      * @return integer|null
  1685.      */
  1686.     public function getRatingJudge5()
  1687.     {
  1688.         return $this->ratingJudge5;
  1689.     }
  1690.     /**
  1691.      * Set ratingJudge5
  1692.      *
  1693.      * @param integer|null $ratingJudge5
  1694.      * @return Application
  1695.      */
  1696.     public function setRatingJudge5($ratingJudge5)
  1697.     {
  1698.         $this->ratingJudge5 $ratingJudge5 !== null ? (string) $ratingJudge5 null;
  1699.         return $this;
  1700.     }
  1701.     /**
  1702.      * Get ratingAverage
  1703.      *
  1704.      * @return float|null
  1705.      */
  1706.     public function getRatingAverage()
  1707.     {
  1708.         return $this->ratingAverage;
  1709.     }
  1710.     /**
  1711.      * Set ratingAverage
  1712.      *
  1713.      * @param float|null $ratingAverage
  1714.      * @return Application
  1715.      */
  1716.     public function setRatingAverage($ratingAverage)
  1717.     {
  1718.         $this->ratingAverage $ratingAverage !== null && $ratingAverage !== '' ? (float) $ratingAverage null;
  1719.         return $this;
  1720.     }
  1721.     /**
  1722.      * Get ratingUpdatedAt
  1723.      *
  1724.      * @return \DateTime|null
  1725.      */
  1726.     public function getRatingUpdatedAt()
  1727.     {
  1728.         return $this->ratingUpdatedAt;
  1729.     }
  1730.     /**
  1731.      * Set ratingUpdatedAt
  1732.      *
  1733.      * @param \DateTime|null $ratingUpdatedAt
  1734.      * @return Application
  1735.      */
  1736.     public function setRatingUpdatedAt($ratingUpdatedAt)
  1737.     {
  1738.         $this->ratingUpdatedAt $ratingUpdatedAt;
  1739.         return $this;
  1740.     }
  1741.     /**
  1742.      * Calculate and update the average rating based on all judge ratings
  1743.      *
  1744.      * @return float|null
  1745.      */
  1746.     public function calculateAverageRating()
  1747.     {
  1748.         $ratings array_filter([
  1749.             $this->ratingJudge1,
  1750.             $this->ratingJudge2,
  1751.             $this->ratingJudge3,
  1752.             $this->ratingJudge4,
  1753.             $this->ratingJudge5
  1754.         ], function($rating) {
  1755.             return $rating !== null && $rating 0;
  1756.         });
  1757.         if (count($ratings) === 0) {
  1758.             $this->ratingAverage null;
  1759.             return null;
  1760.         }
  1761.         $average round(array_sum($ratings) / count($ratings), 2);
  1762.         $this->ratingAverage $average;
  1763.         return $average;
  1764.     }
  1765.     /**
  1766.      * Get all ratings as an array
  1767.      *
  1768.      * @return array
  1769.      */
  1770.     public function getRatingsArray()
  1771.     {
  1772.         return [
  1773.             'judge1' => $this->ratingJudge1,
  1774.             'judge2' => $this->ratingJudge2,
  1775.             'judge3' => $this->ratingJudge3,
  1776.             'judge4' => $this->ratingJudge4,
  1777.             'judge5' => $this->ratingJudge5,
  1778.             'average' => $this->ratingAverage
  1779.         ];
  1780.     }
  1781.     /**
  1782.      * Get memberTagsAtRegistration
  1783.      *
  1784.      * @return string|null
  1785.      */
  1786.     public function getMemberTagsAtRegistration(): ?string
  1787.     {
  1788.         return $this->memberTagsAtRegistration;
  1789.     }
  1790.     /**
  1791.      * Set memberTagsAtRegistration
  1792.      *
  1793.      * @param string|null $memberTagsAtRegistration
  1794.      * @return Application
  1795.      */
  1796.     public function setMemberTagsAtRegistration($memberTagsAtRegistration): Application
  1797.     {
  1798.         $this->memberTagsAtRegistration $memberTagsAtRegistration !== null ? (string) $memberTagsAtRegistration null;
  1799.         return $this;
  1800.     }
  1801.     /**
  1802.      * Get wasCommunityMemberAtRegistration
  1803.      *
  1804.      * @return bool|null
  1805.      */
  1806.     public function getWasCommunityMemberAtRegistration(): bool|int|null
  1807.     {
  1808.         return $this->wasCommunityMemberAtRegistration;
  1809.     }
  1810.     /**
  1811.      * Set wasCommunityMemberAtRegistration
  1812.      *
  1813.      * @param bool|null $wasCommunityMemberAtRegistration
  1814.      * @return Application
  1815.      */
  1816.     public function setWasCommunityMemberAtRegistration(bool|int|null $wasCommunityMemberAtRegistration): Application
  1817.     {
  1818.         $this->wasCommunityMemberAtRegistration $wasCommunityMemberAtRegistration !== null ? (bool) $wasCommunityMemberAtRegistration null;
  1819.         return $this;
  1820.     }
  1821.     /**
  1822.      * Get wasPhysicalMemberAtRegistration
  1823.      *
  1824.      * @return bool|null
  1825.      */
  1826.     public function getWasPhysicalMemberAtRegistration(): bool|int|null
  1827.     {
  1828.         return $this->wasPhysicalMemberAtRegistration;
  1829.     }
  1830.     /**
  1831.      * Set wasPhysicalMemberAtRegistration
  1832.      *
  1833.      * @param bool|null $wasPhysicalMemberAtRegistration
  1834.      * @return Application
  1835.      */
  1836.     public function setWasPhysicalMemberAtRegistration(bool|int|null $wasPhysicalMemberAtRegistration): Application
  1837.     {
  1838.         $this->wasPhysicalMemberAtRegistration $wasPhysicalMemberAtRegistration !== null ? (bool) $wasPhysicalMemberAtRegistration null;
  1839.         return $this;
  1840.     }
  1841.     /**
  1842.      * Get memberUtmSourceAtRegistration
  1843.      *
  1844.      * @return string|null
  1845.      */
  1846.     public function getMemberUtmSourceAtRegistration(): ?string
  1847.     {
  1848.         return $this->memberUtmSourceAtRegistration;
  1849.     }
  1850.     /**
  1851.      * Set memberUtmSourceAtRegistration
  1852.      *
  1853.      * @param string|null $memberUtmSourceAtRegistration
  1854.      * @return Application
  1855.      */
  1856.     public function setMemberUtmSourceAtRegistration($memberUtmSourceAtRegistration): Application
  1857.     {
  1858.         $this->memberUtmSourceAtRegistration $memberUtmSourceAtRegistration !== null ? (string) $memberUtmSourceAtRegistration null;
  1859.         return $this;
  1860.     }
  1861.     /**
  1862.      * Get kiKompetenzAtRegistration
  1863.      *
  1864.      * @return string|null
  1865.      */
  1866.     public function getKiKompetenzAtRegistration(): ?string
  1867.     {
  1868.         return $this->kiKompetenzAtRegistration;
  1869.     }
  1870.     /**
  1871.      * Set kiKompetenzAtRegistration
  1872.      *
  1873.      * @param string|null $kiKompetenzAtRegistration
  1874.      * @return Application
  1875.      */
  1876.     public function setKiKompetenzAtRegistration($kiKompetenzAtRegistration): Application
  1877.     {
  1878.         $this->kiKompetenzAtRegistration $kiKompetenzAtRegistration !== null ? (string) $kiKompetenzAtRegistration null;
  1879.         return $this;
  1880.     }
  1881.     // ==================== ApplicationFlow Getters/Setters ====================
  1882.     public function getPendingMemberData(): ?array
  1883.     {
  1884.         return $this->pendingMemberData;
  1885.     }
  1886.     public function setPendingMemberData(?array $pendingMemberData): self
  1887.     {
  1888.         $this->pendingMemberData $pendingMemberData;
  1889.         return $this;
  1890.     }
  1891.     public function getPendingTeamData(): ?array
  1892.     {
  1893.         return $this->pendingTeamData;
  1894.     }
  1895.     public function setPendingTeamData(?array $pendingTeamData): self
  1896.     {
  1897.         $this->pendingTeamData $pendingTeamData;
  1898.         return $this;
  1899.     }
  1900.     public function getResumeToken(): ?string
  1901.     {
  1902.         return $this->resumeToken;
  1903.     }
  1904.     public function setResumeToken($resumeToken): self
  1905.     {
  1906.         $this->resumeToken $resumeToken !== null ? (string) $resumeToken null;
  1907.         return $this;
  1908.     }
  1909.     public function getResumeTokenExpiresAt(): ?\DateTime
  1910.     {
  1911.         return $this->resumeTokenExpiresAt;
  1912.     }
  1913.     public function setResumeTokenExpiresAt(?\DateTime $resumeTokenExpiresAt): self
  1914.     {
  1915.         $this->resumeTokenExpiresAt $resumeTokenExpiresAt;
  1916.         return $this;
  1917.     }
  1918.     public function isResumeTokenExpired(): bool
  1919.     {
  1920.         if ($this->resumeTokenExpiresAt === null) {
  1921.             return true;
  1922.         }
  1923.         return $this->resumeTokenExpiresAt < new \DateTime();
  1924.     }
  1925.     public function getIsMemberCreated(): bool
  1926.     {
  1927.         return $this->isMemberCreated;
  1928.     }
  1929.     public function isMemberCreated(): bool
  1930.     {
  1931.         return $this->isMemberCreated;
  1932.     }
  1933.     public function setIsMemberCreated(bool|int|null $isMemberCreated): self
  1934.     {
  1935.         $this->isMemberCreated $isMemberCreated;
  1936.         return $this;
  1937.     }
  1938.     public function getIsTeamCreated(): bool
  1939.     {
  1940.         return $this->isTeamCreated;
  1941.     }
  1942.     public function isTeamCreated(): bool
  1943.     {
  1944.         return $this->isTeamCreated;
  1945.     }
  1946.     public function setIsTeamCreated(bool|int|null $isTeamCreated): self
  1947.     {
  1948.         $this->isTeamCreated $isTeamCreated;
  1949.         return $this;
  1950.     }
  1951.     /**
  1952.      * Check if this application has pending data that needs finalization
  1953.      */
  1954.     public function hasPendingData(): bool
  1955.     {
  1956.         return $this->pendingMemberData !== null || $this->pendingTeamData !== null;
  1957.     }
  1958.     /**
  1959.      * Check if this application is finalized (member and/or team created)
  1960.      */
  1961.     public function isFinalized(): bool
  1962.     {
  1963.         // Finalized means either:
  1964.         // 1. New flow: isMemberCreated flag is set
  1965.         // 2. Legacy: memberId is already set (from old flow)
  1966.         return $this->isMemberCreated || $this->memberId !== null;
  1967.     }
  1968.     // ========== SOFT DELETE ==========
  1969.     public function getDeletedAt(): ?DateTime
  1970.     {
  1971.         return $this->deletedAt;
  1972.     }
  1973.     public function setDeletedAt(?DateTime $deletedAt): self
  1974.     {
  1975.         $this->deletedAt $deletedAt;
  1976.         return $this;
  1977.     }
  1978.     public function isDeleted(): bool
  1979.     {
  1980.         return $this->deletedAt !== null;
  1981.     }
  1982. }