src/App/Entity/ExternalPartner/IntegratedExternalPartnerCustomer.php line 35

Open in your IDE?
  1. <?php
  2. namespace App\Entity\ExternalPartner;
  3. use App\Entity\ContentDistribution\AgenturFuerArbeit\DestatisEconomicSector;
  4. use App\Entity\ContentDistribution\IntegratedExternalPartnerCustomerContentDistributionValue;
  5. use App\Entity\Profile;
  6. use App\Entity\ProfileBlock;
  7. use App\Enum\ExternalPartner\IntegratedExternalPartnerCustomer\AcquisitionMethod;
  8. use App\Enum\ExternalPartner\IntegratedExternalPartnerCustomer\BilledParty;
  9. use App\Service\DestatisEconomicSectorService;
  10. use App\Service\ExternalPartner\IntegratedExternalPartnerCustomerService;
  11. use App\Utility\ReflectionHelper;
  12. use Doctrine\Common\Collections\ArrayCollection;
  13. use Doctrine\Common\Collections\Collection;
  14. use Doctrine\ORM\Mapping as ORM;
  15. use Exception;
  16. use InvalidArgumentException;
  17. use JanusHercules\ExtendedApplicationQuestionnaire\Domain\Entity\ExtendedApplicationCustomerQuestionTemplate;
  18. use JanusHercules\IntegratedExternalPartnerCustomers\Domain\Entity\WeclappContract;
  19. use JanusHercules\IntegratedExternalPartnerCustomers\Domain\Entity\WeclappParty;
  20. /**
  21. * @ORM\Entity
  22. *
  23. * @ORM\Table(
  24. * name="integrated_external_partner_customers",
  25. * uniqueConstraints={
  26. *
  27. * @ORM\UniqueConstraint(name="external_partners_id_business_name_idx", columns={"external_partners_id", "business_name"}),
  28. * @ORM\UniqueConstraint(name="internal_id_idx", columns={"internal_id"})
  29. * }
  30. * )
  31. */
  32. class IntegratedExternalPartnerCustomer
  33. {
  34. /* IMPORTANT!
  35. * Whenever a new customer is defined here,
  36. * it MUST be added to the documentation at
  37. * https://go-gastro.atlassian.net/wiki/spaces/SD/pages/1171783681/Austausch+fachlicher+Daten+mit+Dritten
  38. */
  39. public const string INTERNAL_ID_WISAG = 'wisag';
  40. public const string INTERNAL_ID_REWE = 'rewe';
  41. public const string INTERNAL_ID_EDEKA_NST_1 = 'edeka-nst-1';
  42. public const string INTERNAL_ID_EDEKA_NST_2 = 'edeka-nst-2';
  43. public const string INTERNAL_ID_DEKRA = 'dekra';
  44. public const string INTERNAL_ID_KAUFLAND = 'kaufland';
  45. public const string INTERNAL_ID_TANK_UND_RAST = 'tank-und-rast';
  46. public const string INTERNAL_ID_DEUTSCHE_HOSPITALITY = 'deutsche-hospitality';
  47. public const string INTERNAL_ID_DEUTSCHE_HOSPITALITY_2 = 'deutsche-hospitality-2';
  48. public const string INTERNAL_ID_YUM = 'yum';
  49. public const string INTERNAL_ID_HAYS = 'hays';
  50. public const string INTERNAL_ID_HORNBACH = 'hornbach';
  51. public const string INTERNAL_ID_GLOBUS = 'globus';
  52. public const string INTERNAL_ID_STARBUCKS = 'starbucks';
  53. public const string INTERNAL_ID_BARTELS_LANGNESS = 'bartels-langness';
  54. public const string INTERNAL_ID_STAFFPILOT = 'staffpilot';
  55. public const string INTERNAL_ID_ALLRESTO = 'allresto';
  56. public const string INTERNAL_ID_AREAS = 'areas';
  57. public const string INTERNAL_ID_MSP_MEINHARDT = 'msp-meinhardt';
  58. public const string INTERNAL_ID_CASUALFOOD = 'casualfood';
  59. public const string INTERNAL_ID_CELLIT = 'cellit';
  60. public const string INTERNAL_ID_MISTERSPEX = 'misterspex';
  61. public const string INTERNAL_ID_SMARTVENTURES = 'smartventures';
  62. public const string INTERNAL_ID_LENKZEIT = 'lenkzeit';
  63. public const string INTERNAL_ID_TDC_HOSPITALITY = 'tdc-hospitality';
  64. public const string INTERNAL_ID_ROC = 'roc';
  65. public const string INTERNAL_ID_ROSSMANN = 'rossmann';
  66. public const string INTERNAL_ID_FLEXITEL = 'flexitel';
  67. public const string INTERNAL_ID_MOEVENPICK = 'moevenpick';
  68. public const string INTERNAL_ID_FAHR_ZEIT = 'fahr-zeit';
  69. public const string INTERNAL_ID_GLOBETROTTER = 'globetrotter';
  70. public const string INTERNAL_ID_KOETTER = 'koetter';
  71. public const string INTERNAL_ID_CONCENTRIX = 'concentrix';
  72. public const string INTERNAL_ID_AVEO = 'aveo';
  73. public const string INTERNAL_ID_EDEKA_SUEDWEST_1 = 'edeka-suedwest-1';
  74. public const string INTERNAL_ID_EDEKA_SUEDWEST_2 = 'edeka-suedwest-2';
  75. public const string INTERNAL_ID_FLASCHENPOST = 'flaschenpost';
  76. public const string INTERNAL_ID_XING = 'xing';
  77. public const string INTERNAL_ID_KOETTER_PERSONAL = 'koetter-personal';
  78. public const string INTERNAL_ID_PREMIER_INN = 'premier-inn';
  79. public const string INTERNAL_ID_BOFROST = 'bofrost';
  80. public const string INTERNAL_ID_EDEKA_SUEDWEST_GH = 'edeka-suedwest-gh';
  81. public const string INTERNAL_ID_EDEKA_SUEDWEST_GH_AZUBI = 'edeka-suedwest-gh-azubi';
  82. public const string INTERNAL_ID_HOFMANNS_CATERING = 'hofmanns-catering';
  83. public const string INTERNAL_ID_GERRYWEBER = 'gerryweber';
  84. public const string INTERNAL_ID_COPART = 'copart';
  85. public const string INTERNAL_ID_DEUTSCHE_BAHN_AG = 'deutsche-bahn-ag';
  86. public const string INTERNAL_ID_DEUTSCHE_BAHN_AG_AZUBI = 'deutsche-bahn-ag-azubi';
  87. public const string INTERNAL_ID_ROSSMANN_MILCH_UND_ZUCKER = 'rossmann-milch-und-zucker';
  88. public const string INTERNAL_ID_ROSSMANN_MILCH_UND_ZUCKER_AUSBILDUNG = 'rossmann-milch-und-zucker-ausbildung';
  89. public const string INTERNAL_ID_UNIQUE_GEWERBLICH = 'unique-gewerblich';
  90. public const string INTERNAL_ID_KAUFLAND_AUSHILFE = 'kaufland-aushilfe';
  91. public const string INTERNAL_ID_HUGO_BOSS_RJME = 'hugo-boss-rjme';
  92. public const string INTERNAL_ID_PREMIER_INN_GH = 'premier-inn-gh';
  93. public const string INTERNAL_ID_GAUSELMANN_AG = 'gauselmann-ag';
  94. public const string INTERNAL_ID_SEA_CHEFS = 'sea-chefs';
  95. public const string INTERNAL_ID_A_UND_H_ZEITARBEIT = 'a-und-h-zeitarbeit';
  96. public const string INTERNAL_ID_KAUFLAND_XML = 'kaufland-xml';
  97. public const string INTERNAL_ID_KAUFLAND_XML_AUSBILDUNG = 'kaufland-xml-ausbildung';
  98. public const string INTERNAL_ID_TENHIL_STELLENANZEIGEN_DE = 'tenhil-stellenanzeigen-de';
  99. public const string INTERNAL_ID_TENHIL_YOURFIRM = 'tenhil-yourfirm';
  100. public const string INTERNAL_ID_TENHIL_REGIO_JOBANZEIGER = 'tenhil-regio-jobanzeiger';
  101. public const string INTERNAL_ID_TENHIL_JOBBLITZ = 'tenhil-jobblitz';
  102. public const string INTERNAL_ID_TENHIL_KALAYDO = 'tenhil-kalaydo';
  103. public const string INTERNAL_ID_TENHIL_IT_JOBS = 'tenhil-it-jobs';
  104. public const string INTERNAL_ID_EDEKA_SUEDBAYERN = 'edeka-suedbayern';
  105. public const string INTERNAL_ID_TIPICO = 'tipico';
  106. public const string INTERNAL_ID_ESPITAS = 'espitas';
  107. public const string INTERNAL_ID_IKEA = 'ikea';
  108. public const string INTERNAL_ID_NATSU_FOODS = 'natsu-foods';
  109. public const string INTERNAL_ID_WISAG_CONCLUDIS_API = 'wisag-concludis-api';
  110. public const string INTERNAL_ID_MEINESTADT_DE = 'meinestadt-de';
  111. public const string INTERNAL_ID_AMREST_DE = 'amrest-de';
  112. public const string INTERNAL_ID_SUPERBIOMARKT = 'superbiomarkt';
  113. public const string INTERNAL_ID_VION = 'vion';
  114. public const string INTERNAL_ID_DBA_RJME = 'dba-rjme';
  115. public const string INTERNAL_ID_GLOBUS_TALENTSCONNECT = 'globus-talentsconnect';
  116. public const string INTERNAL_ID_POLYGON_RJME = 'polygon-rjme';
  117. public const string INTERNAL_ID_DEUTSCHE_TECHNIKBERATUNG = 'deutsche-technikberatung';
  118. public const string INTERNAL_ID_DEUTSCHE_TECHNIKBERATUNG_2 = 'deutsche-technikberatung-2';
  119. public const string INTERNAL_ID_EMONS = 'emons';
  120. public const string INTERNAL_ID_GLOBUS_NEUTRAUBLING = 'globus-neutraubling';
  121. public const string INTERNAL_ID_MOSCHMOSCH = 'moschmosch';
  122. public const string INTERNAL_ID_AH_TRADING = 'ah-trading';
  123. public const string INTERNAL_ID_RHENUS = 'rhenus';
  124. public const string INTERNAL_ID_TALK2MOVE = 'talk2move';
  125. public const string INTERNAL_ID_BACKSTUBE_WUNSCH = 'backstube-wuensche';
  126. public const string INTERNAL_ID_ADP = 'adp';
  127. public const string INTERNAL_ID_SECURITAS_RJME = 'securitas-rjme';
  128. public const string INTERNAL_ID_TREND_PERSONAL = 'trend-personal';
  129. public const string INTERNAL_ID_JOHANNESBAD = 'johannesbad';
  130. public const string INTERNAL_ID_ALLDRINK = 'alldrink';
  131. public const string INTERNAL_ID_BOFINGER_RJME = 'bofinger-rjme';
  132. public const string INTERNAL_ID_REGIOCAST = 'regiocast';
  133. public const string INTERNAL_ID_DEKRA_COMPLEET = 'dekra-compleet';
  134. public const string INTERNAL_ID_RANGER_MARKETING = 'ranger-marketing';
  135. public const string INTERNAL_ID_ADECCO = 'adecco';
  136. public const string INTERNAL_ID_A_UND_O_HOSTELS = 'a-und-o-hostels';
  137. public const string INTERNAL_ID_AHORN_HOTELS = 'ahorn-hotels';
  138. public const string INTERNAL_ID_AHORN_HOTELS_AZUBI = 'ahorn-hotels-azubi';
  139. public const string INTERNAL_ID_KAEFER = 'kaefer';
  140. public const string INTERNAL_ID_LENNARTZ_RJME = 'lennartz-rjme';
  141. public const string INTERNAL_ID_DZINGEL = 'dzingel';
  142. public const string INTERNAL_ID_MUTH_TREUHAND_RJME = 'muth-treuhand-rjme';
  143. public const string INTERNAL_ID_MARC_O_POLO_GH = 'marc-o-polo-gh';
  144. public const string INTERNAL_ID_HELLOFRESH = 'hellofresh';
  145. public const string INTERNAL_ID_DPDHL = 'dpdhl';
  146. public const string INTERNAL_ID_THYSSENKRUPP = 'thyssenkrupp';
  147. public const string INTERNAL_ID_EPOS = 'epos';
  148. public const string INTERNAL_ID_WEKA_RJME = 'weka-rjme';
  149. public const string INTERNAL_ID_HEPPNER_RJME = 'heppner-rjme';
  150. public const string INTERNAL_ID_WUHRER_UND_RIES = 'wuhrer-und-ries-rjme';
  151. public const string INTERNAL_ID_MID = 'mid-rjme';
  152. public const string INTERNAL_ID_PFEIFFER = 'pfeifer-rjme';
  153. public const string INTERNAL_ID_RETRUST = 'retrust';
  154. public const string INTERNAL_ID_KANZLEI_WINKELMANN_RJME = 'kanzlei-winkelmann-rjme';
  155. public const string INTERNAL_ID_SCHMID = 'schmid';
  156. public const string INTERNAL_ID_MAGELLAN = 'magellan';
  157. public const string INTERNAL_ID_RUDOLF_WEBER = 'rudolf-weber';
  158. public const string INTERNAL_ID_RUNMED_RJME = 'runmed-rjme';
  159. public const string INTERNAL_ID_ACCU = 'accu';
  160. public const string INTERNAL_ID_AUTOHAUS_HECKER_RJME = 'autohaus-hecker';
  161. public const string INTERNAL_ID_BAUER_RJME = 'bauer-rjme';
  162. public const string INTERNAL_ID_BAUER_LEBENSLAUFPFLICHT_RJME = 'bauer-lebenslaufpflicht-rjme';
  163. public const string INTERNAL_ID_PIEPENBROCK = 'piepenbrock';
  164. public const string INTERNAL_ID_CLOPPENBURG = 'cloppenburg';
  165. public const string INTERNAL_ID_AUTO1 = 'auto1';
  166. public const string INTERNAL_ID_WITHTEC = 'withtec';
  167. public const string INTERNAL_ID_JOBOO = 'joboo-rjme';
  168. public const string INTERNAL_ID_CONDOR_SICHERHEIT = 'condor';
  169. public const string INTERNAL_ID_LIDL = 'lidl';
  170. public const string INTERNAL_ID_LANDHAUS_STRICKER_RJME = 'landhaus-stricker-rjme';
  171. public const string INTERNAL_ID_S_FINANZDIENSTE_GMBH_DER_SPARKASSE_KREFELD = 's-finanzdienste-rjme';
  172. public const string INTERNAL_ID_EDEKA_NORD_GH = 'edeka-nord';
  173. public const string INTERNAL_ID_ROFU = 'rofu';
  174. public const string INTERNAL_ID_ZURICH_RJME = 'zurich-rjme';
  175. public const string INTERNAL_ID_FROZENFISH_RJME = 'frozenfish-rjme';
  176. public const string INTERNAL_ID_DPDHL_AZUBI = 'dpdhl-azubi';
  177. public const string INTERNAL_ID_EXPACK_RJME = 'expack-rjme';
  178. public const string INTERNAL_ID_KOENIGSTEINER_RJME = 'koenigsteiner-rjme';
  179. public const string INTERNAL_ID_WACKLER_GROUP = 'wackler-group';
  180. public const string INTERNAL_ID_LOHNSTEUERHILFEVEREIN = 'lohnsteuerhilfeverein';
  181. public const string INTERNAL_ID_RANGER_MARKETING_RJME = 'ranger-marketing-rjme';
  182. public const string INTERNAL_ID_RANGER_MARKETING_1 = 'ranger-marketing-1';
  183. public const string INTERNAL_ID_ALLIANZ_RJME = 'allianz-rjme';
  184. public const string INTERNAL_ID_INTERNATIONALER_BUND = 'internationaler-bund';
  185. public const string INTERNAL_ID_BAUKNECHT_IMMOBILIEN_RJME = 'bauknecht-immobilien-rjme';
  186. public const string INTERNAL_ID_WUERTH_ELEKTRONIK_RJME = 'würth-elektronik-rjme';
  187. public const string INTERNAL_ID_KOENIGSTEINER_RJME_WMF = 'koenigsteiner-rjme-wmf';
  188. public const string INTERNAL_ID_KOENIGSTEINER_RJME_WMF_SB = 'koenigsteiner-rjme-wmf-sb';
  189. public const string INTERNAL_ID_KOENIGSTEINER_CHECK24_RJME = 'koenigsteiner-check24-rjme';
  190. public const string INTERNAL_ID_REBUY_RJME = 'rebuy-rjme';
  191. public const string INTERNAL_ID_ADICCON_RJME = 'adiccon-rjme';
  192. public const string INTERNAL_ID_KUHLMANN_RJME = 'kuhlmann-rjme';
  193. public const string INTERNAL_ID_CONDOR_RJME = 'condor-rjme';
  194. public const string INTERNAL_ID_DSR_HOTEL_RJME = 'dsr-hotel-rjme';
  195. public const string INTERNAL_ID_GELSENWASSER_RJME = 'gelsenwasser-rjme';
  196. public const string INTERNAL_ID_DASSBACH_KUECHEN_RJME = 'dassbach-kuechen-rjme';
  197. public const string INTERNAL_ID_BUSCH_TEXTILSERVICE_RJME = 'busch-textilservice-rjme';
  198. public const string INTERNAL_ID_BITTNER_RJME = 'bittner-rjme';
  199. public const string INTERNAL_ID_LANDHAUS_FLOTTNER_RJME = 'landhaus-flottner-rjme';
  200. public const string INTERNAL_ID_RAIFFEISEN_MANNHEIM_RJME = 'raiffeisen-mannheim-rjme';
  201. public const string INTERNAL_ID_JOHANNITER_UNFALL_HILFE_RHEIN_MAIN = 'johanniter-unfall-hilfe-rhein-main';
  202. public const string INTERNAL_ID_BERUFSSTARTER = 'berufsstarter';
  203. public const string INTERNAL_ID_STEINHEUER_RJME = 'steinheuer-rjme';
  204. public const string INTERNAL_ID_METZGEREI_MEISINGER_RJME = 'metzgerei-meisinger-rjme';
  205. public const string INTERNAL_ID_ZUM_KUCKUCK_RJME = 'zum-kuckuck-rjme';
  206. public const string INTERNAL_ID_SCHILLOKS_RJME = 'schilloks-rjme';
  207. public const string INTERNAL_ID_VEREINIGTE_HAGELVERSICHERUNG_RJME = 'vereinigte-hagelversicherung-rjme';
  208. public const string INTERNAL_ID_EHRHARDT_REIFEN = 'ehrhardt-reifen';
  209. public const string INTERNAL_ID_REVIDERM = 'reviderm';
  210. public const string INTERNAL_ID_BAUKNECHT_IMMOBILIEN = 'bauknecht-immobilien';
  211. public const string INTERNAL_ID_SANVARTIS = 'sanvartis';
  212. public const string INTERNAL_ID_GESUNDVERSICHERUNG_RJMEN = 'gesundversicherung-rjme';
  213. public const string INTERNAL_ID_ALB_FILS_KLINIKUM = 'alb-fils-klinikum';
  214. public const string INTERNAL_ID_VR_SMART_RJME = 'vr-smart-rjme';
  215. public const string INTERNAL_ID_HEUTE_COMP_RJME = 'heute-comp-rjme';
  216. public const string INTERNAL_ID_POLIFILM_RJME = 'polifilm-rjme';
  217. public const string INTERNAL_ID_APC_CONSULT_RJME = 'apc-consult-rjme';
  218. public const string INTERNAL_ID_DENKINGER = 'denkinger';
  219. public const string INTERNAL_ID_KARL_UHL_RJME = 'karl-uhl-rjme';
  220. public const string INTERNAL_ID_NO_VENTURE_RJME = 'no-venture-rjme';
  221. public const string INTERNAL_ID_VISSIO = 'vissio';
  222. public const string INTERNAL_ID_PIN_AG_RJME = 'pin-ag-rjme';
  223. public const string INTERNAL_ID_PAULINEN_SERVICE_RJME = 'paulinen-service-rjme';
  224. public const string INTERNAL_ID_SEEDAMM_RJME = 'seedamm-rjme';
  225. public const string INTERNAL_ID_SCHAEFFLER_RJME = 'schaeffler-rjme';
  226. public const string INTERNAL_ID_AXICOM_RJME = 'axicom-rjme';
  227. public const string INTERNAL_ID_ALLIANZ_DIGITAL_RJME = 'allianz-digital-rjme';
  228. public const string INTERNAL_ID_DUSSMAN_RJME = 'dussmann-rjme';
  229. public const string INTERNAL_ID_INTILION_RJME = 'intilion-rjme';
  230. public const string INTERNAL_ID_LBS_IMMOBILIEN_RJME = 'lbs-immobilien-rjme';
  231. public const string INTERNAL_ID_LBS_BAUSPARKASSE_NORDOST_RJME = 'lbs-bausparkasse-nordost-rjme';
  232. public const string INTERNAL_ID_SOFTGARDEN_BAYWA_AG = 'softgarden-baywa-ag';
  233. public const string INTERNAL_ID_SOFTGARDEN_BAYWA_HAUSTECHNIK = 'softgarden-baywa-haustechnik';
  234. public const string INTERNAL_ID_BRAND_ENERGY_RJME = 'brand-energy-rjme';
  235. public const string INTERNAL_ID_CEWE_RJME = 'cewe-rjme';
  236. public const string INTERNAL_ID_HTE_RJME = 'hte-rjme';
  237. public const string INTERNAL_ID_ALLIANZ_DIGITAL_SUED_RJME = 'allianz-digital-sued-rjme';
  238. public const string INTERNAL_ID_DELAVAL_RJME = 'delaval-rjme';
  239. public const string INTERNAL_ID_GEYER_EDELSTAHL_RJME = 'geyer-edelstahl-rjme';
  240. public const string INTERNAL_ID_DVELOP_RJME = 'd-velop-rjme';
  241. public const string INTERNAL_ID_HENKEL_MED_PERSONAL_RJME = 'henkel-med-personal-rjme';
  242. public const string INTERNAL_ID_EGGELBUSCH_RJME = 'eggelbusch-rjme';
  243. public const string INTERNAL_ID_RUNMED = 'runmed';
  244. public const string INTERNAL_ID_CAREVOLUTION_RJME = 'carevolution-rjme';
  245. public const string INTERNAL_ID_DENTALLABOR_FILSER_RJME = 'dentallabor-filser-rjme';
  246. public const string INTERNAL_ID_ALLIANZ_ESSEN_RJME = 'allianz-essen-rjme';
  247. public const string INTERNAL_ID_ALLIANZ_BERLIN_BRANDENBURG_RJME = 'allianz-berlin-brandenburg-rjme';
  248. public const string INTERNAL_ID_EMA_VERMITTLUNG = 'ema-vermittlung';
  249. public const string INTERNAL_ID_MAMGO_ONOLDIA_RJME = 'mamgo-onoldia-rjme';
  250. public const string INTERNAL_ID_ALMA_HOTEL_RJME = 'alma-hotel-rjme';
  251. public const string INTERNAL_ID_MAMGO_RJME = 'mamgo-rjme';
  252. public const string INTERNAL_ID_DAVIS_SENIORENDIENST_RJME = 'davis-seniorendienst-gmbh-rjme';
  253. public const string INTERNAL_ID_SCHENKER_DEUTSCHLAND = 'schenker-deutschland';
  254. public const string INTERNAL_ID_ALLIANZ_POTSDAM_RJME = 'allianz-potsdam-rjme';
  255. public const string INTERNAL_ID_EDEKA_SUEDBAYERN_RJME = 'edeka-südbayern-rjme';
  256. public const string INTERNAL_ID_STUDIENKREIS_WILLICH_RJME = 'studienkreis-willich-rjme';
  257. public const string INTERNAL_ID_SCHOELER_UND_WERNER_RJME = 'schoeler-plus-werner-rjme';
  258. public const string INTERNAL_ID_IFU_FUNNEL_RJME = 'ifu-funnel-rjme';
  259. public const string INTERNAL_ID_ALLIANZ_AACHEN_RJME = 'allianz-aachen-rjme';
  260. public const string INTERNAL_ID_WEGWEISER_RJME = 'wegweiser-rjme';
  261. public const string INTERNAL_ID_STEPSTONE = 'stepstone';
  262. public const string INTERNAL_ID_THERAPIEZENTRUM_NORDHESSEN_RJME = 'therapiezentrum-nordhessen-rjme';
  263. public const string INTERNAL_ID_AB_CONSTRUCTION_RJME = 'ab-constructions-rjme';
  264. public const string INTERNAL_ID_SK_MEDICAL_CARE_SERVICE_RJME = 'sk-medical-care-service-rjme';
  265. public const string INTERNAL_ID_ALLIANZ_KOELN_BONN_RJME = 'allianz-koeln-bonn-rjme';
  266. public const string INTERNAL_ID_JAMMERTAL_RESORT_RJME = 'jammertal-resort-rjme';
  267. public const string INTERNAL_ID_VIVEA_BAD_HAERING_RJME = 'vivea-bad-haering-rjme';
  268. public const string INTERNAL_ID_DAS_SIEBEN_RJME = 'das-sieben-rjme';
  269. public const string INTERNAL_ID_HEADACCOUNT_TESTKUNDE = 'headaccount-testkunde';
  270. public const string INTERNAL_ID_RENOVA_RJME = 'renova-rjme';
  271. public const string INTERNAL_ID_BLUMENSTIEL_RJME = 'blumenstiel-rjme';
  272. public const string INTERNAL_ID_ALLIANZ_COTTBUS_RJME = 'allianz-cottbus-rjme';
  273. public const string INTERNAL_ID_PEAK_ONE_RJME = 'peak-one-rjme';
  274. public const string INTERNAL_ID_VORWERK_RJME = 'vorwerk-rjme';
  275. public const string INTERNAL_ID_LTS_RECHTSANWAELTE_RJME = 'lts-rechtsanwaelte-rjme';
  276. public const string INTERNAL_ID_PROTECO_RJME = 'proteco-rjme';
  277. public const string INTERNAL_ID_STEPSTONE34 = 'stepstone-3-4';
  278. public const string INTERNAL_ID_PROGROUP_RJME = 'progroup-rjme';
  279. public const string INTERNAL_ID_VORWERK_PARCHIM_RJME = 'vorwerk-parchim-rjme';
  280. public const string INTERNAL_ID_SOFTGARDEN_PFLANZEN_KOELLE_GARTENCENTER = 'softgarden-pflanzen-koelle-gartencenter';
  281. public const string INTERNAL_ID_APETITO_CATERING = 'apetito-catering';
  282. public const string INTERNAL_ID_KFP_ARCHITEKTEN_RJME = 'kfp-architekten-rjme';
  283. public const string INTERNAL_ID_AVANTI_RJME = 'avanti-rjme';
  284. public const string INTERNAL_ID_MUKIFO_RJME = 'mukifo-rjme';
  285. public const string INTERNAL_ID_LEGABAU_RJME = 'legabau-rjme';
  286. public const string INTERNAL_ID_ELI_DI_FEE_RJME = 'eli-di-fee-rjme';
  287. public const string INTERNAL_ID_FLUX_DESIGN_PRODUCT_RJME = 'flux-design-product-rjme';
  288. public const string INTERNAL_ID_ZUM_SCHWARZEN_BAEREN_RJME = 'zum-schwarzen-baeren-rjme';
  289. public const string INTERNAL_ID_LUEBBE_SPIESS_INGENIEURGESELLSCHAFT_RJME = 'luebbe-spiess-ingenieurgesellschaft-rjme';
  290. public const string INTERNAL_ID_AWG_DRUCK_GMBH_RJME = 'awg-druck-gmbh-rjme';
  291. public const string INTERNAL_ID_PRAXIS_ANGELA_STAHL_RJME = 'praxis-dr-med-angela-stahl-rjme';
  292. public const string INTERNAL_ID_KAENGURUH_KUVERT_RJME = 'kaenguruh-kuvert-gmbh-rjme';
  293. public const string INTERNAL_ID_KOENIGSTEINER_MICHAELIGARTEN_HABERL_GASTRONOMIE_RJME = 'koenigsteiner-michaeligarten-haberl-gastronomie-rjme';
  294. public const string INTERNAL_ID_HANDELSUNTERNEHMEN_MANI_RJME = 'handelsunternehmen-mani-rjme';
  295. public const string INTERNAL_ID_RADWELT_COESFELD_RJME = 'radwelt-coesfeld-rjme';
  296. public const string INTERNAL_ID_KOENIGSTEINER_MEDI_GMBH_RJME = 'koenigsteiner-medi-gmbh-rjme';
  297. public const string INTERNAL_ID_A_UND_H_ZEITARBEIT_XML = 'a-und-h-zeitarbeit-xml';
  298. public const string INTERNAL_ID_CONTACT_100 = 'contact-100-xml';
  299. public const string INTERNAL_ID_ARZTPILOT_PERSONALVERMITTLUNG = 'arztpilot-personalvermittlung-rjme';
  300. public const string INTERNAL_ID_E_PLUS_S_FAHRZEUGTECHNIK_RJME = 'e-plus-s-fahrzeugtechnik';
  301. public const string INTERNAL_ID_PS_ZENTRUM_RJME = 'ps-zentrum-rjme';
  302. public const string INTERNAL_ID_ALLIANZ_NEUBRANDENBURG_RJME = 'allianz-neubrandenburg-rjme';
  303. public const string INTERNAL_ID_KOELSCH_KULTUR_GMBH_RJME = 'koelsch-kultur-gmbh-rjme';
  304. public const string INTERNAL_ID_BBG_GMBH_RJME = 'bbg-gmbh-rjme';
  305. public const string INTERNAL_ID_EINS_KOMMA_FUENF_GRAD_RJME = '1komma5grad-rjme';
  306. public const string INTERNAL_ID_MAKE_A_STARTUP_SERVICES_RJME = 'make-a-startup-services-gmbh-rjme';
  307. public const string INTERNAL_ID_TUCHFABRIK_WILLY_SCHMITZ_RJME = 'tuchfabrik-willy-schmitz-rjme';
  308. public const string INTERNAL_ID_AI_FITNESS = 'ai-fitness-xml';
  309. public const string INTERNAL_ID_DTR_GMBH_RJME = 'dtr-gmbh-rjme';
  310. public const string INTERNAL_ID_LEBENSHILFE_LEVERKUSEN_RJME = 'lebenshilfe-leverkusen-rjme';
  311. public const string INTERNAL_ID_GLOBUS_HANDELSHOF_TOENISVORST = 'globus-handelshof-st-wendel-betriebsstaette-toenisvorst';
  312. public const string INTERNAL_ID_GLOBUS_HANDELSHOF_TOENISVORST_RJME = 'globus-handelshof-betriebsstaette-toenisvorst-rjme';
  313. public const string INTERNAL_ID_DQUADRAT_LIVING_GMBH = 'softgarden-dquadrat-living-gmbh';
  314. public const string INTERNAL_ID_IMMOBILIEN_SERVICE_DEUTSCHLAND_XML = 'immobilien-service-deutschland-xml';
  315. public const string INTERNAL_ID_FUSSPFLEGE_EVA_MARIA_WIESENER_RJME = 'fusspflege-eva-maria-wiesener-rjme';
  316. public const string INTERNAL_ID_ALLRESTO_FLUGHAFEN_MUENCHEN_RJME = 'allresto-flughafen-muenchen-rjme';
  317. public const string INTERNAL_ID_VOSS_BAUELEMENTE = 'voss-bauelemente-rjme';
  318. public const string INTERNAL_ID_RUECKENZENTRUM_AM_MICHEL_RJME = 'rueckenzentrum-am-michel-rjme';
  319. public const string INTERNAL_ID_TERRA_VIRIDIS_GMBH_RJME = 'terra-viridis-gmbh-rjme';
  320. public const string INTERNAL_ID_MOGLER_MINERALOELGROSSHANDLUNG_RJME = 'mogler-mineraloelgrosshandlung-gmbh-rjme';
  321. public const string INTERNAL_ID_FUNKE_XML = 'funke-xml';
  322. /* IMPORTANT!
  323. * Whenever a new customer is defined here,
  324. * it MUST be added to the documentation at
  325. * https://go-gastro.atlassian.net/wiki/spaces/SD/pages/1171783681/Austausch+fachlicher+Daten+mit+Dritten
  326. */
  327. /**
  328. * @throws Exception
  329. */
  330. public function __construct(string $internalId, string $businessName, ExternalPartner $externalPartner)
  331. {
  332. $this->internalId = mb_substr($internalId, 0, 255);
  333. $this->businessName = mb_substr($businessName, 0, 255);
  334. $this->externalPartner = $externalPartner;
  335. $this->externalPartnerQuotas = new ArrayCollection();
  336. $this->campaigns = new ArrayCollection();
  337. $this->isDirectForwarded = false;
  338. $this->isDirectForwardedEbay = true;
  339. $this->isHeightened = false;
  340. $this->isAnonymousForwarded = false;
  341. $this->isCustomerPremiumRadarActivated = false;
  342. $this->premiumRadarConversationMessageSubject = '';
  343. $this->premiumRadarConversationMessageBody = '';
  344. $this->generalFeedCategory = null;
  345. $this->addressesJobseekersFormally = false;
  346. $this->usesFormalHeadline = false;
  347. $this->isVisibleInFeedsManagementPortal = true;
  348. $this->cvForExtendedApplicationsMandatory = true;
  349. $this->isTimetableVisible = true;
  350. $this->recurrentJobsLimit = null;
  351. $this->contactName = null;
  352. $this->hasClickBasedBilling = false;
  353. $this->premiumRadarAdditionalSearchterms = [];
  354. $this->monthlyClickBudgetReached = false;
  355. $this->dailyCrawlerUpdate = false;
  356. $this->clickBudget = [];
  357. $this->isUpdateActive = true;
  358. $this->workingTimesHidden = false;
  359. $this->acquisitionMethod = AcquisitionMethod::INTERNALLY;
  360. $this->billedParty = BilledParty::CUSTOMER;
  361. $this->isContactDataVisible = true;
  362. }
  363. /**
  364. * @ORM\GeneratedValue(strategy="CUSTOM")
  365. *
  366. * @ORM\CustomIdGenerator(class="App\Utility\DatabaseIdGenerator")
  367. *
  368. * @ORM\Column(name="id", type="guid")
  369. *
  370. * @ORM\Id
  371. */
  372. protected string $id;
  373. public function getId(): string
  374. {
  375. return $this->id;
  376. }
  377. /**
  378. * @ORM\Column(name="internal_id", type="text", length=255, unique=true, nullable=false)
  379. */
  380. private string $internalId;
  381. public function getInternalId(): string
  382. {
  383. return $this->internalId;
  384. }
  385. public function setInternalId(string $internalId): void
  386. {
  387. $this->internalId = $internalId;
  388. }
  389. /**
  390. * @ORM\Column(name="business_name", type="text", length=255)
  391. */
  392. private string $businessName;
  393. public function getBusinessName(): string
  394. {
  395. return $this->businessName;
  396. }
  397. public function setBusinessName(string $businessName): void
  398. {
  399. $this->businessName = $businessName;
  400. }
  401. /**
  402. * @ORM\ManyToOne(targetEntity="App\Entity\ExternalPartner\ExternalPartner", inversedBy="integratedExternalPartnerCustomers", cascade={"persist"})
  403. *
  404. * @ORM\JoinColumn(name="external_partners_id", referencedColumnName="id", nullable=false, onDelete="CASCADE")
  405. */
  406. protected ExternalPartner $externalPartner;
  407. public function getExternalPartner(): ExternalPartner
  408. {
  409. return $this->externalPartner;
  410. }
  411. public function setExternalPartner(ExternalPartner $externalPartner): void
  412. {
  413. $this->externalPartner = $externalPartner;
  414. }
  415. /**
  416. * @var IntegratedExternalPartnerCustomerQuota[]|Collection
  417. *
  418. * @ORM\OneToMany(targetEntity="IntegratedExternalPartnerCustomerQuota", mappedBy="integratedExternalPartnerCustomer", cascade={"persist", "remove"})
  419. */
  420. protected Collection $externalPartnerQuotas;
  421. /**
  422. * @return IntegratedExternalPartnerCustomerQuota[]|Collection
  423. */
  424. public function getExternalPartnerQuotas(): Collection
  425. {
  426. return $this->externalPartnerQuotas;
  427. }
  428. /**
  429. * @var IntegratedExternalPartnerCustomerCampaign[]|Collection
  430. *
  431. * @ORM\OneToMany(targetEntity="IntegratedExternalPartnerCustomerCampaign", mappedBy="integratedExternalPartnerCustomer", cascade={"persist", "remove"})
  432. */
  433. protected Collection $campaigns;
  434. /**
  435. * @return IntegratedExternalPartnerCustomerCampaign[]|Collection
  436. */
  437. public function getCampaigns(): Collection
  438. {
  439. return $this->campaigns;
  440. }
  441. /**
  442. * @ORM\Column(name="is_heightened", type="boolean", nullable=false)
  443. */
  444. protected bool $isHeightened;
  445. public function isHeightened(): bool
  446. {
  447. return $this->isHeightened;
  448. }
  449. public function setIsHeightened(bool $isHeightened): void
  450. {
  451. $this->isHeightened = $isHeightened;
  452. }
  453. /**
  454. * @ORM\Column(name="is_direct_forwarded", type="boolean", nullable=false)
  455. */
  456. protected bool $isDirectForwarded;
  457. public function isDirectForwarded(): bool
  458. {
  459. return $this->isDirectForwarded;
  460. }
  461. public function setIsDirectForwarded(bool $isDirectForwarded): void
  462. {
  463. $this->isDirectForwarded = $isDirectForwarded;
  464. }
  465. /**
  466. * @ORM\Column(name="is_direct_forwarded_ebay", type="boolean", nullable=false)
  467. */
  468. protected bool $isDirectForwardedEbay;
  469. public function isDirectForwardedEbay(): bool
  470. {
  471. return $this->isDirectForwardedEbay;
  472. }
  473. public function setIsDirectForwardedEbay(bool $isDirectForwardedEbay): void
  474. {
  475. $this->isDirectForwardedEbay = $isDirectForwardedEbay;
  476. }
  477. /**
  478. * @ORM\Column(name="is_anonymous_forwarded", type="boolean", nullable=false)
  479. */
  480. protected bool $isAnonymousForwarded;
  481. public function isAnonymousForwarded(): bool
  482. {
  483. return $this->isAnonymousForwarded;
  484. }
  485. public function setIsAnonymousForwarded(bool $isAnonymousForwarded): void
  486. {
  487. $this->isAnonymousForwarded = $isAnonymousForwarded;
  488. }
  489. /**
  490. * @ORM\Column(name="is_customer_premium_radar_activated", type="boolean", nullable=false)
  491. */
  492. protected bool $isCustomerPremiumRadarActivated;
  493. public function isCustomerPremiumRadarActivated(): bool
  494. {
  495. return $this->isCustomerPremiumRadarActivated;
  496. }
  497. /** @see IntegratedExternalPartnerCustomerService::safelyTurnOnPremiumRadar() - consider using this function to turn on premium radar */
  498. public function setIsCustomerPremiumRadarActivated(bool $isCustomerPremiumRadarActivated): void
  499. {
  500. $this->isCustomerPremiumRadarActivated = $isCustomerPremiumRadarActivated;
  501. }
  502. /**
  503. * @ORM\Column(name="premium_radar_conversation_message_subject", type="text", length=255)
  504. */
  505. private string $premiumRadarConversationMessageSubject;
  506. public function getPremiumRadarConversationMessageSubject(): string
  507. {
  508. return $this->premiumRadarConversationMessageSubject;
  509. }
  510. public function setPremiumRadarConversationMessageSubject(string $premiumRadarConversationMessageSubject): void
  511. {
  512. $this->premiumRadarConversationMessageSubject = $premiumRadarConversationMessageSubject;
  513. }
  514. /**
  515. * @ORM\Column(name="premium_radar_conversation_message_body", type="text", length=8192)
  516. */
  517. private string $premiumRadarConversationMessageBody;
  518. public function getPremiumRadarConversationMessageBody(): string
  519. {
  520. return $this->premiumRadarConversationMessageBody;
  521. }
  522. public function setPremiumRadarConversationMessageBody(string $premiumRadarConversationMessageBody): void
  523. {
  524. $this->premiumRadarConversationMessageBody = $premiumRadarConversationMessageBody;
  525. }
  526. /**
  527. * @ORM\Column(name="general_feed_category", type="text", length=16, nullable="true")
  528. */
  529. private ?string $generalFeedCategory;
  530. public function getGeneralFeedCategory(): ?string
  531. {
  532. return $this->generalFeedCategory;
  533. }
  534. public function setGeneralFeedCategory(?string $generalFeedCategory): void
  535. {
  536. $this->generalFeedCategory = $generalFeedCategory;
  537. }
  538. /**
  539. * @var ProfileBlock|Collection
  540. *
  541. * @ORM\OneToMany(targetEntity="\App\Entity\ProfileBlock", mappedBy="integratedExternalPartnerCustomer", cascade={"persist", "remove"})
  542. */
  543. protected $profileBlocks;
  544. public function addProfileBlock(ProfileBlock $profileBlock): void
  545. {
  546. $this->profileBlocks[] = $profileBlock;
  547. }
  548. public function getProfileBlocks()
  549. {
  550. return $this->profileBlocks;
  551. }
  552. public function isBlockedBy(Profile $profile): bool
  553. {
  554. /** @var ProfileBlock $profileBlock */
  555. foreach ($this->profileBlocks as $profileBlock) {
  556. if ($profileBlock->isBlocker($profile)) {
  557. return true;
  558. }
  559. }
  560. return false;
  561. }
  562. /**
  563. * @ORM\Column(name="addresses_jobseekers_formally", type="boolean", nullable=false)
  564. */
  565. protected bool $addressesJobseekersFormally;
  566. public function addressesJobseekersFormally(): bool
  567. {
  568. return $this->addressesJobseekersFormally;
  569. }
  570. public function setAddressesJobseekersFormally(bool $addressesJobseekersFormally): void
  571. {
  572. $this->addressesJobseekersFormally = $addressesJobseekersFormally;
  573. }
  574. /**
  575. * @ORM\Column(name="uses_formal_headline", type="boolean", nullable=false)
  576. */
  577. protected bool $usesFormalHeadline;
  578. public function usesFormalHeadline(): bool
  579. {
  580. return $this->usesFormalHeadline;
  581. }
  582. public function setUsesFormalHeadline(bool $usesFormalHeadline): void
  583. {
  584. $this->usesFormalHeadline = $usesFormalHeadline;
  585. }
  586. /**
  587. * @ORM\Column(name="is_visible_in_feeds_management_portal", type="boolean", nullable=false)
  588. */
  589. protected bool $isVisibleInFeedsManagementPortal;
  590. public function isVisibleInFeedsManagementPortal(): bool
  591. {
  592. return $this->isVisibleInFeedsManagementPortal;
  593. }
  594. public function setIsVisibleInFeedsManagementPortal(bool $isVisibleInFeedsManagementPortal): void
  595. {
  596. $this->isVisibleInFeedsManagementPortal = $isVisibleInFeedsManagementPortal;
  597. }
  598. /**
  599. * @ORM\Column(name="is_timetable_visible", type="boolean", nullable=false)
  600. */
  601. protected bool $isTimetableVisible;
  602. public function isTimetableVisible(): bool
  603. {
  604. return $this->isTimetableVisible;
  605. }
  606. public function setIsTimetableVisible(bool $isTimetableVisible): void
  607. {
  608. $this->isTimetableVisible = $isTimetableVisible;
  609. }
  610. /**
  611. * @ORM\Column(name="is_update_active", type="boolean", nullable=false)
  612. */
  613. protected bool $isUpdateActive;
  614. public function isUpdateActive(): bool
  615. {
  616. return $this->isUpdateActive;
  617. }
  618. public function setIsUpdateActive(bool $isUpdateACtive): void
  619. {
  620. $this->isUpdateActive = $isUpdateACtive;
  621. }
  622. /**
  623. * @var IntegratedExternalPartnerCustomerContentDistributionValue[]|Collection
  624. *
  625. * @ORM\OneToMany(targetEntity="App\Entity\ContentDistribution\IntegratedExternalPartnerCustomerContentDistributionValue", mappedBy="integratedExternalPartnerCustomer", cascade={"persist", "remove"})
  626. */
  627. protected Collection $contentDistributionValues;
  628. /**
  629. * @return IntegratedExternalPartnerCustomerContentDistributionValue[]|Collection
  630. */
  631. public function getContentDistributionValues(): Collection
  632. {
  633. return $this->contentDistributionValues;
  634. }
  635. /** @throws Exception */
  636. public function setContentDistributionStringValue(string $name, ?string $stringValue): void
  637. {
  638. /** @var IntegratedExternalPartnerCustomerContentDistributionValue $contentDistributionValue */
  639. foreach ($this->contentDistributionValues as $contentDistributionValue) {
  640. if ($contentDistributionValue->getName() === $name) {
  641. $contentDistributionValue->setStringValue($stringValue);
  642. return;
  643. }
  644. }
  645. if (!is_null($stringValue)) {
  646. $this->contentDistributionValues->add(
  647. IntegratedExternalPartnerCustomerContentDistributionValue::createWithStringValue($this, $name, $stringValue)
  648. );
  649. }
  650. }
  651. /** @throws Exception */
  652. public function setContentDistributionFloatValue(string $name, ?float $floatValue): void
  653. {
  654. /** @var IntegratedExternalPartnerCustomerContentDistributionValue $contentDistributionValue */
  655. foreach ($this->contentDistributionValues as $contentDistributionValue) {
  656. if ($contentDistributionValue->getName() === $name) {
  657. $contentDistributionValue->setFloatValue($floatValue);
  658. return;
  659. }
  660. }
  661. if (!is_null($floatValue)) {
  662. $this->contentDistributionValues->add(
  663. IntegratedExternalPartnerCustomerContentDistributionValue::createWithFloatValue($this, $name, $floatValue)
  664. );
  665. }
  666. }
  667. /** @throws Exception */
  668. public function setContentDistributionBoolValue(string $name, ?bool $boolValue): void
  669. {
  670. /** @var IntegratedExternalPartnerCustomerContentDistributionValue $contentDistributionValue */
  671. foreach ($this->contentDistributionValues as $contentDistributionValue) {
  672. if ($contentDistributionValue->getName() === $name) {
  673. $contentDistributionValue->setBoolValue($boolValue);
  674. return;
  675. }
  676. }
  677. if (!is_null($boolValue)) {
  678. $this->contentDistributionValues->add(
  679. IntegratedExternalPartnerCustomerContentDistributionValue::createWithBoolValue($this, $name, $boolValue)
  680. );
  681. }
  682. }
  683. /**
  684. * @ORM\Column(name="cv_for_extended_applications_mandatory", type="boolean", nullable=false)
  685. */
  686. protected bool $cvForExtendedApplicationsMandatory;
  687. public function cvForExtendedApplicationsMandatory(): bool
  688. {
  689. return $this->cvForExtendedApplicationsMandatory;
  690. }
  691. public function setCvForExtendedApplicationsMandatory(bool $cvForExtendedApplicationsMandatory): void
  692. {
  693. $this->cvForExtendedApplicationsMandatory = $cvForExtendedApplicationsMandatory;
  694. }
  695. /**
  696. * @ORM\Column(name="recurrent_jobs_limit", type="integer", nullable=true)
  697. */
  698. private ?int $recurrentJobsLimit;
  699. public function getRecurrentJobsLimit(): ?int
  700. {
  701. return $this->recurrentJobsLimit;
  702. }
  703. public function setRecurrentJobsLimit(?int $recurrentJobsLimit): void
  704. {
  705. $this->recurrentJobsLimit = $recurrentJobsLimit;
  706. }
  707. /**
  708. * @ORM\Column(name="contact_name", type="text", length=256, nullable=true)
  709. */
  710. private ?string $contactName;
  711. public function getContactName(): ?string
  712. {
  713. return $this->contactName;
  714. }
  715. public function setContactName(?string $contactName): void
  716. {
  717. $this->contactName = $contactName;
  718. }
  719. /**
  720. * @ORM\ManyToOne(targetEntity="App\Entity\ContentDistribution\AgenturFuerArbeit\DestatisEconomicSector", cascade={"persist"})
  721. *
  722. * @ORM\JoinColumn(name="destatis_economic_sectors_running_number", referencedColumnName="running_number", nullable=true, onDelete="SET NULL")
  723. */
  724. protected ?DestatisEconomicSector $destatisEconomicSector = null;
  725. public function getDestatisEconomicSector(): ?DestatisEconomicSector
  726. {
  727. return $this->destatisEconomicSector;
  728. }
  729. public function setDestatisEconomicSector(?DestatisEconomicSector $destatisEconomicSector): void
  730. {
  731. $this->destatisEconomicSector = $destatisEconomicSector;
  732. }
  733. /**
  734. * @ORM\Column(name="destatis_economic_sector_decision", type="smallint", nullable=true, options={"unsigned": true})
  735. */
  736. protected ?int $destatisEconomicSectorDecision;
  737. public function setDestatisEconomicSectorDecision(?int $destatisEconomicSectorDecision): void
  738. {
  739. if (!is_null($destatisEconomicSectorDecision)) {
  740. if (!ReflectionHelper::hasConstWithValue(
  741. DestatisEconomicSectorService::class,
  742. 'SECTOR_DECISION_',
  743. $destatisEconomicSectorDecision)
  744. ) {
  745. throw new InvalidArgumentException("Value '$destatisEconomicSectorDecision' not allowed for destatisEconomicSectorDecision.");
  746. }
  747. }
  748. $this->destatisEconomicSectorDecision = $destatisEconomicSectorDecision;
  749. }
  750. public function getDestatisEconomicSectorDecision(): ?int
  751. {
  752. return $this->destatisEconomicSectorDecision;
  753. }
  754. public function getDestatisEconomicSectorOrigin(): ?int
  755. {
  756. if (!is_null($this->destatisEconomicSector)) {
  757. return DestatisEconomicSectorService::SECTOR_ORIGIN_INTEGRATED_EXTERNAL_PARTNER_CUSTOMER;
  758. }
  759. return null;
  760. }
  761. /**
  762. * @ORM\Column(name="has_click_based_billing", type="boolean", nullable=false)
  763. */
  764. protected bool $hasClickBasedBilling;
  765. public function hasClickBasedBilling(): bool
  766. {
  767. return $this->hasClickBasedBilling;
  768. }
  769. public function setHasClickBasedBilling(bool $hasClickBasedBilling): void
  770. {
  771. $this->hasClickBasedBilling = $hasClickBasedBilling;
  772. }
  773. /**
  774. * @ORM\Column(name="premium_radar_limit", type="integer", nullable=true)
  775. */
  776. private ?int $premiumRadarLimit;
  777. public function getPremiumRadarLimit(): ?int
  778. {
  779. return $this->premiumRadarLimit;
  780. }
  781. public function setPremiumRadarLimit(?int $premiumRadarLimit): void
  782. {
  783. $this->premiumRadarLimit = $premiumRadarLimit;
  784. }
  785. /**
  786. * @ORM\Column(name="premium_radar_whatsapp_limit", type="integer", nullable=true)
  787. */
  788. private ?int $premiumRadarWhatsappLimit;
  789. public function getPremiumRadarWhatsappLimit(): ?int
  790. {
  791. return $this->premiumRadarWhatsappLimit;
  792. }
  793. public function setPremiumRadarWhatsappLimit(?int $premiumRadarWhatsappLimit): void
  794. {
  795. $this->premiumRadarWhatsappLimit = $premiumRadarWhatsappLimit;
  796. }
  797. /**
  798. * @ORM\Column(name="premium_radar_email_limit", type="integer", nullable=true)
  799. */
  800. private ?int $premiumRadarEmailLimit;
  801. public function getPremiumRadarEmailLimit(): ?int
  802. {
  803. return $this->premiumRadarEmailLimit;
  804. }
  805. public function setPremiumRadarEmailLimit(?int $premiumRadarEmailLimit): void
  806. {
  807. $this->premiumRadarEmailLimit = $premiumRadarEmailLimit;
  808. }
  809. /**
  810. * @var array|string[]
  811. *
  812. * @ORM\Column(name="premium_radar_additional_searchterms", type="array", nullable=false)
  813. */
  814. private array $premiumRadarAdditionalSearchterms;
  815. public function setPremiumRadarAdditionalSearchterms(array $premiumRadarAdditionalSearchterms): void
  816. {
  817. $this->premiumRadarAdditionalSearchterms = $premiumRadarAdditionalSearchterms;
  818. }
  819. public function addPremiumRadarAdditionalSearchterm(string $premiumRadarAdditionalSearchterm): void
  820. {
  821. if (trim($premiumRadarAdditionalSearchterm) !== '' && !in_array(trim($premiumRadarAdditionalSearchterm), $this->premiumRadarAdditionalSearchterms)) {
  822. $this->premiumRadarAdditionalSearchterms[] = trim($premiumRadarAdditionalSearchterm);
  823. }
  824. }
  825. public function removePremiumRadarAdditionalSearchterm(string $premiumRadarAdditionalSearchterm): void
  826. {
  827. if (in_array(trim($premiumRadarAdditionalSearchterm), $this->premiumRadarAdditionalSearchterms)) {
  828. array_splice($this->premiumRadarAdditionalSearchterms, array_search(trim($premiumRadarAdditionalSearchterm), $this->premiumRadarAdditionalSearchterms), 1);
  829. }
  830. }
  831. public function getPremiumRadarAdditionalSearchterms(): array
  832. {
  833. return $this->premiumRadarAdditionalSearchterms;
  834. }
  835. /**
  836. * @ORM\Column(name="superchat_attachment_id", type="text", length=128, nullable="true")
  837. */
  838. private ?string $superchatAttachmentId;
  839. public function getSuperchatAttachmentId(): ?string
  840. {
  841. return $this->superchatAttachmentId;
  842. }
  843. public function setSuperchatAttachmentId(?string $superchatAttachmentId): void
  844. {
  845. $this->superchatAttachmentId = $superchatAttachmentId;
  846. }
  847. /**
  848. * @ORM\Column(name="monthly_click_budget_reached", type="boolean", nullable=false)
  849. */
  850. protected bool $monthlyClickBudgetReached;
  851. public function isMonthlyClickBudgetReached(): bool
  852. {
  853. return $this->monthlyClickBudgetReached;
  854. }
  855. public function setMonthlyClickBudgetReached(bool $monthlyClickBudgetReached): void
  856. {
  857. $this->monthlyClickBudgetReached = $monthlyClickBudgetReached;
  858. }
  859. /**
  860. * @ORM\Column(name="daily_crawler_update", type="boolean", nullable=false)
  861. */
  862. protected bool $dailyCrawlerUpdate;
  863. public function getDailyCrawlerUpdate(): bool
  864. {
  865. return $this->dailyCrawlerUpdate;
  866. }
  867. public function setDailyCrawlerUpdate(bool $dailyCrawlerUpdate): void
  868. {
  869. $this->dailyCrawlerUpdate = $dailyCrawlerUpdate;
  870. }
  871. /**
  872. * @ORM\Column(name="click_budget", type="array", nullable=false)
  873. */
  874. protected array $clickBudget;
  875. public function getClickBudget(): array
  876. {
  877. return $this->clickBudget;
  878. }
  879. public function setClickBudget(array $clickBudget): void
  880. {
  881. $clickBudgetArray = [];
  882. foreach ($clickBudget as $key => $value) {
  883. if (!in_array($key, range(1, 12))) {
  884. throw new InvalidArgumentException("Key '$key' not allowed for click budget.");
  885. }
  886. if (!is_numeric(trim($value))) {
  887. throw new InvalidArgumentException("Value '$value' not allowed for click budget.");
  888. }
  889. $clickBudgetArray[$key] = (int)trim($value);
  890. }
  891. $this->clickBudget = $clickBudgetArray;
  892. }
  893. /**
  894. * @ORM\Column(name="working_times_hidden", type="boolean", nullable=false)
  895. */
  896. protected bool $workingTimesHidden;
  897. public function getWorkingTimesHidden(): bool
  898. {
  899. return $this->workingTimesHidden;
  900. }
  901. public function setWorkingTimesHidden(bool $workingTimesHidden): void
  902. {
  903. $this->workingTimesHidden = $workingTimesHidden;
  904. }
  905. /**
  906. * @ORM\Column(name="acquisition_method", type="integer", enumType=AcquisitionMethod::class, nullable=false)
  907. */
  908. protected AcquisitionMethod $acquisitionMethod;
  909. public function getAcquisitionMethod(): AcquisitionMethod
  910. {
  911. return $this->acquisitionMethod;
  912. }
  913. public function setAcquisitionMethod(AcquisitionMethod $acquisitionMethod): void
  914. {
  915. $this->acquisitionMethod = $acquisitionMethod;
  916. }
  917. /**
  918. * @ORM\Column(name="billed_party", type="integer", enumType=BilledParty::class, nullable=false)
  919. */
  920. protected BilledParty $billedParty;
  921. public function getBilledParty(): BilledParty
  922. {
  923. return $this->billedParty;
  924. }
  925. public function setBilledParty(BilledParty $billedParty): void
  926. {
  927. $this->billedParty = $billedParty;
  928. }
  929. /**
  930. * @ORM\Column(name="is_contact_data_visible", type="boolean", nullable=false)
  931. */
  932. protected bool $isContactDataVisible;
  933. public function isContactDataVisible(): bool
  934. {
  935. return $this->isContactDataVisible;
  936. }
  937. public function setIsContactDataVisible(bool $isContactDataVisible): void
  938. {
  939. $this->isContactDataVisible = $isContactDataVisible;
  940. }
  941. /**
  942. * @ORM\Column(name="zvoove_application_api_key", type="text", length=256, nullable=true)
  943. */
  944. private ?string $zvooveApplicationApiKey;
  945. public function getZvooveApplicationApiKey(): ?string
  946. {
  947. return $this->zvooveApplicationApiKey;
  948. }
  949. public function setZvooveApplicationApiKey(?string $zvooveApplicationApiKey): void
  950. {
  951. $this->zvooveApplicationApiKey = $zvooveApplicationApiKey;
  952. }
  953. // A Customer connected to a WeclappParty is transitively connected to that party's WeclappContracts:
  954. // Customer -> WeclappParty -> WeclappContract.
  955. // However, we can additionally connect a Customer directly to a WeclappContract.
  956. // The business meaning of this is that a Customer who is directly connected to a WeclappContract
  957. // exists in our platform for only this specific contract.
  958. /**
  959. * @ORM\OneToMany(
  960. * targetEntity="JanusHercules\ExtendedApplicationQuestionnaire\Domain\Entity\ExtendedApplicationCustomerQuestionTemplate",
  961. * mappedBy="integratedExternalPartnerCustomer",
  962. * cascade={"persist", "remove"}
  963. * )
  964. */
  965. protected Collection $extendedApplicationCustomerQuestionTemplates;
  966. public function getExtendedApplicationCustomerQuestionTemplates(): Collection
  967. {
  968. return $this->extendedApplicationCustomerQuestionTemplates;
  969. }
  970. public function addExtendedApplicationCustomerQuestionTemplate(ExtendedApplicationCustomerQuestionTemplate $questionTemplate): void
  971. {
  972. $this->extendedApplicationCustomerQuestionTemplates[] = $questionTemplate;
  973. }
  974. }