src/CasinoBundle/Entity/Casino.php line 35

Open in your IDE?
  1. <?php
  2. namespace App\CasinoBundle\Entity;
  3. use App\CasinoBundle\Enum\SiteTypeEnum;
  4. use App\CmsBundle\Entity\LogInterface;
  5. use App\CmsBundle\Entity\LogTrait;
  6. use App\CmsBundle\Enum\LogActionEnum;
  7. use App\ProfileBundle\Entity\User;
  8. use Doctrine\Common\Collections\ArrayCollection;
  9. use Doctrine\Common\Collections\Collection;
  10. use Doctrine\ORM\Mapping as ORM;
  11. use App\CmsBundle\Entity\Site;
  12. use App\CmsBundle\Entity\TimeStampedTrait;
  13. use Symfony\Component\Validator\Constraints as Assert;
  14. /**
  15.  * Casino
  16.  *
  17.  * @ORM\Table(
  18.  *     name="casino",
  19.  *     indexes={
  20.  *         @ORM\Index(name="score_index", columns={"score"}),
  21.  *         @ORM\Index(name="site_type_index", columns={"site_type"})
  22.  *     },
  23.  *     uniqueConstraints={
  24.  *         @ORM\UniqueConstraint(name="domain_uindex", columns={"domain"}),
  25.  *         @ORM\UniqueConstraint(name="casino_name_uindex", columns={"name"})
  26.  *     }
  27.  * )
  28.  * @ORM\Entity(repositoryClass="App\CasinoBundle\Repository\CasinoRepository")
  29.  * @ORM\HasLifecycleCallbacks()
  30.  * @ORM\Cache(usage="NONSTRICT_READ_WRITE", region="one_day")
  31.  */
  32. class Casino implements AliasableInterfaceLogInterface
  33. {
  34.     use TimeStampedTraitAliasTraitSlotcatalogIdTraitLogTrait;
  35.     /**
  36.      *
  37.      */
  38.     public const MAX_SCORE 168;
  39.     /**
  40.      * @ORM\Id()
  41.      * @ORM\GeneratedValue()
  42.      * @ORM\Column(type="integer")
  43.      */
  44.     private $id;
  45.     /**
  46.      * @ORM\Column(type="string", length=255)
  47.      */
  48.     private $name;
  49.     /**
  50.      * @ORM\Column(type="string", length=255)
  51.      */
  52.     private $domain;
  53.     /**
  54.      * @ORM\Column(type="integer", nullable=true)
  55.      */
  56.     private $score;
  57.     /**
  58.      * @ORM\Column(name="show_terms", type="boolean", nullable=true)
  59.      */
  60.     private $showTerms;
  61.     /**
  62.      * @var bool|null
  63.      *
  64.      * @ORM\Column(
  65.      *     name="reset_score",
  66.      *     type="boolean",
  67.      *     nullable=true
  68.      *     )
  69.      */
  70.     private ?bool $resetScore;
  71.     /**
  72.      * @ORM\Column(type="float", nullable=true)
  73.      */
  74.     private $newScore;
  75.     /**
  76.      * @ORM\Column(type="float", nullable=true)
  77.      * @Assert\Range(
  78.      *      min = 0.0,
  79.      *      max = 5.0,
  80.      *      notInRangeMessage = "The value must be between {{ min }} and {{ max }}.",
  81.      * )
  82.      */
  83.     private $generosityRank;
  84.     /**
  85.      * @ORM\Column(type="integer", nullable=true)
  86.      */
  87.     private $siteType;
  88.     /**
  89.      * @var float
  90.      *
  91.      * @ORM\Column(name="brand_score", type="float", nullable=false, options={"default" = 0})
  92.      */
  93.     private float $brandScore 0.0;
  94.     /**
  95.      * @ORM\ManyToMany(targetEntity="App\CasinoBundle\Entity\Game", fetch="EXTRA_LAZY", inversedBy="casinos", cascade={"persist"})
  96.      * @ORM\JoinTable(
  97.      *     name="casino_game",
  98.      *     joinColumns={
  99.      *          @ORM\JoinColumn(name="casino_id", referencedColumnName="id")
  100.      *     },
  101.      *     inverseJoinColumns={
  102.      *          @ORM\JoinColumn(name="game_id", referencedColumnName="id")
  103.      *     }
  104.      * )
  105.      */
  106.     protected $games;
  107.     /**
  108.      * @ORM\ManyToMany(targetEntity="App\CasinoBundle\Entity\BonusType", inversedBy="casinos", cascade={"persist"})
  109.      * @ORM\JoinTable(
  110.      *     name="casino_bonus_type",
  111.      *     joinColumns={
  112.      *          @ORM\JoinColumn(name="casino_id", referencedColumnName="id")
  113.      *     },
  114.      *     inverseJoinColumns={
  115.      *          @ORM\JoinColumn(name="bonus_type_id", referencedColumnName="id")
  116.      *     }
  117.      * )
  118.      */
  119.     protected $bonusTypes;
  120.     /**
  121.      * @ORM\ManyToMany(targetEntity="App\CasinoBundle\Entity\Software", inversedBy="casinos", cascade={"persist"})
  122.      * @ORM\JoinTable(
  123.      *     name="casino_software",
  124.      *     joinColumns={
  125.      *          @ORM\JoinColumn(name="casino_id", referencedColumnName="id")
  126.      *     },
  127.      *     inverseJoinColumns={
  128.      *          @ORM\JoinColumn(name="software_id", referencedColumnName="id")
  129.      *     }
  130.      * )
  131.      */
  132.     protected $softwares;
  133.     /**
  134.      * @ORM\ManyToMany(
  135.      *     targetEntity="App\CmsBundle\Entity\Site",
  136.      *     fetch="EXTRA_LAZY",
  137.      *     cascade={"persist"}
  138.      * )
  139.      * @ORM\JoinTable(
  140.      *     name="casino_site",
  141.      *     joinColumns={
  142.      *          @ORM\JoinColumn(name="casino_id", referencedColumnName="id")
  143.      *     },
  144.      *     inverseJoinColumns={
  145.      *          @ORM\JoinColumn(name="site_id", referencedColumnName="id")
  146.      *     }
  147.      * )
  148.      */
  149.     protected Collection $sites;
  150.     /**
  151.      * @ORM\ManyToMany(targetEntity="App\CasinoBundle\Entity\Language", inversedBy="casinos", cascade={"persist"})
  152.      * @ORM\JoinTable(
  153.      *     name="casino_language",
  154.      *     joinColumns={
  155.      *          @ORM\JoinColumn(name="casino_id", referencedColumnName="id")
  156.      *     },
  157.      *     inverseJoinColumns={
  158.      *          @ORM\JoinColumn(name="language_id", referencedColumnName="id")
  159.      *     }
  160.      * )
  161.      */
  162.     protected $languages;
  163.     /**
  164.      * @ORM\ManyToMany(targetEntity="App\CasinoBundle\Entity\Language", inversedBy="chatSupportCasinos", cascade={"persist"})
  165.      * @ORM\JoinTable(
  166.      *     name="casino_chat_support_language",
  167.      *     joinColumns={
  168.      *          @ORM\JoinColumn(name="casino_id", referencedColumnName="id")
  169.      *     },
  170.      *     inverseJoinColumns={
  171.      *          @ORM\JoinColumn(name="language_id", referencedColumnName="id")
  172.      *     }
  173.      * )
  174.      */
  175.     protected $chatSupportLanguages;
  176.     /**
  177.      * @ORM\ManyToMany(targetEntity="App\CasinoBundle\Entity\Language", inversedBy="emailSupportCasinos", cascade={"persist"})
  178.      * @ORM\JoinTable(
  179.      *     name="casino_email_support_language",
  180.      *     joinColumns={
  181.      *          @ORM\JoinColumn(name="casino_id", referencedColumnName="id")
  182.      *     },
  183.      *     inverseJoinColumns={
  184.      *          @ORM\JoinColumn(name="language_id", referencedColumnName="id")
  185.      *     }
  186.      * )
  187.      */
  188.     protected $emailSupportLanguages;
  189.     /**
  190.      * @ORM\ManyToMany(targetEntity="App\CasinoBundle\Entity\Language", inversedBy="phoneSupportCasinos", cascade={"persist"})
  191.      * @ORM\JoinTable(
  192.      *     name="casino_phone_support_language",
  193.      *     joinColumns={
  194.      *          @ORM\JoinColumn(name="casino_id", referencedColumnName="id")
  195.      *     },
  196.      *     inverseJoinColumns={
  197.      *          @ORM\JoinColumn(name="language_id", referencedColumnName="id")
  198.      *     }
  199.      * )
  200.      */
  201.     protected $phoneSupportLanguages;
  202.     /**
  203.      * @ORM\ManyToMany(targetEntity="App\CasinoBundle\Entity\Country", inversedBy="allowedCasinos", cascade={"persist"})
  204.      * @ORM\JoinTable(
  205.      *     name="casino_allowed_country",
  206.      *     joinColumns={
  207.      *          @ORM\JoinColumn(name="casino_id", referencedColumnName="id")
  208.      *     },
  209.      *     inverseJoinColumns={
  210.      *          @ORM\JoinColumn(name="country_id", referencedColumnName="id")
  211.      *     }
  212.      * )
  213.      */
  214.     protected $allowedCountries;
  215.     /**
  216.      * @ORM\ManyToMany(targetEntity="App\CasinoBundle\Entity\Country", inversedBy="restrictedCasinos", cascade={"persist"})
  217.      * @ORM\JoinTable(
  218.      *     name="casino_restricted_country",
  219.      *     joinColumns={
  220.      *          @ORM\JoinColumn(name="casino_id", referencedColumnName="id")
  221.      *     },
  222.      *     inverseJoinColumns={
  223.      *          @ORM\JoinColumn(name="country_id", referencedColumnName="id")
  224.      *     }
  225.      * )
  226.      */
  227.     public $restrictedCountries;
  228.     /**
  229.      * @ORM\ManyToMany(targetEntity="App\CasinoBundle\Entity\Country", inversedBy="restrictedCasinosFact", cascade={"persist"})
  230.      * @ORM\JoinTable(
  231.      *     name="casino_restricted_country_fact",
  232.      *     joinColumns={
  233.      *          @ORM\JoinColumn(name="casino_id", referencedColumnName="id")
  234.      *     },
  235.      *     inverseJoinColumns={
  236.      *          @ORM\JoinColumn(name="country_id", referencedColumnName="id")
  237.      *     }
  238.      * )
  239.      */
  240.     public $restrictedCountriesFact;
  241.     /**
  242.      * @ORM\ManyToMany(targetEntity="App\CasinoBundle\Entity\Country", inversedBy="jurisdictionCasinos", cascade={"persist"})
  243.      * @ORM\JoinTable(
  244.      *     name="casino_jurisdiction",
  245.      *     joinColumns={
  246.      *          @ORM\JoinColumn(name="casino_id", referencedColumnName="id")
  247.      *     },
  248.      *     inverseJoinColumns={
  249.      *          @ORM\JoinColumn(name="country_id", referencedColumnName="id")
  250.      *     }
  251.      * )
  252.      */
  253.     protected $jurisdictions;
  254.     /**
  255.      * @ORM\ManyToMany(targetEntity="App\CasinoBundle\Entity\Country", inversedBy="brandRegistrationCasinos", cascade={"persist"})
  256.      * @ORM\JoinTable(
  257.      *     name="casino_brand_registration",
  258.      *     joinColumns={
  259.      *          @ORM\JoinColumn(name="casino_id", referencedColumnName="id")
  260.      *     },
  261.      *     inverseJoinColumns={
  262.      *          @ORM\JoinColumn(name="country_id", referencedColumnName="id")
  263.      *     }
  264.      * )
  265.      */
  266.     protected $brandRegistration;
  267.     /**
  268.      * @ORM\ManyToMany (
  269.      *     targetEntity="App\CasinoBundle\Entity\CasinoCategory",
  270.      *     inversedBy="casinos",
  271.      *     cascade={"persist"},
  272.      *     fetch="EXTRA_LAZY"
  273.      * )
  274.      * @ORM\JoinTable(
  275.      *     name="casino_casino_categories",
  276.      *     joinColumns={
  277.      *          @ORM\JoinColumn(name="casino_id", referencedColumnName="id")
  278.      *     },
  279.      *     inverseJoinColumns={
  280.      *          @ORM\JoinColumn(name="casino_category_id", referencedColumnName="id")
  281.      *     }
  282.      * )
  283.      */
  284.     private $casinoCategories;
  285.     /**
  286.      * @ORM\ManyToMany(targetEntity="App\CasinoBundle\Entity\Country", inversedBy="serverLocationCasinos", cascade={"persist"})
  287.      * @ORM\JoinTable(
  288.      *     name="casino_server_location",
  289.      *     joinColumns={
  290.      *          @ORM\JoinColumn(name="casino_id", referencedColumnName="id")
  291.      *     },
  292.      *     inverseJoinColumns={
  293.      *          @ORM\JoinColumn(name="country_id", referencedColumnName="id")
  294.      *     }
  295.      * )
  296.      */
  297.     protected $serverLocation;
  298.     /**
  299.      * @ORM\OneToMany(targetEntity="App\CasinoBundle\Entity\Visit", mappedBy="casino", cascade={"persist"}, orphanRemoval=true)
  300.      */
  301.     protected $visits;
  302.     /**
  303.      * @ORM\OneToMany(targetEntity="App\CasinoBundle\Entity\ProsAndCons", mappedBy="casino", cascade={"persist"}, orphanRemoval=true)
  304.      */
  305.     protected $prosAndCons;
  306.     /**
  307.      * @ORM\OneToMany(targetEntity="App\CasinoBundle\Entity\Traffic", mappedBy="casino", cascade={"persist"}, orphanRemoval=true)
  308.      * @ORM\OrderBy({"date" = "DESC"})
  309.      */
  310.     protected $traffic;
  311.     /**
  312.      * @ORM\ManyToMany(targetEntity="App\CasinoBundle\Entity\Keyword", inversedBy="casinos", cascade={"persist"})
  313.      * @ORM\JoinTable(
  314.      *     name="casino_keyword",
  315.      *     joinColumns={
  316.      *          @ORM\JoinColumn(name="casino_id", referencedColumnName="id")
  317.      *     },
  318.      *     inverseJoinColumns={
  319.      *          @ORM\JoinColumn(name="keyword_id", referencedColumnName="id")
  320.      *     }
  321.      * )
  322.      */
  323.     protected $keywords;
  324.     /**
  325.      * @ORM\ManyToMany(targetEntity="App\CasinoBundle\Entity\CasinoType", inversedBy="casinos", cascade={"persist"})
  326.      * @ORM\JoinTable(
  327.      *     name="casino_casino_type",
  328.      *     joinColumns={
  329.      *          @ORM\JoinColumn(name="casino_id", referencedColumnName="id")
  330.      *     },
  331.      *     inverseJoinColumns={
  332.      *          @ORM\JoinColumn(name="casino_type_id", referencedColumnName="id")
  333.      *     }
  334.      * )
  335.      */
  336.     protected $casinoTypes;
  337.     /**
  338.      * @ORM\ManyToMany(targetEntity="App\CasinoBundle\Entity\Currency", inversedBy="casinos", cascade={"persist"})
  339.      * @ORM\JoinTable(
  340.      *     name="casino_currency",
  341.      *     joinColumns={
  342.      *          @ORM\JoinColumn(name="casino_id", referencedColumnName="id")
  343.      *     },
  344.      *     inverseJoinColumns={
  345.      *          @ORM\JoinColumn(name="currency_id", referencedColumnName="id")
  346.      *     }
  347.      * )
  348.      */
  349.     protected $currencies;
  350.     /**
  351.      * @ORM\ManyToMany(targetEntity="App\CasinoBundle\Entity\PaymentMethod", inversedBy="casinosWithDepositMethods", cascade={"persist"})
  352.      * @ORM\JoinTable(
  353.      *     name="casino_deposit_methods",
  354.      *     joinColumns={
  355.      *          @ORM\JoinColumn(name="casino_id", referencedColumnName="id")
  356.      *     },
  357.      *     inverseJoinColumns={
  358.      *          @ORM\JoinColumn(name="deposit_method_id", referencedColumnName="id")
  359.      *     }
  360.      * )
  361.      * @ORM\OrderBy({"position" = "ASC"})
  362.      */
  363.     protected $depositMethods;
  364.     /**
  365.      * @ORM\ManyToMany(targetEntity="App\CasinoBundle\Entity\PaymentMethod", inversedBy="casinosWithWithdrawalMethods", cascade={"persist"})
  366.      * @ORM\JoinTable(
  367.      *     name="casino_withdrawal_methods",
  368.      *     joinColumns={
  369.      *          @ORM\JoinColumn(name="casino_id", referencedColumnName="id")
  370.      *     },
  371.      *     inverseJoinColumns={
  372.      *          @ORM\JoinColumn(name="withdrawal_method_id", referencedColumnName="id")
  373.      *     }
  374.      * )
  375.      * @ORM\OrderBy({"position" = "ASC"})
  376.      */
  377.     protected $withdrawalMethods;
  378.     /**
  379.      * @ORM\OneToMany(targetEntity="App\CasinoBundle\Entity\CasinoLicence", mappedBy="casino", cascade={"persist"}, orphanRemoval=true)
  380.      */
  381.     protected $casinoLicences;
  382.     /**
  383.      * @ORM\OneToMany(targetEntity="App\CasinoBundle\Entity\CasinoOverview", mappedBy="casino", cascade={"persist"}, orphanRemoval=true)
  384.      */
  385.     protected $casinoOverview;
  386.     /**
  387.      * @ORM\OneToMany(targetEntity="App\CasinoBundle\Entity\CasinoGeoScore", mappedBy="casino", cascade={"persist","remove"}, orphanRemoval=true)
  388.      */
  389.     protected $geoScores;
  390.     /**
  391.      * @ORM\ManyToMany(targetEntity="App\CasinoBundle\Entity\SupervisoryAuthority", inversedBy="casinos", cascade={"persist"})
  392.      * @ORM\JoinTable(
  393.      *     name="casino_supervisory_authority",
  394.      *     joinColumns={
  395.      *          @ORM\JoinColumn(name="casino_id", referencedColumnName="id")
  396.      *     },
  397.      *     inverseJoinColumns={
  398.      *          @ORM\JoinColumn(name="supervisory_authority_id", referencedColumnName="id")
  399.      *     }
  400.      * )
  401.      */
  402.     protected $supervisoryAuthorities;
  403.     /**
  404.      * @ORM\ManyToMany(targetEntity="App\CasinoBundle\Entity\Owner", inversedBy="casinos", cascade={"persist"})
  405.      * @ORM\JoinTable(
  406.      *     name="casino_owner",
  407.      *     joinColumns={
  408.      *          @ORM\JoinColumn(name="casino_id", referencedColumnName="id")
  409.      *     },
  410.      *     inverseJoinColumns={
  411.      *          @ORM\JoinColumn(name="owner_id", referencedColumnName="id")
  412.      *     }
  413.      * )
  414.      */
  415.     protected $owners;
  416.     /**
  417.      * @ORM\OneToMany(targetEntity="App\CasinoBundle\Entity\SocialNetwork", mappedBy="casino", cascade={"persist"}, orphanRemoval=true)
  418.      */
  419.     private $socialNetworks;
  420.     /**
  421.      * @ORM\OneToMany(targetEntity="App\CasinoBundle\Entity\Alias", mappedBy="casino", cascade={"persist"}, orphanRemoval=true)
  422.      */
  423.     private Collection $aliases;
  424.     /**
  425.      * @ORM\OneToMany(targetEntity="App\CasinoBundle\Entity\Url", mappedBy="casino", cascade={"persist"}, orphanRemoval=true)
  426.      */
  427.     private $urls;
  428.     /**
  429.      * @ORM\OneToMany(
  430.      *     targetEntity="App\CasinoBundle\Entity\NewBonus",
  431.      *     mappedBy="casino",
  432.      *     cascade={"persist"},
  433.      *     orphanRemoval=true,
  434.      *     fetch="EXTRA_LAZY"
  435.      *     )
  436.      * @ORM\OrderBy(
  437.      *     {"score" = "DESC"}
  438.      *     )
  439.      */
  440.     private $newBonuses;
  441.     /**
  442.      * @ORM\OneToMany(targetEntity="App\CasinoBundle\Entity\Review", mappedBy="casino", cascade={"persist"}, orphanRemoval=true)
  443.      */
  444.     private $reviews;
  445.     /**
  446.      * @ORM\OneToMany(targetEntity="App\CasinoBundle\Entity\Logo", mappedBy="casino", cascade={"persist"}, orphanRemoval=true)
  447.      */
  448.     private $logos;
  449.     /**
  450.      * @ORM\OneToOne(targetEntity="App\CasinoBundle\Entity\Info", mappedBy="casino", cascade={"persist"}, orphanRemoval=true)
  451.      */
  452.     private $info;
  453.     /**
  454.      * @ORM\OneToOne(targetEntity="App\CasinoBundle\Entity\Trustpilot", mappedBy="casino", cascade={"persist"}, orphanRemoval=true)
  455.      */
  456.     private $trustpilot;
  457.     /**
  458.      * @ORM\OneToOne(targetEntity="App\CasinoBundle\Entity\SeoStat", mappedBy="casino", cascade={"persist"}, orphanRemoval=true)
  459.      */
  460.     private $seostat;
  461.     /**
  462.      * @ORM\OneToMany(targetEntity="App\CasinoBundle\Entity\SlotCasinoGeo", mappedBy="casino", cascade={"persist"}, orphanRemoval=true)
  463.      */
  464.     private $slotCasinoGeo;
  465.     /**
  466.      * @ORM\OneToMany(targetEntity="App\CasinoBundle\Entity\CasinoScreenshot", mappedBy="casino", cascade={"persist"}, orphanRemoval=true)
  467.      * @ORM\OrderBy({"position" = "ASC"})
  468.      */
  469.     private $casinoScreenshots;
  470.     /**
  471.      * @ORM\Column(type="string", length=255, nullable=true)
  472.      */
  473.     private $galleryHash;
  474.     /**
  475.      * @ORM\ManyToMany(targetEntity="App\CasinoBundle\Entity\Slot", inversedBy="casinos", cascade={"persist"})
  476.      * @ORM\JoinTable(
  477.      *     name="casino_slot",
  478.      *     joinColumns={
  479.      *          @ORM\JoinColumn(name="casino_id", referencedColumnName="id")
  480.      *     },
  481.      *     inverseJoinColumns={
  482.      *          @ORM\JoinColumn(name="slot_id", referencedColumnName="id")
  483.      *     }
  484.      * )
  485.      */
  486.     protected $slots;
  487.     /**
  488.      * @var bool
  489.      *
  490.      * @ORM\Column(
  491.      *     name="invert_country_from_allowed_1",
  492.      *     type="boolean",
  493.      *     nullable=true
  494.      *     )
  495.      */
  496.     private ?bool $invertCountryFromAllowed1;
  497.     /**
  498.      * @var bool
  499.      *
  500.      * @ORM\Column(
  501.      *     name="invert_country_from_allowed_2",
  502.      *     type="boolean",
  503.      *     nullable=true
  504.      *     )
  505.      */
  506.     private ?bool $invertCountryFromAllowed2;
  507.     /**
  508.      * @var bool
  509.      *
  510.      * @ORM\Column(
  511.      *     name="invert_country_from_restricted",
  512.      *     type="boolean",
  513.      *     nullable=true
  514.      *     )
  515.      */
  516.     private ?bool $invertCountryFromRestricted;
  517.     /**
  518.      * @var bool
  519.      *
  520.      * @ORM\Column(
  521.      *     name="copy_country_from_restricted",
  522.      *     type="boolean",
  523.      *     nullable=true
  524.      *     )
  525.      */
  526.     private ?bool $copyCountryFromRestricted;
  527.     /**
  528.      * @var int|null
  529.      *
  530.      * @ORM\Column(
  531.      *     name="copy_restricted_countries_from_casino",
  532.      *     type="integer",
  533.      *     nullable=true
  534.      *     )
  535.      */
  536.     private ?int $copyRestrictedCountriesFromCasino;
  537.     /**
  538.      * @var string|null
  539.      *
  540.      * @ORM\Column(
  541.      *     name="game_types",
  542.      *     type="string",
  543.      *     nullable=true
  544.      *     )
  545.      */
  546.     private ?string $gameTypes;
  547.     /**
  548.      * @ORM\OneToMany(targetEntity="App\CasinoBundle\Entity\UserReview", mappedBy="casino")
  549.      */
  550.     private Collection $userReviews;
  551.     /**
  552.      * @ORM\ManyToMany(
  553.      *     targetEntity="App\ProfileBundle\Entity\User",
  554.      *     mappedBy="casinos",
  555.      *     cascade={"persist"}
  556.      * )
  557.      */
  558.     private Collection $users;
  559.     /**
  560.      *
  561.      */
  562.     public function __construct()
  563.     {
  564.         $this->score 0;
  565.         $this->games = new ArrayCollection();
  566.         $this->bonusTypes = new ArrayCollection();
  567.         $this->softwares = new ArrayCollection();
  568.         $this->languages = new ArrayCollection();
  569.         $this->geoScores = new ArrayCollection();
  570.         $this->chatSupportLanguages = new ArrayCollection();
  571.         $this->emailSupportLanguages = new ArrayCollection();
  572.         $this->phoneSupportLanguages = new ArrayCollection();
  573.         $this->allowedCountries = new ArrayCollection();
  574.         $this->restrictedCountries = new ArrayCollection();
  575.         $this->restrictedCountriesFact = new ArrayCollection();
  576.         $this->currencies = new ArrayCollection();
  577.         $this->depositMethods = new ArrayCollection();
  578.         $this->withdrawalMethods = new ArrayCollection();
  579.         $this->casinoLicences = new ArrayCollection();
  580.         $this->supervisoryAuthorities = new ArrayCollection();
  581.         $this->owners = new ArrayCollection();
  582.         $this->socialNetworks = new ArrayCollection();
  583.         $this->jurisdictions = new ArrayCollection();
  584.         $this->serverLocation = new ArrayCollection();
  585.         $this->brandRegistration = new ArrayCollection();
  586.         $this->casinoTypes = new ArrayCollection();
  587.         $this->urls = new ArrayCollection();
  588.         $this->newBonuses = new ArrayCollection();
  589.         $this->reviews = new ArrayCollection();
  590.         $this->logos = new ArrayCollection();
  591.         $this->visits = new ArrayCollection();
  592.         $this->prosAndCons = new ArrayCollection();
  593.         $this->traffic = new ArrayCollection();
  594.         $this->keywords = new ArrayCollection();
  595.         $this->aliases = new ArrayCollection();
  596.         $this->slotCasinoGeo = new ArrayCollection();
  597.         $this->info = (new Info())->setCasino($this);
  598.         $this->siteType SiteTypeEnum::CASINO;
  599.         $this->casinoScreenshots = new ArrayCollection();
  600.         $this->slots = new ArrayCollection();
  601.         $this->sites = new ArrayCollection();
  602.         $this->casinoCategories = new ArrayCollection();
  603.         $this->copyCountryFromRestricted null;
  604.         $this->copyRestrictedCountriesFromCasino null;
  605.         $this->gameTypes null;
  606.     }
  607.     /**
  608.      * @return string
  609.      */
  610.     public function __toString(): string
  611.     {
  612.         return $this->domain;
  613.     }
  614.     /**
  615.      * @return int|null
  616.      */
  617.     public function getId(): ?int
  618.     {
  619.         return $this->id;
  620.     }
  621.     /**
  622.      * @return string
  623.      */
  624.     public function getSlug(): string
  625.     {
  626.         return $this->getDomain();
  627.     }
  628.     /**
  629.      * @return Info
  630.      */
  631.     public function getInfo(): Info
  632.     {
  633.         return ($this->info)
  634.             ? $this->info
  635.             : (new Info())->setCasino($this);
  636.     }
  637.     /**
  638.      * @param Info $info
  639.      * @return $this
  640.      */
  641.     public function setInfo(Info $info): self
  642.     {
  643.         $this->info $info;
  644.         $info->setCasino($this);
  645.         return $this;
  646.     }
  647.     /**
  648.      * @return Trustpilot
  649.      */
  650.     public function getTrustpilot(): Trustpilot
  651.     {
  652.         if (is_null($this->trustpilot)) {
  653.             $this->trustpilot = (new Trustpilot())->setCasino($this);
  654.         }
  655.         return $this->trustpilot;
  656.     }
  657.     /**
  658.      * @param Trustpilot $trustpilot
  659.      * @return $this
  660.      */
  661.     public function setTrustpilot(Trustpilot $trustpilot): self
  662.     {
  663.         $trustpilot->setCasino($this);
  664.         $this->trustpilot $trustpilot;
  665.         return $this;
  666.     }
  667.     /**
  668.      * @return SeoStat
  669.      */
  670.     public function getSeoStat(): SeoStat
  671.     {
  672.         if (is_null($this->seostat)) {
  673.             $this->seostat = (new SeoStat())->setCasino($this);
  674.         }
  675.         return $this->seostat;
  676.     }
  677.     /**
  678.      * @param SeoStat $seostat
  679.      * @return $this
  680.      */
  681.     public function setSeoStat(SeoStat $seostat): self
  682.     {
  683.         $seostat->setCasino($this);
  684.         $this->seostat $seostat;
  685.         return $this;
  686.     }
  687.     /**
  688.      * @return string|null
  689.      */
  690.     public function getName(): ?string
  691.     {
  692.         return $this->name;
  693.     }
  694.     /**
  695.      * @param string $name
  696.      * @return $this
  697.      */
  698.     public function setName(string $name): self
  699.     {
  700.         $this->name $name;
  701.         return $this;
  702.     }
  703.     /**
  704.      * @return string|null
  705.      */
  706.     public function getDomain(): ?string
  707.     {
  708.         return $this->domain;
  709.     }
  710.     /**
  711.      * @param string $domain
  712.      * @return $this
  713.      */
  714.     public function setDomain(string $domain): self
  715.     {
  716.         $this->domain $domain;
  717.         return $this;
  718.     }
  719.     /**
  720.      * @return Collection|Game[]
  721.      */
  722.     public function getGames(): Collection
  723.     {
  724.         return $this->games;
  725.     }
  726.     /**
  727.      * @return int
  728.      */
  729.     public function getGamesCount(): int
  730.     {
  731.         return $this->games->count();
  732.     }
  733.     /**
  734.      * @param Game $game
  735.      * @return $this
  736.      */
  737.     public function addGame(Game $game): self
  738.     {
  739.         if (!$this->games->contains($game)) {
  740.             $this->games[] = $game;
  741.             $game->addCasino($this);
  742.             $this->addCollectionLog(LogActionEnum::ADD'game'$game);
  743.         }
  744.         return $this;
  745.     }
  746.     /**
  747.      * @param Game $game
  748.      * @return $this
  749.      */
  750.     public function removeGame(Game $game): self
  751.     {
  752.         if ($this->games->contains($game)) {
  753.             $this->games->removeElement($game);
  754.             $game->removeCasino($this);
  755.             $this->addCollectionLog(LogActionEnum::REMOVE'game'$game);
  756.         }
  757.         return $this;
  758.     }
  759.     /**
  760.      * @return Collection|CasinoGeoScore[]
  761.      */
  762.     public function getCasinoGeoScores(): Collection
  763.     {
  764.         return $this->geoScores;
  765.     }
  766.     /**
  767.      * @param CasinoGeoScore $geoScore
  768.      * @return $this
  769.      */
  770.     public function addCasinoGeoScore(CasinoGeoScore $geoScore): self
  771.     {
  772.         if (!$this->geoScores->contains($geoScore)) {
  773.             $this->geoScores[] = $geoScore;
  774.             $geoScore->setCasino($this);
  775.             $this->addCollectionLog(LogActionEnum::ADD'casinoGeoScore'$geoScore);
  776.         }
  777.         return $this;
  778.     }
  779.     /**
  780.      * @param CasinoGeoScore $geoScore
  781.      * @return $this
  782.      */
  783.     public function removeCasinoGeoScore(CasinoGeoScore $geoScore): self
  784.     {
  785.         if ($this->geoScores->contains($geoScore)) {
  786.             $this->geoScores->removeElement($geoScore);
  787.             $geoScore->setCasino(null);
  788.             $this->addCollectionLog(LogActionEnum::REMOVE'casinoGeoScore'$geoScore);
  789.         }
  790.         return $this;
  791.     }
  792.     /**
  793.      * @return Collection|BonusType[]
  794.      */
  795.     public function getBonusTypes(): Collection
  796.     {
  797.         return $this->bonusTypes;
  798.     }
  799.     /**
  800.      * @param BonusType $bonusType
  801.      * @return $this
  802.      */
  803.     public function addBonusType(BonusType $bonusType): self
  804.     {
  805.         if (!$this->bonusTypes->contains($bonusType)) {
  806.             $this->bonusTypes[] = $bonusType;
  807.             $bonusType->addCasino($this);
  808.             $this->addCollectionLog(LogActionEnum::ADD'bonusType'$bonusType);
  809.         }
  810.         return $this;
  811.     }
  812.     /**
  813.      * @param BonusType $bonusType
  814.      * @return $this
  815.      */
  816.     public function removeBonusType(BonusType $bonusType): self
  817.     {
  818.         if ($this->bonusTypes->contains($bonusType)) {
  819.             $this->bonusTypes->removeElement($bonusType);
  820.             $bonusType->removeCasino($this);
  821.             $this->addCollectionLog(LogActionEnum::REMOVE'bonusType'$bonusType);
  822.         }
  823.         return $this;
  824.     }
  825.     /**
  826.      * @return Collection|Software[]
  827.      */
  828.     public function getSoftwares(): Collection
  829.     {
  830.         return $this->softwares;
  831.     }
  832.     /**
  833.      * @param Software $software
  834.      * @return $this
  835.      */
  836.     public function addSoftware(Software $software): self
  837.     {
  838.         if (!$this->softwares->contains($software)) {
  839.             $this->softwares[] = $software;
  840.             $software->addCasino($this);
  841.             $this->addCollectionLog(LogActionEnum::ADD'software'$software);
  842.         }
  843.         return $this;
  844.     }
  845.     /**
  846.      * @param Software $software
  847.      * @return $this
  848.      */
  849.     public function removeSoftware(Software $software): self
  850.     {
  851.         if ($this->softwares->contains($software)) {
  852.             $this->softwares->removeElement($software);
  853.             $software->removeCasino($this);
  854.             $this->addCollectionLog(LogActionEnum::REMOVE'software'$software);
  855.         }
  856.         return $this;
  857.     }
  858.     /**
  859.      * @return Collection|Language[]
  860.      */
  861.     public function getLanguages(): Collection
  862.     {
  863.         return $this->languages;
  864.     }
  865.     /**
  866.      * @param Language $language
  867.      * @return $this
  868.      */
  869.     public function addLanguage(Language $language): self
  870.     {
  871.         if (!$this->languages->contains($language)) {
  872.             $this->languages[] = $language;
  873.             $language->addCasino($this);
  874.             $this->addCollectionLog(LogActionEnum::ADD'language'$language);
  875.         }
  876.         return $this;
  877.     }
  878.     /**
  879.      * @param Language $language
  880.      * @return $this
  881.      */
  882.     public function removeLanguage(Language $language): self
  883.     {
  884.         if ($this->languages->contains($language)) {
  885.             $this->languages->removeElement($language);
  886.             $language->removeCasino($this);
  887.             $this->addCollectionLog(LogActionEnum::REMOVE'language'$language);
  888.         }
  889.         return $this;
  890.     }
  891.     /**
  892.      * @return Collection|Language[]
  893.      */
  894.     public function getChatSupportLanguages(): Collection
  895.     {
  896.         if (!$this->chatSupportLanguages$this->chatSupportLanguages = new ArrayCollection();
  897.         return $this->chatSupportLanguages;
  898.     }
  899.     /**
  900.      * @param Language $language
  901.      * @return $this
  902.      */
  903.     public function addChatSupportLanguage(Language $language): self
  904.     {
  905.         if (!$this->chatSupportLanguages->contains($language)) {
  906.             $this->chatSupportLanguages[] = $language;
  907.             $language->addCasino($this);
  908.             $this->addCollectionLog(LogActionEnum::ADD'chatSupportLanguage'$language);
  909.         }
  910.         return $this;
  911.     }
  912.     /**
  913.      * @param Language $language
  914.      * @return $this
  915.      */
  916.     public function removeChatSupportLanguage(Language $language): self
  917.     {
  918.         if ($this->chatSupportLanguages->contains($language)) {
  919.             $this->chatSupportLanguages->removeElement($language);
  920.             $language->removeCasino($this);
  921.             $this->addCollectionLog(LogActionEnum::REMOVE'chatSupportLanguage'$language);
  922.         }
  923.         return $this;
  924.     }
  925.     /**
  926.      * @return Collection|Language[]
  927.      */
  928.     public function getPhoneSupportLanguages(): Collection
  929.     {
  930.         if (!$this->phoneSupportLanguages$this->phoneSupportLanguages = new ArrayCollection();
  931.         return $this->phoneSupportLanguages;
  932.     }
  933.     /**
  934.      * @param Language $language
  935.      * @return $this
  936.      */
  937.     public function addPhoneSupportLanguage(Language $language): self
  938.     {
  939.         if (!$this->phoneSupportLanguages->contains($language)) {
  940.             $this->phoneSupportLanguages[] = $language;
  941.             $language->addCasino($this);
  942.             $this->addCollectionLog(LogActionEnum::ADD'phoneSupportLanguage'$language);
  943.         }
  944.         return $this;
  945.     }
  946.     /**
  947.      * @param Language $language
  948.      * @return $this
  949.      */
  950.     public function removePhoneSupportLanguage(Language $language): self
  951.     {
  952.         if ($this->phoneSupportLanguages->contains($language)) {
  953.             $this->phoneSupportLanguages->removeElement($language);
  954.             $language->removeCasino($this);
  955.             $this->addCollectionLog(LogActionEnum::REMOVE'phoneSupportLanguage'$language);
  956.         }
  957.         return $this;
  958.     }
  959.     /**
  960.      * @return Collection|Language[]
  961.      */
  962.     public function getEmailSupportLanguages(): Collection
  963.     {
  964.         if (!$this->emailSupportLanguages$this->emailSupportLanguages = new ArrayCollection();
  965.         return $this->emailSupportLanguages;
  966.     }
  967.     /**
  968.      * @param Language $language
  969.      * @return $this
  970.      */
  971.     public function addEmailSupportLanguage(Language $language): self
  972.     {
  973.         if (!$this->emailSupportLanguages->contains($language)) {
  974.             $this->emailSupportLanguages[] = $language;
  975.             $language->addCasino($this);
  976.             $this->addCollectionLog(LogActionEnum::ADD'emailSupportLanguage'$language);
  977.         }
  978.         return $this;
  979.     }
  980.     /**
  981.      * @param Language $language
  982.      * @return $this
  983.      */
  984.     public function removeEmailSupportLanguage(Language $language): self
  985.     {
  986.         if ($this->emailSupportLanguages->contains($language)) {
  987.             $this->emailSupportLanguages->removeElement($language);
  988.             $language->removeCasino($this);
  989.             $this->addCollectionLog(LogActionEnum::REMOVE'emailSupportLanguage'$language);
  990.         }
  991.         return $this;
  992.     }
  993.     /**
  994.      * @return Collection|Country[]
  995.      */
  996.     public function getAllowedCountries(): Collection
  997.     {
  998.         return $this->allowedCountries;
  999.     }
  1000.     /**
  1001.      * @param Country $country
  1002.      * @return $this
  1003.      */
  1004.     public function addAllowedCountry(Country $country): self
  1005.     {
  1006.         if (!$this->allowedCountries->contains($country)) {
  1007.             $this->allowedCountries[] = $country;
  1008.             $country->addAllowedCasino($this);
  1009.             $this->addCollectionLog(LogActionEnum::ADD'allowedCountry'$country);
  1010.         }
  1011.         return $this;
  1012.     }
  1013.     /**
  1014.      * @param Country $country
  1015.      * @return $this
  1016.      */
  1017.     public function removeAllowedCountry(Country $country): self
  1018.     {
  1019.         if ($this->allowedCountries->contains($country)) {
  1020.             $this->allowedCountries->removeElement($country);
  1021.             $country->removeAllowedCasino($this);
  1022.             $this->addCollectionLog(LogActionEnum::REMOVE'allowedCountry'$country);
  1023.         }
  1024.         return $this;
  1025.     }
  1026.     /**
  1027.      * @return Collection|Country[]
  1028.      */
  1029.     public function getRestrictedCountries(): Collection
  1030.     {
  1031.         return $this->restrictedCountries;
  1032.     }
  1033.     /**
  1034.      * @param Country $country
  1035.      * @return $this
  1036.      */
  1037.     public function addRestrictedCountry(Country $country): self
  1038.     {
  1039.         if (!$this->restrictedCountries->contains($country)) {
  1040.             $this->restrictedCountries[] = $country;
  1041.             $country->addRestrictedCasino($this);
  1042.             $this->addCollectionLog(LogActionEnum::ADD'restrictedCountry'$country);
  1043.         }
  1044.         return $this;
  1045.     }
  1046.     /**
  1047.      * @param Country $country
  1048.      * @return $this
  1049.      */
  1050.     public function removeRestrictedCountry(Country $country): self
  1051.     {
  1052.         if ($this->restrictedCountries->contains($country)) {
  1053.             $this->restrictedCountries->removeElement($country);
  1054.             $country->removeRestrictedCasino($this);
  1055.             $this->addCollectionLog(LogActionEnum::REMOVE'restrictedCountry'$country);
  1056.         }
  1057.         return $this;
  1058.     }
  1059.     /**
  1060.      * @return Collection|Country[]
  1061.      */
  1062.     public function getRestrictedCountriesFact(): Collection
  1063.     {
  1064.         if (is_null($this->restrictedCountriesFact)) $this->restrictedCountriesFact = new ArrayCollection();
  1065.         return $this->restrictedCountriesFact;
  1066.     }
  1067.     /**
  1068.      * @return string[]
  1069.      */
  1070.     public function getRestrictedCountriesFactAlpha2(): array
  1071.     {
  1072.         return array_map(function ($country) {
  1073.             return $country->getAlpha2();
  1074.         }, $this->restrictedCountriesFact->toArray());
  1075.     }
  1076.     /**
  1077.      * @param Country $country
  1078.      * @return $this
  1079.      */
  1080.     public function addRestrictedCountryFact(Country $country): self
  1081.     {
  1082.         if (!$this->getRestrictedCountriesFact()->contains($country)) {
  1083.             $this->restrictedCountriesFact[] = $country;
  1084.             $country->addRestrictedCasinoFact($this);
  1085.             $this->addCollectionLog(LogActionEnum::ADD'restrictedCountryFact'$country);
  1086.         }
  1087.         return $this;
  1088.     }
  1089.     /**
  1090.      * @param Country $country
  1091.      * @return $this
  1092.      */
  1093.     public function removeRestrictedCountryFact(Country $country): self
  1094.     {
  1095.         if ($this->getRestrictedCountriesFact()->contains($country)) {
  1096.             $this->restrictedCountriesFact->removeElement($country);
  1097.             $country->removeRestrictedCasinoFact($this);
  1098.             $this->addCollectionLog(LogActionEnum::REMOVE'restrictedCountryFact'$country);
  1099.         }
  1100.         return $this;
  1101.     }
  1102.     /**
  1103.      * @return Collection|Country[]
  1104.      */
  1105.     public function getJurisdictions(): Collection
  1106.     {
  1107.         return $this->jurisdictions;
  1108.     }
  1109.     /**
  1110.      * @param Country $country
  1111.      * @return $this
  1112.      */
  1113.     public function addJurisdiction(Country $country): self
  1114.     {
  1115.         if (!$this->jurisdictions->contains($country)) {
  1116.             $this->jurisdictions[] = $country;
  1117.             $country->addJurisdictionCasino($this);
  1118.             $this->addCollectionLog(LogActionEnum::ADD'jurisdiction'$country);
  1119.         }
  1120.         return $this;
  1121.     }
  1122.     /**
  1123.      * @param Country $country
  1124.      * @return $this
  1125.      */
  1126.     public function removeJurisdiction(Country $country): self
  1127.     {
  1128.         if ($this->jurisdictions->contains($country)) {
  1129.             $this->jurisdictions->removeElement($country);
  1130.             $country->removeJurisdictionCasino($this);
  1131.             $this->addCollectionLog(LogActionEnum::REMOVE'jurisdiction'$country);
  1132.         }
  1133.         return $this;
  1134.     }
  1135.     /**
  1136.      * @return Collection|Country[]
  1137.      */
  1138.     public function getServerLocation(): Collection
  1139.     {
  1140.         if (!$this->serverLocation$this->serverLocation = new ArrayCollection();
  1141.         return $this->serverLocation;
  1142.     }
  1143.     /**
  1144.      * @param Country $country
  1145.      * @return $this
  1146.      */
  1147.     public function addServerLocation(Country $country): self
  1148.     {
  1149.         if (!$this->serverLocation->contains($country)) {
  1150.             $this->serverLocation[] = $country;
  1151.             $country->addServerLocationCasino($this);
  1152.             $this->addCollectionLog(LogActionEnum::ADD'serverLocation'$country);
  1153.         }
  1154.         return $this;
  1155.     }
  1156.     /**
  1157.      * @param Country $country
  1158.      * @return $this
  1159.      */
  1160.     public function removeServerLocation(Country $country): self
  1161.     {
  1162.         if ($this->serverLocation->contains($country)) {
  1163.             $this->serverLocation->removeElement($country);
  1164.             $country->removeServerLocationCasino($this);
  1165.             $this->addCollectionLog(LogActionEnum::REMOVE'serverLocation'$country);
  1166.         }
  1167.         return $this;
  1168.     }
  1169.     /**
  1170.      * @return Collection|Country[]
  1171.      */
  1172.     public function getBrandRegistration(): Collection
  1173.     {
  1174.         if (!$this->brandRegistration$this->brandRegistration = new ArrayCollection();
  1175.         return $this->brandRegistration;
  1176.     }
  1177.     /**
  1178.      * @param Country $country
  1179.      * @return $this
  1180.      */
  1181.     public function addBrandRegistration(Country $country): self
  1182.     {
  1183.         $this->addCollectionLog(LogActionEnum::ADD'brandRegistration'$country);
  1184.         if (!$this->brandRegistration->contains($country)) {
  1185.             $this->brandRegistration[] = $country;
  1186.             $country->addBrandRegistrationCasino($this);
  1187.         }
  1188.         return $this;
  1189.     }
  1190.     /**
  1191.      * @param Country $country
  1192.      * @return $this
  1193.      */
  1194.     public function removeBrandRegistration(Country $country): self
  1195.     {
  1196.         $this->addCollectionLog(LogActionEnum::REMOVE'brandRegistration'$country);
  1197.         if ($this->brandRegistration->contains($country)) {
  1198.             $this->brandRegistration->removeElement($country);
  1199.             $country->removeBrandRegistrationCasino($this);
  1200.         }
  1201.         return $this;
  1202.     }
  1203.     /**
  1204.      * @return Collection|CasinoType[]
  1205.      */
  1206.     public function getCasinoTypes(): Collection
  1207.     {
  1208.         return $this->casinoTypes;
  1209.     }
  1210.     /**
  1211.      * @param CasinoType $casinoType
  1212.      * @return $this
  1213.      */
  1214.     public function addCasinoType(CasinoType $casinoType): self
  1215.     {
  1216.         if (!$this->casinoTypes->contains($casinoType)) {
  1217.             $this->casinoTypes[] = $casinoType;
  1218.             $casinoType->addCasino($this);
  1219.             $this->addCollectionLog(LogActionEnum::ADD'casinoType'$casinoType);
  1220.         }
  1221.         return $this;
  1222.     }
  1223.     /**
  1224.      * @param CasinoType $casinoType
  1225.      * @return $this
  1226.      */
  1227.     public function removeCasinoType(CasinoType $casinoType): self
  1228.     {
  1229.         if ($this->casinoTypes->contains($casinoType)) {
  1230.             $this->casinoTypes->removeElement($casinoType);
  1231.             $casinoType->removeCasino($this);
  1232.             $this->addCollectionLog(LogActionEnum::REMOVE'casinoType'$casinoType);
  1233.         }
  1234.         return $this;
  1235.     }
  1236.     /**
  1237.      * @return Collection|Currency[]
  1238.      */
  1239.     public function getCurrencies(): Collection
  1240.     {
  1241.         return $this->currencies;
  1242.     }
  1243.     /**
  1244.      * @param Currency $currency
  1245.      * @return $this
  1246.      */
  1247.     public function addCurrency(Currency $currency): self
  1248.     {
  1249.         if (!$this->currencies->contains($currency)) {
  1250.             $this->currencies[] = $currency;
  1251.             $currency->addCasino($this);
  1252.             $this->addCollectionLog(LogActionEnum::ADD'currency'$currency);
  1253.         }
  1254.         return $this;
  1255.     }
  1256.     /**
  1257.      * @param Currency $currency
  1258.      * @return $this
  1259.      */
  1260.     public function removeCurrency(Currency $currency): self
  1261.     {
  1262.         if ($this->currencies->contains($currency)) {
  1263.             $this->currencies->removeElement($currency);
  1264.             $currency->removeCasino($this);
  1265.             $this->addCollectionLog(LogActionEnum::REMOVE'currency'$currency);
  1266.         }
  1267.         return $this;
  1268.     }
  1269.     /**
  1270.      * @return Collection|PaymentMethod[]
  1271.      */
  1272.     public function getDepositMethods(): Collection
  1273.     {
  1274.         return $this->depositMethods;
  1275.     }
  1276.     /**
  1277.      * @param PaymentMethod $depositMethod
  1278.      * @return $this
  1279.      */
  1280.     public function addDepositMethod(PaymentMethod $depositMethod): self
  1281.     {
  1282.         if (!$this->depositMethods->contains($depositMethod)) {
  1283.             $this->depositMethods[] = $depositMethod;
  1284.             $depositMethod->addCasinoWithDepositMethod($this);
  1285.             $this->addCollectionLog(LogActionEnum::ADD'depositMethod'$depositMethod);
  1286.         }
  1287.         return $this;
  1288.     }
  1289.     /**
  1290.      * @param PaymentMethod $depositMethod
  1291.      * @return $this
  1292.      */
  1293.     public function removeDepositMethod(PaymentMethod $depositMethod): self
  1294.     {
  1295.         if ($this->depositMethods->contains($depositMethod)) {
  1296.             $this->depositMethods->removeElement($depositMethod);
  1297.             $depositMethod->removeCasinoWithDepositMethod($this);
  1298.             $this->addCollectionLog(LogActionEnum::REMOVE'depositMethod'$depositMethod);
  1299.         }
  1300.         return $this;
  1301.     }
  1302.     /**
  1303.      * @return Collection|PaymentMethod[]
  1304.      */
  1305.     public function getWithdrawalMethods(): Collection
  1306.     {
  1307.         return $this->withdrawalMethods;
  1308.     }
  1309.     /**
  1310.      * @param PaymentMethod $withdrawalMethod
  1311.      * @return $this
  1312.      */
  1313.     public function addWithdrawalMethod(PaymentMethod $withdrawalMethod): self
  1314.     {
  1315.         if (!$this->withdrawalMethods->contains($withdrawalMethod)) {
  1316.             $this->withdrawalMethods[] = $withdrawalMethod;
  1317.             $withdrawalMethod->addCasinoWithWithdrawalMethod($this);
  1318.             $this->addCollectionLog(LogActionEnum::ADD'withdrawalMethod'$withdrawalMethod);
  1319.         }
  1320.         return $this;
  1321.     }
  1322.     /**
  1323.      * @param PaymentMethod $withdrawalMethod
  1324.      * @return $this
  1325.      */
  1326.     public function removeWithdrawalMethod(PaymentMethod $withdrawalMethod): self
  1327.     {
  1328.         if ($this->withdrawalMethods->contains($withdrawalMethod)) {
  1329.             $this->withdrawalMethods->removeElement($withdrawalMethod);
  1330.             $withdrawalMethod->removeCasinoWithWithdrawalMethod($this);
  1331.             $this->addCollectionLog(LogActionEnum::REMOVE'withdrawalMethod'$withdrawalMethod);
  1332.         }
  1333.         return $this;
  1334.     }
  1335.     /**
  1336.      * @return Collection|CasinoLicence[]
  1337.      */
  1338.     public function getCasinoLicences(): Collection
  1339.     {
  1340.         if (!$this->casinoLicences$this->casinoLicences = new ArrayCollection();
  1341.         return $this->casinoLicences;
  1342.     }
  1343.     /**
  1344.      * @param CasinoLicence $casinoLicence
  1345.      * @return $this
  1346.      */
  1347.     public function addCasinoLicence(CasinoLicence $casinoLicence): self
  1348.     {
  1349.         if (!$this->casinoLicences->contains($casinoLicence)) {
  1350.             $this->casinoLicences[] = $casinoLicence;
  1351.             $casinoLicence->setCasino($this);
  1352.             $this->addCollectionLog(LogActionEnum::ADD'casinoLicence'$casinoLicence);
  1353.         }
  1354.         return $this;
  1355.     }
  1356.     /**
  1357.      * @param CasinoLicence $casinoLicence
  1358.      * @return $this
  1359.      */
  1360.     public function removeCasinoLicence(CasinoLicence $casinoLicence): self
  1361.     {
  1362.         if ($this->casinoLicences->contains($casinoLicence)) {
  1363.             $this->casinoLicences->removeElement($casinoLicence);
  1364.             $casinoLicence->setCasino(null);
  1365.             $this->addCollectionLog(LogActionEnum::REMOVE'casinoLicence'$casinoLicence);
  1366.         }
  1367.         return $this;
  1368.     }
  1369.     /**
  1370.      * @return Collection|Owner[]
  1371.      */
  1372.     public function getOwners(): Collection
  1373.     {
  1374.         if (!$this->owners$this->owners = new ArrayCollection();
  1375.         return $this->owners;
  1376.     }
  1377.     /**
  1378.      * @param Owner $owner
  1379.      * @return $this
  1380.      */
  1381.     public function addOwner(Owner $owner): self
  1382.     {
  1383.         if (!$this->owners->contains($owner)) {
  1384.             $this->owners[] = $owner;
  1385.             $owner->addCasino($this);
  1386.             $this->addCollectionLog(LogActionEnum::ADD'owner'$owner);
  1387.         }
  1388.         return $this;
  1389.     }
  1390.     /**
  1391.      * @param Owner $owner
  1392.      * @return $this
  1393.      */
  1394.     public function removeOwner(Owner $owner): self
  1395.     {
  1396.         if ($this->owners->contains($owner)) {
  1397.             $this->owners->removeElement($owner);
  1398.             $owner->removeCasino($this);
  1399.             $this->addCollectionLog(LogActionEnum::REMOVE'owner'$owner);
  1400.         }
  1401.         return $this;
  1402.     }
  1403.     /**
  1404.      * @return Collection|SupervisoryAuthority[]
  1405.      */
  1406.     public function getSupervisoryAuthorities(): Collection
  1407.     {
  1408.         if (!$this->supervisoryAuthorities$this->supervisoryAuthorities = new ArrayCollection();
  1409.         return $this->supervisoryAuthorities;
  1410.     }
  1411.     /**
  1412.      * @param SupervisoryAuthority $supervisoryAuthority
  1413.      * @return $this
  1414.      */
  1415.     public function addSupervisoryAuthority(SupervisoryAuthority $supervisoryAuthority): self
  1416.     {
  1417.         if (!$this->supervisoryAuthorities->contains($supervisoryAuthority)) {
  1418.             $this->supervisoryAuthorities[] = $supervisoryAuthority;
  1419.             $supervisoryAuthority->addCasino($this);
  1420.             $this->addCollectionLog(LogActionEnum::ADD'supervisoryAuthority'$supervisoryAuthority);
  1421.         }
  1422.         return $this;
  1423.     }
  1424.     /**
  1425.      * @param SupervisoryAuthority $supervisoryAuthority
  1426.      * @return $this
  1427.      */
  1428.     public function removeSupervisoryAuthority(SupervisoryAuthority $supervisoryAuthority): self
  1429.     {
  1430.         if ($this->supervisoryAuthorities->contains($supervisoryAuthority)) {
  1431.             $this->supervisoryAuthorities->removeElement($supervisoryAuthority);
  1432.             $supervisoryAuthority->removeCasino($this);
  1433.             $this->addCollectionLog(LogActionEnum::REMOVE'supervisoryAuthority'$supervisoryAuthority);
  1434.         }
  1435.         return $this;
  1436.     }
  1437.     /**
  1438.      * @return Collection|SocialNetwork[]
  1439.      */
  1440.     public function getSocialNetworks(): Collection
  1441.     {
  1442.         if (!$this->socialNetworks$this->socialNetworks = new ArrayCollection();
  1443.         return $this->socialNetworks;
  1444.     }
  1445.     /**
  1446.      * @param SocialNetwork $socialNetwork
  1447.      * @return $this
  1448.      */
  1449.     public function addSocialNetwork(SocialNetwork $socialNetwork): self
  1450.     {
  1451.         if (!$this->socialNetworks->contains($socialNetwork)) {
  1452.             $this->socialNetworks[] = $socialNetwork;
  1453.             $socialNetwork->setCasino($this);
  1454.             $this->addCollectionLog(LogActionEnum::ADD'socialNetwork'$socialNetwork);
  1455.         }
  1456.         return $this;
  1457.     }
  1458.     /**
  1459.      * @param SocialNetwork $socialNetwork
  1460.      * @return $this
  1461.      */
  1462.     public function removeSocialNetwork(SocialNetwork $socialNetwork): self
  1463.     {
  1464.         if ($this->socialNetworks->contains($socialNetwork)) {
  1465.             $this->socialNetworks->removeElement($socialNetwork);
  1466.             if ($socialNetwork->getCasino() === $this) {
  1467.                 $socialNetwork->setCasino(null);
  1468.             }
  1469.             $this->addCollectionLog(LogActionEnum::REMOVE'socialNetwork'$socialNetwork);
  1470.         }
  1471.         return $this;
  1472.     }
  1473.     /**
  1474.      * @return Collection|Url[]
  1475.      */
  1476.     public function getUrls(): Collection
  1477.     {
  1478.         return $this->urls;
  1479.     }
  1480.     /**
  1481.      * @param Url $url
  1482.      * @return $this
  1483.      */
  1484.     public function addUrl(Url $url): self
  1485.     {
  1486.         if (!$this->urls->contains($url)) {
  1487.             $this->urls[] = $url;
  1488.             $url->setCasino($this);
  1489.             $this->addCollectionLog(LogActionEnum::ADD'url'$url);
  1490.         }
  1491.         return $this;
  1492.     }
  1493.     /**
  1494.      * @param Url $url
  1495.      * @return $this
  1496.      */
  1497.     public function removeUrl(Url $url): self
  1498.     {
  1499.         if ($this->urls->contains($url)) {
  1500.             $this->urls->removeElement($url);
  1501.             if ($url->getCasino() === $this) {
  1502.                 $url->setCasino(null);
  1503.             }
  1504.             $this->addCollectionLog(LogActionEnum::REMOVE'url'$url);
  1505.         }
  1506.         return $this;
  1507.     }
  1508.     /**
  1509.      * @return Collection|NewBonus[]
  1510.      */
  1511.     public function getNewBonuses(): Collection
  1512.     {
  1513.         return $this->newBonuses;
  1514.     }
  1515.     /**
  1516.      * @param NewBonus $newBonus
  1517.      * @return $this
  1518.      */
  1519.     public function addNewBonus(NewBonus $newBonus): self
  1520.     {
  1521.         if (!$this->newBonuses->contains($newBonus)) {
  1522.             $this->newBonuses[] = $newBonus;
  1523.             $newBonus->setCasino($this);
  1524.             $this->addCollectionLog(LogActionEnum::ADD'newBonus'$newBonus);
  1525.         }
  1526.         return $this;
  1527.     }
  1528.     /**
  1529.      * @param NewBonus $newBonus
  1530.      * @return $this
  1531.      */
  1532.     public function removeNewBonus(NewBonus $newBonus): self
  1533.     {
  1534.         if ($this->newBonuses->contains($newBonus)) {
  1535.             $this->newBonuses->removeElement($newBonus);
  1536.             if ($newBonus->getCasino() === $this) {
  1537.                 $newBonus->setCasino(null);
  1538.             }
  1539.             $this->addCollectionLog(LogActionEnum::REMOVE'newBonus'$newBonus);
  1540.         }
  1541.         return $this;
  1542.     }
  1543.     /**
  1544.      * @return Collection|Review[]
  1545.      */
  1546.     public function getReviews(): Collection
  1547.     {
  1548.         return $this->reviews;
  1549.     }
  1550.     /**
  1551.      * @param Review $review
  1552.      * @return $this
  1553.      */
  1554.     public function addReview(Review $review): self
  1555.     {
  1556.         if (!$this->reviews->contains($review)) {
  1557.             $this->reviews[] = $review;
  1558.             $review->setCasino($this);
  1559.             $this->addCollectionLog(LogActionEnum::ADD'review'$review);
  1560.         }
  1561.         return $this;
  1562.     }
  1563.     /**
  1564.      * @param Review $review
  1565.      * @return $this
  1566.      */
  1567.     public function removeReview(Review $review): self
  1568.     {
  1569.         if ($this->reviews->contains($review)) {
  1570.             $this->reviews->removeElement($review);
  1571.             if ($review->getCasino() === $this) {
  1572.                 $review->setCasino(null);
  1573.             }
  1574.             $this->addCollectionLog(LogActionEnum::REMOVE'review'$review);
  1575.         }
  1576.         return $this;
  1577.     }
  1578.     /**
  1579.      * @return Collection|Logo[]
  1580.      */
  1581.     public function getLogos(): Collection
  1582.     {
  1583.         return $this->logos;
  1584.     }
  1585.     /**
  1586.      * @param Logo $logo
  1587.      * @return $this
  1588.      */
  1589.     public function addLogo(Logo $logo): self
  1590.     {
  1591.         if (!$this->logos->contains($logo)) {
  1592.             $this->logos[] = $logo;
  1593.             $logo->setCasino($this);
  1594.             $this->addCollectionLog(LogActionEnum::ADD'logo'$logo);
  1595.         }
  1596.         return $this;
  1597.     }
  1598.     /**
  1599.      * @param Logo $logo
  1600.      * @return $this
  1601.      */
  1602.     public function removeLogo(Logo $logo): self
  1603.     {
  1604.         if ($this->logos->contains($logo)) {
  1605.             $this->logos->removeElement($logo);
  1606.             if ($logo->getCasino() === $this) {
  1607.                 $logo->setCasino(null);
  1608.             }
  1609.             $this->addCollectionLog(LogActionEnum::REMOVE'logo'$logo);
  1610.         }
  1611.         return $this;
  1612.     }
  1613.     /**
  1614.      * @return Collection|Visit[]
  1615.      */
  1616.     public function getVisits(): Collection
  1617.     {
  1618.         return $this->visits;
  1619.     }
  1620.     /**
  1621.      * @param Visit $visit
  1622.      * @return $this
  1623.      */
  1624.     public function addVisit(Visit $visit): self
  1625.     {
  1626.         if (!$this->visits->contains($visit)) {
  1627.             $this->visits[] = $visit;
  1628.             $visit->setCasino($this);
  1629.             $this->addCollectionLog(LogActionEnum::ADD'visit'$visit);
  1630.         }
  1631.         return $this;
  1632.     }
  1633.     /**
  1634.      * @param Visit $visit
  1635.      * @return $this
  1636.      */
  1637.     public function removeVisit(Visit $visit): self
  1638.     {
  1639.         if ($this->visits->contains($visit)) {
  1640.             $this->visits->removeElement($visit);
  1641.             if ($visit->getCasino() === $this) {
  1642.                 $visit->setCasino(null);
  1643.             }
  1644.             $this->addCollectionLog(LogActionEnum::REMOVE'visit'$visit);
  1645.         }
  1646.         return $this;
  1647.     }
  1648.     /**
  1649.      * @return Collection|ProsAndCons[]
  1650.      */
  1651.     public function getProsAndCons(): Collection
  1652.     {
  1653.         return $this->prosAndCons;
  1654.     }
  1655.     /**
  1656.      * @param ProsAndCons $prosAndCons
  1657.      * @return $this
  1658.      */
  1659.     public function addProsAndCons(ProsAndCons $prosAndCons): self
  1660.     {
  1661.         if (!$this->prosAndCons->contains($prosAndCons)) {
  1662.             $this->prosAndCons[] = $prosAndCons;
  1663.             $prosAndCons->setCasino($this);
  1664.             $this->addCollectionLog(LogActionEnum::ADD'prosAndCons'$prosAndCons);
  1665.         }
  1666.         return $this;
  1667.     }
  1668.     /**
  1669.      * @param ProsAndCons $prosAndCons
  1670.      * @return $this
  1671.      */
  1672.     public function removeProsAndCons(ProsAndCons $prosAndCons): self
  1673.     {
  1674.         if ($this->prosAndCons->contains($prosAndCons)) {
  1675.             $this->prosAndCons->removeElement($prosAndCons);
  1676.             if ($prosAndCons->getCasino() === $this) {
  1677.                 $prosAndCons->setCasino(null);
  1678.             }
  1679.             $this->addCollectionLog(LogActionEnum::REMOVE'prosAndCons'$prosAndCons);
  1680.         }
  1681.         return $this;
  1682.     }
  1683.     /**
  1684.      * @return Collection|Traffic[]
  1685.      */
  1686.     public function getTraffic(): Collection
  1687.     {
  1688.         return $this->traffic;
  1689.     }
  1690.     /**
  1691.      * @param Traffic $traffic
  1692.      * @return $this
  1693.      */
  1694.     public function addTraffic(Traffic $traffic): self
  1695.     {
  1696.         if (!$this->traffic->contains($traffic)) {
  1697.             $this->traffic[] = $traffic;
  1698.             $traffic->setCasino($this);
  1699.             $this->addCollectionLog(LogActionEnum::ADD'traffic'$traffic);
  1700.         }
  1701.         return $this;
  1702.     }
  1703.     /**
  1704.      * @param Traffic $traffic
  1705.      * @return $this
  1706.      */
  1707.     public function removeTraffic(Traffic $traffic): self
  1708.     {
  1709.         if ($this->traffic->contains($traffic)) {
  1710.             $this->traffic->removeElement($traffic);
  1711.             if ($traffic->getCasino() === $this) {
  1712.                 $traffic->setCasino(null);
  1713.             }
  1714.             $this->addCollectionLog(LogActionEnum::REMOVE'traffic'$traffic);
  1715.         }
  1716.         return $this;
  1717.     }
  1718.     /**
  1719.      * @return Collection|Keyword[]
  1720.      */
  1721.     public function getKeywords(): Collection
  1722.     {
  1723.         return $this->keywords;
  1724.     }
  1725.     /**
  1726.      * @param Keyword $keyword
  1727.      * @return $this
  1728.      */
  1729.     public function addKeyword(Keyword $keyword): self
  1730.     {
  1731.         if (!$this->keywords->contains($keyword)) {
  1732.             $this->keywords[] = $keyword;
  1733.             $keyword->addCasino($this);
  1734.             $this->addCollectionLog(LogActionEnum::ADD'keyword'$keyword);
  1735.         }
  1736.         return $this;
  1737.     }
  1738.     /**
  1739.      * @param Keyword $keyword
  1740.      * @return $this
  1741.      */
  1742.     public function removeKeyword(Keyword $keyword): self
  1743.     {
  1744.         if ($this->keywords->contains($keyword)) {
  1745.             $this->keywords->removeElement($keyword);
  1746.             $keyword->removeCasino($this);
  1747.             $this->addCollectionLog(LogActionEnum::REMOVE'keyword'$keyword);
  1748.         }
  1749.         return $this;
  1750.     }
  1751.     /**
  1752.      * @return Collection|CasinoScreenshot[]
  1753.      */
  1754.     public function getScreenshots(): Collection
  1755.     {
  1756.         return $this->casinoScreenshots;
  1757.     }
  1758.     /**
  1759.      * @param CasinoScreenshot $screenshot
  1760.      * @return $this
  1761.      */
  1762.     public function addScreenshot(CasinoScreenshot $screenshot): self
  1763.     {
  1764.         if (!$this->casinoScreenshots->contains($screenshot)) {
  1765.             $this->casinoScreenshots[] = $screenshot;
  1766.             $screenshot->setCasino($this);
  1767.             $this->addCollectionLog(LogActionEnum::ADD'screenshot'$screenshot);
  1768.         }
  1769.         return $this;
  1770.     }
  1771.     /**
  1772.      * @param CasinoScreenshot $screenshot
  1773.      * @return $this
  1774.      */
  1775.     public function removeScreenshot(CasinoScreenshot $screenshot): self
  1776.     {
  1777.         if ($this->casinoScreenshots->contains($screenshot)) {
  1778.             $this->casinoScreenshots->removeElement($screenshot);
  1779.             if ($screenshot->getCasino() === $this) {
  1780.                 $screenshot->setCasino(null);
  1781.             }
  1782.             $this->addCollectionLog(LogActionEnum::REMOVE'screenshot'$screenshot);
  1783.         }
  1784.         return $this;
  1785.     }
  1786.     /**
  1787.      * @return Collection|SlotCasinoGeo[]
  1788.      */
  1789.     public function getSlotCasinoGeo(): Collection
  1790.     {
  1791.         return $this->slotCasinoGeo;
  1792.     }
  1793.     /**
  1794.      * @param SlotCasinoGeo $slotCasinoGeo
  1795.      * @return $this
  1796.      */
  1797.     public function addSlotCasinoGeo(SlotCasinoGeo $slotCasinoGeo): self
  1798.     {
  1799.         if (!$this->slotCasinoGeo->contains($slotCasinoGeo)) {
  1800.             $this->slotCasinoGeo[] = $slotCasinoGeo;
  1801.             $slotCasinoGeo->setCasino($this);
  1802.             $this->addCollectionLog(LogActionEnum::ADD'slotCasinoGeo'$slotCasinoGeo);
  1803.         }
  1804.         return $this;
  1805.     }
  1806.     /**
  1807.      * @param SlotCasinoGeo $slotCasinoGeo
  1808.      * @return $this
  1809.      */
  1810.     public function removeSlotCasinoGeo(SlotCasinoGeo $slotCasinoGeo): self
  1811.     {
  1812.         if ($this->slotCasinoGeo->contains($slotCasinoGeo)) {
  1813.             $this->slotCasinoGeo->removeElement($slotCasinoGeo);
  1814.             if ($slotCasinoGeo->getCasino() === $this) {
  1815.                 $slotCasinoGeo->setCasino(null);
  1816.             }
  1817.             $this->addCollectionLog(LogActionEnum::REMOVE'slotCasinoGeo'$slotCasinoGeo);
  1818.         }
  1819.         return $this;
  1820.     }
  1821.     /**
  1822.      * @return int|null
  1823.      */
  1824.     public function getScore(): ?int
  1825.     {
  1826.         return $this->score;
  1827.     }
  1828.     /**
  1829.      * @param int|null $score
  1830.      * @return $this
  1831.      */
  1832.     public function setScore(?int $score): self
  1833.     {
  1834.         $this->score $score;
  1835.         return $this;
  1836.     }
  1837.     /**
  1838.      * @return float|null
  1839.      */
  1840.     public function getNewScore(): ?float
  1841.     {
  1842.         return $this->newScore;
  1843.     }
  1844.     /**
  1845.      * @param float|null $newScore
  1846.      * @return $this
  1847.      */
  1848.     public function setNewScore(?float $newScore): self
  1849.     {
  1850.         $this->newScore $newScore;
  1851.         return $this;
  1852.     }
  1853.     /**
  1854.      * @return float|null
  1855.      */
  1856.     public function getGenerosityRank(): ?float
  1857.     {
  1858.         return $this->generosityRank;
  1859.     }
  1860.     /**
  1861.      * @param float|null $generosityRank
  1862.      * @return $this
  1863.      */
  1864.     public function setGenerosityRank(?float $generosityRank): self
  1865.     {
  1866.         $this->generosityRank $generosityRank;
  1867.         return $this;
  1868.     }
  1869.     /**
  1870.      * @return int|null
  1871.      */
  1872.     public function getSiteType(): ?int
  1873.     {
  1874.         return ($this->siteType)
  1875.             ? $this->siteType
  1876.             SiteTypeEnum::CASINO;
  1877.     }
  1878.     /**
  1879.      * @param int|null $siteType
  1880.      * @return $this
  1881.      */
  1882.     public function setSiteType(?int $siteType): self
  1883.     {
  1884.         SiteTypeEnum::assertExists($siteType);
  1885.         $this->siteType $siteType;
  1886.         return $this;
  1887.     }
  1888.     /**
  1889.      * @return float
  1890.      */
  1891.     public function getBrandScore(): float
  1892.     {
  1893.         return $this->brandScore;
  1894.     }
  1895.     /**
  1896.      * @param float $brandScore
  1897.      * @return $this
  1898.      */
  1899.     public function setBrandScore(float $brandScore): self
  1900.     {
  1901.         $this->brandScore $brandScore;
  1902.         return $this;
  1903.     }
  1904.     /**
  1905.      * @return array
  1906.      */
  1907.     public function getDisadvantages(): array
  1908.     {
  1909.         if ($this->getProsAndCons()) {
  1910.             $disadvantages = [];
  1911.             foreach ($this->getProsAndCons() as $cons) {
  1912.                 if ($cons->getType() === false$disadvantages[] = $cons->getValue();
  1913.             }
  1914.             return $disadvantages;
  1915.         }
  1916.         return [];
  1917.     }
  1918.     /**
  1919.      * @return array
  1920.      */
  1921.     public function getAdvantages(): array
  1922.     {
  1923.         if ($this->getProsAndCons()) {
  1924.             $advantages = [];
  1925.             foreach ($this->getProsAndCons() as $cons) {
  1926.                 if ($cons->getType() === true$advantages[] = $cons->getValue();
  1927.             }
  1928.             return $advantages;
  1929.         }
  1930.         return [];
  1931.     }
  1932.     /**
  1933.      * @return string|null
  1934.      */
  1935.     public function getGalleryHash(): ?string
  1936.     {
  1937.         return $this->galleryHash;
  1938.     }
  1939.     /**
  1940.      * @param string|null $hash
  1941.      * @return $this
  1942.      */
  1943.     public function setGalleryHash(?string $hash): self
  1944.     {
  1945.         $this->galleryHash $hash;
  1946.         return $this;
  1947.     }
  1948.     /**
  1949.      * @return Collection|Slot[]
  1950.      */
  1951.     public function getSlots(): Collection
  1952.     {
  1953.         return $this->slots;
  1954.     }
  1955.     /**
  1956.      * @param Slot $slot
  1957.      * @return $this
  1958.      */
  1959.     public function addSlot(Slot $slot): self
  1960.     {
  1961.         if (!$this->slots->contains($slot)) {
  1962.             $this->slots[] = $slot;
  1963.             $slot->addCasino($this);
  1964.             $this->addCollectionLog(LogActionEnum::ADD'slot'$slot);
  1965.         }
  1966.         return $this;
  1967.     }
  1968.     /**
  1969.      * @param Slot $slot
  1970.      * @return $this
  1971.      */
  1972.     public function removeSlot(Slot $slot): self
  1973.     {
  1974.         if ($this->slots->contains($slot)) {
  1975.             $this->slots->removeElement($slot);
  1976.             $slot->removeCasino($this);
  1977.             $this->addCollectionLog(LogActionEnum::REMOVE'slot'$slot);
  1978.         }
  1979.         return $this;
  1980.     }
  1981.     /**
  1982.      * @param bool|null $value
  1983.      * @return $this
  1984.      */
  1985.     public function setResetScore(?bool $value null): self
  1986.     {
  1987.         $this->resetScore $value;
  1988.         return $this;
  1989.     }
  1990.     /**
  1991.      * @return bool|null
  1992.      */
  1993.     public function getResetScore(): ?bool
  1994.     {
  1995.         return $this->resetScore;
  1996.     }
  1997.     /**
  1998.      * @param bool $value
  1999.      * @return $this
  2000.      */
  2001.     public function setShowTerms(bool $value): self
  2002.     {
  2003.         $this->showTerms $value;
  2004.         return $this;
  2005.     }
  2006.     /**
  2007.      * @return bool|null
  2008.      */
  2009.     public function getShowTerms(): ?bool
  2010.     {
  2011.         return $this->showTerms;
  2012.     }
  2013.     /**
  2014.      * @return Collection|Site[]
  2015.      */
  2016.     public function getSites(): Collection
  2017.     {
  2018.         return $this->sites;
  2019.     }
  2020.     /**
  2021.      * @param Site $site
  2022.      * @return $this
  2023.      */
  2024.     public function addSite(Site $site): self
  2025.     {
  2026.         if (!$this->sites->contains($site)) {
  2027.             $this->sites[] = $site;
  2028.             $this->addCollectionLog(LogActionEnum::ADD'site'$site);
  2029.         }
  2030.         return $this;
  2031.     }
  2032.     /**
  2033.      * @param Site $site
  2034.      * @return $this
  2035.      */
  2036.     public function removeSite(Site $site): self
  2037.     {
  2038.         if ($this->sites->contains($site)) {
  2039.             $this->sites->removeElement($site);
  2040.             $this->addCollectionLog(LogActionEnum::REMOVE'site'$site);
  2041.         }
  2042.         return $this;
  2043.     }
  2044.     /**
  2045.      * @return Collection|CasinoCategory[]
  2046.      */
  2047.     public function getCasinoCategories(): Collection
  2048.     {
  2049.         if (!$this->casinoCategories$this->casinoCategories = new ArrayCollection();
  2050.         return $this->casinoCategories;
  2051.     }
  2052.     /**
  2053.      * @param CasinoCategory $casinoCategory
  2054.      * @return $this
  2055.      */
  2056.     public function addCasinoCategory(CasinoCategory $casinoCategory): self
  2057.     {
  2058.         if (!$this->casinoCategories$this->casinoCategories = new ArrayCollection();
  2059.         if (!$this->casinoCategories->contains($casinoCategory)) {
  2060.             $this->casinoCategories[] = $casinoCategory;
  2061.             $casinoCategory->addCasino($this);
  2062.         }
  2063.         return $this;
  2064.     }
  2065.     /**
  2066.      * @param CasinoCategory $casinoCategory
  2067.      * @return $this
  2068.      */
  2069.     public function removeCasinoCategory(CasinoCategory $casinoCategory): self
  2070.     {
  2071.         if ($this->casinoCategories->contains($casinoCategory)) {
  2072.             $this->casinoCategories->removeElement($casinoCategory);
  2073.             $casinoCategory->removeCasino($this);
  2074.         }
  2075.         return $this;
  2076.     }
  2077.     /**
  2078.      * @return bool|null
  2079.      */
  2080.     public function getInvertCountryFromAllowed1(): ?bool
  2081.     {
  2082.         return $this->invertCountryFromAllowed1;
  2083.     }
  2084.     /**
  2085.      * @param bool|null $invertCountryFromAllowed1
  2086.      * @return $this
  2087.      */
  2088.     public function setInvertCountryFromAllowed1(?bool $invertCountryFromAllowed1): self
  2089.     {
  2090.         $this->invertCountryFromAllowed1 $invertCountryFromAllowed1;
  2091.         return $this;
  2092.     }
  2093.     /**
  2094.      * @return bool|null
  2095.      */
  2096.     public function getInvertCountryFromAllowed2(): ?bool
  2097.     {
  2098.         return $this->invertCountryFromAllowed2;
  2099.     }
  2100.     /**
  2101.      * @param bool|null $invertCountryFromAllowed2
  2102.      * @return $this
  2103.      */
  2104.     public function setInvertCountryFromAllowed2(?bool $invertCountryFromAllowed2): self
  2105.     {
  2106.         $this->invertCountryFromAllowed2 $invertCountryFromAllowed2;
  2107.         return $this;
  2108.     }
  2109.     /**
  2110.      * @return bool|null
  2111.      */
  2112.     public function getInvertCountryFromRestricted(): ?bool
  2113.     {
  2114.         return $this->invertCountryFromRestricted;
  2115.     }
  2116.     /**
  2117.      * @param bool|null $invertCountryFromRestricted
  2118.      * @return $this
  2119.      */
  2120.     public function setInvertCountryFromRestricted(?bool $invertCountryFromRestricted): self
  2121.     {
  2122.         $this->invertCountryFromRestricted $invertCountryFromRestricted;
  2123.         return $this;
  2124.     }
  2125.     /**
  2126.      * @return bool|null
  2127.      */
  2128.     public function getCopyCountryFromRestricted(): ?bool
  2129.     {
  2130.         return $this->copyCountryFromRestricted;
  2131.     }
  2132.     /**
  2133.      * @param bool|null $copyCountryFromRestricted
  2134.      * @return $this
  2135.      */
  2136.     public function setCopyCountryFromRestricted(?bool $copyCountryFromRestricted): self
  2137.     {
  2138.         $this->copyCountryFromRestricted $copyCountryFromRestricted;
  2139.         return $this;
  2140.     }
  2141.     /**
  2142.      * @return int|null
  2143.      */
  2144.     public function getCopyRestrictedCountriesFromCasino(): ?int
  2145.     {
  2146.         return $this->copyRestrictedCountriesFromCasino;
  2147.     }
  2148.     /**
  2149.      * @param int|null $copyRestrictedCountriesFromCasino
  2150.      * @return $this
  2151.      */
  2152.     public function setCopyRestrictedCountriesFromCasino($copyRestrictedCountriesFromCasino): self
  2153.     {
  2154.         if ($copyRestrictedCountriesFromCasino instanceof Casino) {
  2155.             $this->copyRestrictedCountriesFromCasino $copyRestrictedCountriesFromCasino->getId();
  2156.         } elseif (is_null($copyRestrictedCountriesFromCasino) or is_int($copyRestrictedCountriesFromCasino)) {
  2157.             $this->copyRestrictedCountriesFromCasino $copyRestrictedCountriesFromCasino;
  2158.         }
  2159.         return $this;
  2160.     }
  2161.     /**
  2162.      * @return string|null
  2163.      */
  2164.     public function getGameTypes(): ?string
  2165.     {
  2166.         return $this->gameTypes;
  2167.     }
  2168.     /**
  2169.      * @param string|null $gameTypes
  2170.      * @return $this
  2171.      */
  2172.     public function setGameTypes(?string $gameTypes): self
  2173.     {
  2174.         $this->gameTypes $gameTypes;
  2175.         return $this;
  2176.     }
  2177.     /**
  2178.      * @return Collection
  2179.      */
  2180.     public function getUsers(): Collection
  2181.     {
  2182.         return $this->users;
  2183.     }
  2184.     /**
  2185.      * @param User $user
  2186.      * @return $this
  2187.      */
  2188.     public function addUser(User $user): self
  2189.     {
  2190.         if (!$this->users->contains($user)) {
  2191.             $this->users[] = $user;
  2192.             $user->addCasino($this);
  2193.         }
  2194.         return $this;
  2195.     }
  2196.     /**
  2197.      * @param User $user
  2198.      * @return $this
  2199.      */
  2200.     public function removeUser(User $user): self
  2201.     {
  2202.         if ($this->users->contains($user)) {
  2203.             $this->users->removeElement($user);
  2204.             $user->removeCasino($this);
  2205.         }
  2206.         return $this;
  2207.     }
  2208. }