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. /* IMPORTANT!
  322. * Whenever a new customer is defined here,
  323. * it MUST be added to the documentation at
  324. * https://go-gastro.atlassian.net/wiki/spaces/SD/pages/1171783681/Austausch+fachlicher+Daten+mit+Dritten
  325. */
  326. /**
  327. * @throws Exception
  328. */
  329. public function __construct(string $internalId, string $businessName, ExternalPartner $externalPartner)
  330. {
  331. $this->internalId = mb_substr($internalId, 0, 255);
  332. $this->businessName = mb_substr($businessName, 0, 255);
  333. $this->externalPartner = $externalPartner;
  334. $this->externalPartnerQuotas = new ArrayCollection();
  335. $this->campaigns = new ArrayCollection();
  336. $this->isDirectForwarded = false;
  337. $this->isDirectForwardedEbay = true;
  338. $this->isHeightened = false;
  339. $this->isAnonymousForwarded = false;
  340. $this->isCustomerPremiumRadarActivated = false;
  341. $this->premiumRadarConversationMessageSubject = '';
  342. $this->premiumRadarConversationMessageBody = '';
  343. $this->generalFeedCategory = null;
  344. $this->addressesJobseekersFormally = false;
  345. $this->usesFormalHeadline = false;
  346. $this->isVisibleInFeedsManagementPortal = true;
  347. $this->cvForExtendedApplicationsMandatory = true;
  348. $this->isTimetableVisible = true;
  349. $this->recurrentJobsLimit = null;
  350. $this->contactName = null;
  351. $this->hasClickBasedBilling = false;
  352. $this->premiumRadarAdditionalSearchterms = [];
  353. $this->monthlyClickBudgetReached = false;
  354. $this->dailyCrawlerUpdate = false;
  355. $this->clickBudget = [];
  356. $this->isUpdateActive = true;
  357. $this->workingTimesHidden = false;
  358. $this->acquisitionMethod = AcquisitionMethod::INTERNALLY;
  359. $this->billedParty = BilledParty::CUSTOMER;
  360. $this->isContactDataVisible = true;
  361. }
  362. /**
  363. * @ORM\GeneratedValue(strategy="CUSTOM")
  364. *
  365. * @ORM\CustomIdGenerator(class="App\Utility\DatabaseIdGenerator")
  366. *
  367. * @ORM\Column(name="id", type="guid")
  368. *
  369. * @ORM\Id
  370. */
  371. protected string $id;
  372. public function getId(): string
  373. {
  374. return $this->id;
  375. }
  376. /**
  377. * @ORM\Column(name="internal_id", type="text", length=255, unique=true, nullable=false)
  378. */
  379. private string $internalId;
  380. public function getInternalId(): string
  381. {
  382. return $this->internalId;
  383. }
  384. public function setInternalId(string $internalId): void
  385. {
  386. $this->internalId = $internalId;
  387. }
  388. /**
  389. * @ORM\Column(name="business_name", type="text", length=255)
  390. */
  391. private string $businessName;
  392. public function getBusinessName(): string
  393. {
  394. return $this->businessName;
  395. }
  396. public function setBusinessName(string $businessName): void
  397. {
  398. $this->businessName = $businessName;
  399. }
  400. /**
  401. * @ORM\ManyToOne(targetEntity="App\Entity\ExternalPartner\ExternalPartner", inversedBy="integratedExternalPartnerCustomers", cascade={"persist"})
  402. *
  403. * @ORM\JoinColumn(name="external_partners_id", referencedColumnName="id", nullable=false, onDelete="CASCADE")
  404. */
  405. protected ExternalPartner $externalPartner;
  406. public function getExternalPartner(): ExternalPartner
  407. {
  408. return $this->externalPartner;
  409. }
  410. public function setExternalPartner(ExternalPartner $externalPartner): void
  411. {
  412. $this->externalPartner = $externalPartner;
  413. }
  414. /**
  415. * @var IntegratedExternalPartnerCustomerQuota[]|Collection
  416. *
  417. * @ORM\OneToMany(targetEntity="IntegratedExternalPartnerCustomerQuota", mappedBy="integratedExternalPartnerCustomer", cascade={"persist", "remove"})
  418. */
  419. protected Collection $externalPartnerQuotas;
  420. /**
  421. * @return IntegratedExternalPartnerCustomerQuota[]|Collection
  422. */
  423. public function getExternalPartnerQuotas(): Collection
  424. {
  425. return $this->externalPartnerQuotas;
  426. }
  427. /**
  428. * @var IntegratedExternalPartnerCustomerCampaign[]|Collection
  429. *
  430. * @ORM\OneToMany(targetEntity="IntegratedExternalPartnerCustomerCampaign", mappedBy="integratedExternalPartnerCustomer", cascade={"persist", "remove"})
  431. */
  432. protected Collection $campaigns;
  433. /**
  434. * @return IntegratedExternalPartnerCustomerCampaign[]|Collection
  435. */
  436. public function getCampaigns(): Collection
  437. {
  438. return $this->campaigns;
  439. }
  440. /**
  441. * @ORM\Column(name="is_heightened", type="boolean", nullable=false)
  442. */
  443. protected bool $isHeightened;
  444. public function isHeightened(): bool
  445. {
  446. return $this->isHeightened;
  447. }
  448. public function setIsHeightened(bool $isHeightened): void
  449. {
  450. $this->isHeightened = $isHeightened;
  451. }
  452. /**
  453. * @ORM\Column(name="is_direct_forwarded", type="boolean", nullable=false)
  454. */
  455. protected bool $isDirectForwarded;
  456. public function isDirectForwarded(): bool
  457. {
  458. return $this->isDirectForwarded;
  459. }
  460. public function setIsDirectForwarded(bool $isDirectForwarded): void
  461. {
  462. $this->isDirectForwarded = $isDirectForwarded;
  463. }
  464. /**
  465. * @ORM\Column(name="is_direct_forwarded_ebay", type="boolean", nullable=false)
  466. */
  467. protected bool $isDirectForwardedEbay;
  468. public function isDirectForwardedEbay(): bool
  469. {
  470. return $this->isDirectForwardedEbay;
  471. }
  472. public function setIsDirectForwardedEbay(bool $isDirectForwardedEbay): void
  473. {
  474. $this->isDirectForwardedEbay = $isDirectForwardedEbay;
  475. }
  476. /**
  477. * @ORM\Column(name="is_anonymous_forwarded", type="boolean", nullable=false)
  478. */
  479. protected bool $isAnonymousForwarded;
  480. public function isAnonymousForwarded(): bool
  481. {
  482. return $this->isAnonymousForwarded;
  483. }
  484. public function setIsAnonymousForwarded(bool $isAnonymousForwarded): void
  485. {
  486. $this->isAnonymousForwarded = $isAnonymousForwarded;
  487. }
  488. /**
  489. * @ORM\Column(name="is_customer_premium_radar_activated", type="boolean", nullable=false)
  490. */
  491. protected bool $isCustomerPremiumRadarActivated;
  492. public function isCustomerPremiumRadarActivated(): bool
  493. {
  494. return $this->isCustomerPremiumRadarActivated;
  495. }
  496. /** @see IntegratedExternalPartnerCustomerService::safelyTurnOnPremiumRadar() - consider using this function to turn on premium radar */
  497. public function setIsCustomerPremiumRadarActivated(bool $isCustomerPremiumRadarActivated): void
  498. {
  499. $this->isCustomerPremiumRadarActivated = $isCustomerPremiumRadarActivated;
  500. }
  501. /**
  502. * @ORM\Column(name="premium_radar_conversation_message_subject", type="text", length=255)
  503. */
  504. private string $premiumRadarConversationMessageSubject;
  505. public function getPremiumRadarConversationMessageSubject(): string
  506. {
  507. return $this->premiumRadarConversationMessageSubject;
  508. }
  509. public function setPremiumRadarConversationMessageSubject(string $premiumRadarConversationMessageSubject): void
  510. {
  511. $this->premiumRadarConversationMessageSubject = $premiumRadarConversationMessageSubject;
  512. }
  513. /**
  514. * @ORM\Column(name="premium_radar_conversation_message_body", type="text", length=8192)
  515. */
  516. private string $premiumRadarConversationMessageBody;
  517. public function getPremiumRadarConversationMessageBody(): string
  518. {
  519. return $this->premiumRadarConversationMessageBody;
  520. }
  521. public function setPremiumRadarConversationMessageBody(string $premiumRadarConversationMessageBody): void
  522. {
  523. $this->premiumRadarConversationMessageBody = $premiumRadarConversationMessageBody;
  524. }
  525. /**
  526. * @ORM\Column(name="general_feed_category", type="text", length=16, nullable="true")
  527. */
  528. private ?string $generalFeedCategory;
  529. public function getGeneralFeedCategory(): ?string
  530. {
  531. return $this->generalFeedCategory;
  532. }
  533. public function setGeneralFeedCategory(?string $generalFeedCategory): void
  534. {
  535. $this->generalFeedCategory = $generalFeedCategory;
  536. }
  537. /**
  538. * @var ProfileBlock|Collection
  539. *
  540. * @ORM\OneToMany(targetEntity="\App\Entity\ProfileBlock", mappedBy="integratedExternalPartnerCustomer", cascade={"persist", "remove"})
  541. */
  542. protected $profileBlocks;
  543. public function addProfileBlock(ProfileBlock $profileBlock): void
  544. {
  545. $this->profileBlocks[] = $profileBlock;
  546. }
  547. public function getProfileBlocks()
  548. {
  549. return $this->profileBlocks;
  550. }
  551. public function isBlockedBy(Profile $profile): bool
  552. {
  553. /** @var ProfileBlock $profileBlock */
  554. foreach ($this->profileBlocks as $profileBlock) {
  555. if ($profileBlock->isBlocker($profile)) {
  556. return true;
  557. }
  558. }
  559. return false;
  560. }
  561. /**
  562. * @ORM\Column(name="addresses_jobseekers_formally", type="boolean", nullable=false)
  563. */
  564. protected bool $addressesJobseekersFormally;
  565. public function addressesJobseekersFormally(): bool
  566. {
  567. return $this->addressesJobseekersFormally;
  568. }
  569. public function setAddressesJobseekersFormally(bool $addressesJobseekersFormally): void
  570. {
  571. $this->addressesJobseekersFormally = $addressesJobseekersFormally;
  572. }
  573. /**
  574. * @ORM\Column(name="uses_formal_headline", type="boolean", nullable=false)
  575. */
  576. protected bool $usesFormalHeadline;
  577. public function usesFormalHeadline(): bool
  578. {
  579. return $this->usesFormalHeadline;
  580. }
  581. public function setUsesFormalHeadline(bool $usesFormalHeadline): void
  582. {
  583. $this->usesFormalHeadline = $usesFormalHeadline;
  584. }
  585. /**
  586. * @ORM\Column(name="is_visible_in_feeds_management_portal", type="boolean", nullable=false)
  587. */
  588. protected bool $isVisibleInFeedsManagementPortal;
  589. public function isVisibleInFeedsManagementPortal(): bool
  590. {
  591. return $this->isVisibleInFeedsManagementPortal;
  592. }
  593. public function setIsVisibleInFeedsManagementPortal(bool $isVisibleInFeedsManagementPortal): void
  594. {
  595. $this->isVisibleInFeedsManagementPortal = $isVisibleInFeedsManagementPortal;
  596. }
  597. /**
  598. * @ORM\Column(name="is_timetable_visible", type="boolean", nullable=false)
  599. */
  600. protected bool $isTimetableVisible;
  601. public function isTimetableVisible(): bool
  602. {
  603. return $this->isTimetableVisible;
  604. }
  605. public function setIsTimetableVisible(bool $isTimetableVisible): void
  606. {
  607. $this->isTimetableVisible = $isTimetableVisible;
  608. }
  609. /**
  610. * @ORM\Column(name="is_update_active", type="boolean", nullable=false)
  611. */
  612. protected bool $isUpdateActive;
  613. public function isUpdateActive(): bool
  614. {
  615. return $this->isUpdateActive;
  616. }
  617. public function setIsUpdateActive(bool $isUpdateACtive): void
  618. {
  619. $this->isUpdateActive = $isUpdateACtive;
  620. }
  621. /**
  622. * @var IntegratedExternalPartnerCustomerContentDistributionValue[]|Collection
  623. *
  624. * @ORM\OneToMany(targetEntity="App\Entity\ContentDistribution\IntegratedExternalPartnerCustomerContentDistributionValue", mappedBy="integratedExternalPartnerCustomer", cascade={"persist", "remove"})
  625. */
  626. protected Collection $contentDistributionValues;
  627. /**
  628. * @return IntegratedExternalPartnerCustomerContentDistributionValue[]|Collection
  629. */
  630. public function getContentDistributionValues(): Collection
  631. {
  632. return $this->contentDistributionValues;
  633. }
  634. /** @throws Exception */
  635. public function setContentDistributionStringValue(string $name, ?string $stringValue): void
  636. {
  637. /** @var IntegratedExternalPartnerCustomerContentDistributionValue $contentDistributionValue */
  638. foreach ($this->contentDistributionValues as $contentDistributionValue) {
  639. if ($contentDistributionValue->getName() === $name) {
  640. $contentDistributionValue->setStringValue($stringValue);
  641. return;
  642. }
  643. }
  644. if (!is_null($stringValue)) {
  645. $this->contentDistributionValues->add(
  646. IntegratedExternalPartnerCustomerContentDistributionValue::createWithStringValue($this, $name, $stringValue)
  647. );
  648. }
  649. }
  650. /** @throws Exception */
  651. public function setContentDistributionFloatValue(string $name, ?float $floatValue): void
  652. {
  653. /** @var IntegratedExternalPartnerCustomerContentDistributionValue $contentDistributionValue */
  654. foreach ($this->contentDistributionValues as $contentDistributionValue) {
  655. if ($contentDistributionValue->getName() === $name) {
  656. $contentDistributionValue->setFloatValue($floatValue);
  657. return;
  658. }
  659. }
  660. if (!is_null($floatValue)) {
  661. $this->contentDistributionValues->add(
  662. IntegratedExternalPartnerCustomerContentDistributionValue::createWithFloatValue($this, $name, $floatValue)
  663. );
  664. }
  665. }
  666. /** @throws Exception */
  667. public function setContentDistributionBoolValue(string $name, ?bool $boolValue): void
  668. {
  669. /** @var IntegratedExternalPartnerCustomerContentDistributionValue $contentDistributionValue */
  670. foreach ($this->contentDistributionValues as $contentDistributionValue) {
  671. if ($contentDistributionValue->getName() === $name) {
  672. $contentDistributionValue->setBoolValue($boolValue);
  673. return;
  674. }
  675. }
  676. if (!is_null($boolValue)) {
  677. $this->contentDistributionValues->add(
  678. IntegratedExternalPartnerCustomerContentDistributionValue::createWithBoolValue($this, $name, $boolValue)
  679. );
  680. }
  681. }
  682. /**
  683. * @ORM\Column(name="cv_for_extended_applications_mandatory", type="boolean", nullable=false)
  684. */
  685. protected bool $cvForExtendedApplicationsMandatory;
  686. public function cvForExtendedApplicationsMandatory(): bool
  687. {
  688. return $this->cvForExtendedApplicationsMandatory;
  689. }
  690. public function setCvForExtendedApplicationsMandatory(bool $cvForExtendedApplicationsMandatory): void
  691. {
  692. $this->cvForExtendedApplicationsMandatory = $cvForExtendedApplicationsMandatory;
  693. }
  694. /**
  695. * @ORM\Column(name="recurrent_jobs_limit", type="integer", nullable=true)
  696. */
  697. private ?int $recurrentJobsLimit;
  698. public function getRecurrentJobsLimit(): ?int
  699. {
  700. return $this->recurrentJobsLimit;
  701. }
  702. public function setRecurrentJobsLimit(?int $recurrentJobsLimit): void
  703. {
  704. $this->recurrentJobsLimit = $recurrentJobsLimit;
  705. }
  706. /**
  707. * @ORM\Column(name="contact_name", type="text", length=256, nullable=true)
  708. */
  709. private ?string $contactName;
  710. public function getContactName(): ?string
  711. {
  712. return $this->contactName;
  713. }
  714. public function setContactName(?string $contactName): void
  715. {
  716. $this->contactName = $contactName;
  717. }
  718. /**
  719. * @ORM\ManyToOne(targetEntity="App\Entity\ContentDistribution\AgenturFuerArbeit\DestatisEconomicSector", cascade={"persist"})
  720. *
  721. * @ORM\JoinColumn(name="destatis_economic_sectors_running_number", referencedColumnName="running_number", nullable=true, onDelete="SET NULL")
  722. */
  723. protected ?DestatisEconomicSector $destatisEconomicSector = null;
  724. public function getDestatisEconomicSector(): ?DestatisEconomicSector
  725. {
  726. return $this->destatisEconomicSector;
  727. }
  728. public function setDestatisEconomicSector(?DestatisEconomicSector $destatisEconomicSector): void
  729. {
  730. $this->destatisEconomicSector = $destatisEconomicSector;
  731. }
  732. /**
  733. * @ORM\Column(name="destatis_economic_sector_decision", type="smallint", nullable=true, options={"unsigned": true})
  734. */
  735. protected ?int $destatisEconomicSectorDecision;
  736. public function setDestatisEconomicSectorDecision(?int $destatisEconomicSectorDecision): void
  737. {
  738. if (!is_null($destatisEconomicSectorDecision)) {
  739. if (!ReflectionHelper::hasConstWithValue(
  740. DestatisEconomicSectorService::class,
  741. 'SECTOR_DECISION_',
  742. $destatisEconomicSectorDecision)
  743. ) {
  744. throw new InvalidArgumentException("Value '$destatisEconomicSectorDecision' not allowed for destatisEconomicSectorDecision.");
  745. }
  746. }
  747. $this->destatisEconomicSectorDecision = $destatisEconomicSectorDecision;
  748. }
  749. public function getDestatisEconomicSectorDecision(): ?int
  750. {
  751. return $this->destatisEconomicSectorDecision;
  752. }
  753. public function getDestatisEconomicSectorOrigin(): ?int
  754. {
  755. if (!is_null($this->destatisEconomicSector)) {
  756. return DestatisEconomicSectorService::SECTOR_ORIGIN_INTEGRATED_EXTERNAL_PARTNER_CUSTOMER;
  757. }
  758. return null;
  759. }
  760. /**
  761. * @ORM\Column(name="has_click_based_billing", type="boolean", nullable=false)
  762. */
  763. protected bool $hasClickBasedBilling;
  764. public function hasClickBasedBilling(): bool
  765. {
  766. return $this->hasClickBasedBilling;
  767. }
  768. public function setHasClickBasedBilling(bool $hasClickBasedBilling): void
  769. {
  770. $this->hasClickBasedBilling = $hasClickBasedBilling;
  771. }
  772. /**
  773. * @ORM\Column(name="premium_radar_limit", type="integer", nullable=true)
  774. */
  775. private ?int $premiumRadarLimit;
  776. public function getPremiumRadarLimit(): ?int
  777. {
  778. return $this->premiumRadarLimit;
  779. }
  780. public function setPremiumRadarLimit(?int $premiumRadarLimit): void
  781. {
  782. $this->premiumRadarLimit = $premiumRadarLimit;
  783. }
  784. /**
  785. * @ORM\Column(name="premium_radar_whatsapp_limit", type="integer", nullable=true)
  786. */
  787. private ?int $premiumRadarWhatsappLimit;
  788. public function getPremiumRadarWhatsappLimit(): ?int
  789. {
  790. return $this->premiumRadarWhatsappLimit;
  791. }
  792. public function setPremiumRadarWhatsappLimit(?int $premiumRadarWhatsappLimit): void
  793. {
  794. $this->premiumRadarWhatsappLimit = $premiumRadarWhatsappLimit;
  795. }
  796. /**
  797. * @ORM\Column(name="premium_radar_email_limit", type="integer", nullable=true)
  798. */
  799. private ?int $premiumRadarEmailLimit;
  800. public function getPremiumRadarEmailLimit(): ?int
  801. {
  802. return $this->premiumRadarEmailLimit;
  803. }
  804. public function setPremiumRadarEmailLimit(?int $premiumRadarEmailLimit): void
  805. {
  806. $this->premiumRadarEmailLimit = $premiumRadarEmailLimit;
  807. }
  808. /**
  809. * @var array|string[]
  810. *
  811. * @ORM\Column(name="premium_radar_additional_searchterms", type="array", nullable=false)
  812. */
  813. private array $premiumRadarAdditionalSearchterms;
  814. public function setPremiumRadarAdditionalSearchterms(array $premiumRadarAdditionalSearchterms): void
  815. {
  816. $this->premiumRadarAdditionalSearchterms = $premiumRadarAdditionalSearchterms;
  817. }
  818. public function addPremiumRadarAdditionalSearchterm(string $premiumRadarAdditionalSearchterm): void
  819. {
  820. if (trim($premiumRadarAdditionalSearchterm) !== '' && !in_array(trim($premiumRadarAdditionalSearchterm), $this->premiumRadarAdditionalSearchterms)) {
  821. $this->premiumRadarAdditionalSearchterms[] = trim($premiumRadarAdditionalSearchterm);
  822. }
  823. }
  824. public function removePremiumRadarAdditionalSearchterm(string $premiumRadarAdditionalSearchterm): void
  825. {
  826. if (in_array(trim($premiumRadarAdditionalSearchterm), $this->premiumRadarAdditionalSearchterms)) {
  827. array_splice($this->premiumRadarAdditionalSearchterms, array_search(trim($premiumRadarAdditionalSearchterm), $this->premiumRadarAdditionalSearchterms), 1);
  828. }
  829. }
  830. public function getPremiumRadarAdditionalSearchterms(): array
  831. {
  832. return $this->premiumRadarAdditionalSearchterms;
  833. }
  834. /**
  835. * @ORM\Column(name="superchat_attachment_id", type="text", length=128, nullable="true")
  836. */
  837. private ?string $superchatAttachmentId;
  838. public function getSuperchatAttachmentId(): ?string
  839. {
  840. return $this->superchatAttachmentId;
  841. }
  842. public function setSuperchatAttachmentId(?string $superchatAttachmentId): void
  843. {
  844. $this->superchatAttachmentId = $superchatAttachmentId;
  845. }
  846. /**
  847. * @ORM\Column(name="monthly_click_budget_reached", type="boolean", nullable=false)
  848. */
  849. protected bool $monthlyClickBudgetReached;
  850. public function isMonthlyClickBudgetReached(): bool
  851. {
  852. return $this->monthlyClickBudgetReached;
  853. }
  854. public function setMonthlyClickBudgetReached(bool $monthlyClickBudgetReached): void
  855. {
  856. $this->monthlyClickBudgetReached = $monthlyClickBudgetReached;
  857. }
  858. /**
  859. * @ORM\Column(name="daily_crawler_update", type="boolean", nullable=false)
  860. */
  861. protected bool $dailyCrawlerUpdate;
  862. public function getDailyCrawlerUpdate(): bool
  863. {
  864. return $this->dailyCrawlerUpdate;
  865. }
  866. public function setDailyCrawlerUpdate(bool $dailyCrawlerUpdate): void
  867. {
  868. $this->dailyCrawlerUpdate = $dailyCrawlerUpdate;
  869. }
  870. /**
  871. * @ORM\Column(name="click_budget", type="array", nullable=false)
  872. */
  873. protected array $clickBudget;
  874. public function getClickBudget(): array
  875. {
  876. return $this->clickBudget;
  877. }
  878. public function setClickBudget(array $clickBudget): void
  879. {
  880. $clickBudgetArray = [];
  881. foreach ($clickBudget as $key => $value) {
  882. if (!in_array($key, range(1, 12))) {
  883. throw new InvalidArgumentException("Key '$key' not allowed for click budget.");
  884. }
  885. if (!is_numeric(trim($value))) {
  886. throw new InvalidArgumentException("Value '$value' not allowed for click budget.");
  887. }
  888. $clickBudgetArray[$key] = (int)trim($value);
  889. }
  890. $this->clickBudget = $clickBudgetArray;
  891. }
  892. /**
  893. * @ORM\Column(name="working_times_hidden", type="boolean", nullable=false)
  894. */
  895. protected bool $workingTimesHidden;
  896. public function getWorkingTimesHidden(): bool
  897. {
  898. return $this->workingTimesHidden;
  899. }
  900. public function setWorkingTimesHidden(bool $workingTimesHidden): void
  901. {
  902. $this->workingTimesHidden = $workingTimesHidden;
  903. }
  904. /**
  905. * @ORM\Column(name="acquisition_method", type="integer", enumType=AcquisitionMethod::class, nullable=false)
  906. */
  907. protected AcquisitionMethod $acquisitionMethod;
  908. public function getAcquisitionMethod(): AcquisitionMethod
  909. {
  910. return $this->acquisitionMethod;
  911. }
  912. public function setAcquisitionMethod(AcquisitionMethod $acquisitionMethod): void
  913. {
  914. $this->acquisitionMethod = $acquisitionMethod;
  915. }
  916. /**
  917. * @ORM\Column(name="billed_party", type="integer", enumType=BilledParty::class, nullable=false)
  918. */
  919. protected BilledParty $billedParty;
  920. public function getBilledParty(): BilledParty
  921. {
  922. return $this->billedParty;
  923. }
  924. public function setBilledParty(BilledParty $billedParty): void
  925. {
  926. $this->billedParty = $billedParty;
  927. }
  928. /**
  929. * @ORM\Column(name="is_contact_data_visible", type="boolean", nullable=false)
  930. */
  931. protected bool $isContactDataVisible;
  932. public function isContactDataVisible(): bool
  933. {
  934. return $this->isContactDataVisible;
  935. }
  936. public function setIsContactDataVisible(bool $isContactDataVisible): void
  937. {
  938. $this->isContactDataVisible = $isContactDataVisible;
  939. }
  940. /**
  941. * @ORM\Column(name="zvoove_application_api_key", type="text", length=256, nullable=true)
  942. */
  943. private ?string $zvooveApplicationApiKey;
  944. public function getZvooveApplicationApiKey(): ?string
  945. {
  946. return $this->zvooveApplicationApiKey;
  947. }
  948. public function setZvooveApplicationApiKey(?string $zvooveApplicationApiKey): void
  949. {
  950. $this->zvooveApplicationApiKey = $zvooveApplicationApiKey;
  951. }
  952. // A Customer connected to a WeclappParty is transitively connected to that party's WeclappContracts:
  953. // Customer -> WeclappParty -> WeclappContract.
  954. // However, we can additionally connect a Customer directly to a WeclappContract.
  955. // The business meaning of this is that a Customer who is directly connected to a WeclappContract
  956. // exists in our platform for only this specific contract.
  957. /**
  958. * @ORM\OneToMany(
  959. * targetEntity="JanusHercules\ExtendedApplicationQuestionnaire\Domain\Entity\ExtendedApplicationCustomerQuestionTemplate",
  960. * mappedBy="integratedExternalPartnerCustomer",
  961. * cascade={"persist", "remove"}
  962. * )
  963. */
  964. protected Collection $extendedApplicationCustomerQuestionTemplates;
  965. public function getExtendedApplicationCustomerQuestionTemplates(): Collection
  966. {
  967. return $this->extendedApplicationCustomerQuestionTemplates;
  968. }
  969. public function addExtendedApplicationCustomerQuestionTemplate(ExtendedApplicationCustomerQuestionTemplate $questionTemplate): void
  970. {
  971. $this->extendedApplicationCustomerQuestionTemplates[] = $questionTemplate;
  972. }
  973. }