src/Entity/Company.php line 54

Open in your IDE?
  1. <?php
  2. namespace App\Entity;
  3. use ApiPlatform\Core\Annotation\ApiFilter;
  4. use ApiPlatform\Core\Annotation\ApiResource;
  5. use ApiPlatform\Core\Bridge\Doctrine\Orm\Filter\OrderFilter;
  6. use ApiPlatform\Core\Bridge\Doctrine\Orm\Filter\SearchFilter;
  7. use ApiPlatform\Core\Serializer\Filter\PropertyFilter;
  8. use App\Validator as AppAssert;
  9. use DateTime;
  10. use Doctrine\Common\Collections\ArrayCollection;
  11. use Doctrine\Common\Collections\Collection;
  12. use Doctrine\ORM\Mapping as ORM;
  13. use Exception;
  14. use Fluoresce\ValidateEmbedded\Constraints as FluoresceAssert;
  15. use Gedmo\Mapping\Annotation as Gedmo;
  16. use Gedmo\Timestampable\Traits\TimestampableEntity;
  17. use Greg0ire\Enum\Bridge\Symfony\Validator\Constraint\Enum as EnumAssert;
  18. use Symfony\Component\HttpFoundation\File\File;
  19. use Symfony\Component\Serializer\Annotation\Groups;
  20. use Symfony\Component\Validator\Constraints as Assert;
  21. use Vich\UploaderBundle\Entity\File as EmbeddedFile;
  22. use Vich\UploaderBundle\Mapping\Annotation as Vich;
  23. /**
  24.  * @ORM\Entity(repositoryClass="App\Repository\CompanyRepository")
  25.  * @ORM\HasLifecycleCallbacks()
  26.  * @Vich\Uploadable
  27.  * @AppAssert\DynamicValidationGroups(property="videoType", value="App\Enum\CompanyVideoType::EMBED", validationGroups={"VideoTypeEmbed"})
  28.  * @AppAssert\DynamicValidationGroups(property="videoType", value="App\Enum\CompanyVideoType::UPLOAD", validationGroups={"VideoTypeUpload"})
  29.  */
  30. #[ApiResource(
  31.     iri'https://schema.org/Company',
  32.     normalizationContext: ['groups' => ['company:item''company:list']],
  33.     denormalizationContext: ['groups' => ['company:write']],
  34.     collectionOperations: [
  35.         'get' => ['normalization_context' => ['groups' => ['company:list']]],
  36.         'post' => [
  37.             'security' => "is_granted('ROLE_ADMIN')",
  38.             'input_formats' => [
  39.                 'multipart' => ['multipart/form-data'],
  40.             ],
  41.         ],
  42.     ],
  43.     itemOperations: [
  44.         'get' => ['normalization_context' => ['groups' => ['company:item']]],
  45.         'put' => ['security' => "is_granted('ROLE_ADMIN') or object.owner == user"],
  46.     ],
  47. )]
  48. #[ApiFilter(PropertyFilter::class)]
  49. #[ApiFilter(SearchFilter::class, properties: ['id''name' => 'partial''industry' => 'exact'])]
  50. #[ApiFilter(OrderFilter::class, properties: ['id''name''industry.name''nbFollowers''globalAverage''hasSubscription''featured''validated''isPaternityLeave''isMaternityLeave''isAdoptiveLeave''isPaidTimeOff''isDemographics''isPostJobs''completionPercentage'], arguments: ['orderParameterName' => 'order'])]
  51. class Company
  52. {
  53.     use TimestampableEntity;
  54.     /**
  55.      * @ORM\Id()
  56.      * @ORM\GeneratedValue()
  57.      * @ORM\Column(type="integer")
  58.      * @Groups({"company:item","company:list", "pinpointCampaign:list"})
  59.      */
  60.     public ?int $id null;
  61.     /**
  62.      * @var string
  63.      *
  64.      * @ORM\Column(type="string", length=64)
  65.      * @Assert\Length(max=64)
  66.      * @Assert\NotBlank()
  67.      * @Groups({"company:item","company:list", "company:write"})
  68.      */
  69.     #[ApiFilter(SearchFilter::class, strategy'start')]
  70.     public $name;
  71.     /**
  72.      * @var string
  73.      *
  74.      * @ORM\Column(type="string", length=128)
  75.      * @Gedmo\Slug(fields={"name"})
  76.      */
  77.     private $slug;
  78.     /**
  79.      * @var string
  80.      *
  81.      * @ORM\Column(type="text", nullable=true)
  82.      */
  83.     private $about;
  84.     /**
  85.      * @var Address
  86.      *
  87.      * @ORM\Embedded(class="App\Entity\Address")
  88.      * @FluoresceAssert\Validate(embeddedGroups={"Default"})
  89.      */
  90.     private $address;
  91.     /**
  92.      * @var Industry
  93.      *
  94.      * @ORM\ManyToOne(targetEntity="App\Entity\Industry")
  95.      * @ORM\JoinColumn(nullable=false)
  96.      * @ORM\OrderBy({"name" = "ASC"})
  97.      * @Assert\NotNull()
  98.      * @Groups({"company:item","company:list","company:write"})
  99.      */
  100.     public $industry;
  101.     /**
  102.      * @var string
  103.      *
  104.      * @ORM\Column(type="string", length=255, nullable=true)
  105.      * @Assert\Length(max=255)
  106.      */
  107.     private $website;
  108.     /**
  109.      * @var string
  110.      *
  111.      * @ORM\Column(name="facebook", type="string", length=255, nullable=true)
  112.      * @Assert\Length(max=255)
  113.      */
  114.     private $facebook;
  115.     /**
  116.      * @var string
  117.      *
  118.      * @ORM\Column(name="twitter", type="string", length=255, nullable=true)
  119.      * @Assert\Length(max=255)
  120.      */
  121.     private $twitter;
  122.     /**
  123.      * @var string
  124.      *
  125.      * @ORM\Column(name="linkedin", type="string", length=255, nullable=true)
  126.      * @Assert\Length(max=255)
  127.      */
  128.     private $linkedin;
  129.     /**
  130.      * @var string
  131.      *
  132.      * @ORM\Column(name="instagram", type="string", length=255, nullable=true)
  133.      * @Assert\Length(max=255)
  134.      */
  135.     private $instagram;
  136.     /**
  137.      * @var string
  138.      *
  139.      * @ORM\Column(type="string", length=1000, nullable=true)
  140.      * @Assert\Length(max=1000)
  141.      */
  142.     private $dashboardUrl;
  143.     /**
  144.      * @var string
  145.      *
  146.      * @ORM\Column(type="string", length=1000, nullable=true)
  147.      * @Assert\Length(max=1000)
  148.      */
  149.     private $dashboardCompletionUrl;
  150.     /**
  151.      * @var string
  152.      *
  153.      * @ORM\Column(type="string", length=1000, nullable=true)
  154.      * @Assert\Length(max=1000)
  155.      */
  156.     private $dashboardQuestionUrl;
  157.     /**
  158.      * @var string
  159.      *
  160.      * @ORM\Column(type="string", length=1000, nullable=true)
  161.      * @Assert\Length(max=1000)
  162.      */
  163.     private $dashboardAssessmentUrl;
  164.     /**
  165.      * @var string
  166.      *
  167.      * @ORM\Column(type="string", length=1000, nullable=true)
  168.      * @Assert\Length(max=1000)
  169.      */
  170.     private $dashboardDisparityUrl;
  171.     /**
  172.      * @var string
  173.      *
  174.      * @ORM\Column(type="string", length=1000, nullable=true)
  175.      * @Assert\Length(max=1000)
  176.      */
  177.     private $dashboardPartnerUrl;
  178.     /**
  179.      * @var string
  180.      *
  181.      * @ORM\Column(type="string", length=1000, nullable=true)
  182.      * @Assert\Length(max=1000)
  183.      */
  184.     private $dashboardMatterUrl;
  185.     /**
  186.      * @var string
  187.      *
  188.      * @ORM\Column(type="string", length=1000, nullable=true)
  189.      * @Assert\Length(max=1000)
  190.      */
  191.     private $dashboardLegalUrl;
  192.     /**
  193.      * @var string
  194.      *
  195.      * @ORM\Column(type="string", length=1000, nullable=true)
  196.      * @Assert\Length(max=1000)
  197.      */
  198.     private $dashboardInsightUrl;
  199.     /**
  200.      * @var EmployeesRange
  201.      *
  202.      * @ORM\ManyToOne(targetEntity="App\Entity\EmployeesRange")
  203.      * @ORM\JoinColumn(nullable=false)
  204.      * @Assert\NotNull()
  205.      */
  206.     public $employeesRange;
  207.     /**
  208.      * @var string
  209.      *
  210.      * @ORM\Column(type="string", length=4, nullable=true)
  211.      * @Assert\Range(min="1000")
  212.      */
  213.     private $foundedAt;
  214.     /**
  215.      * @var string
  216.      *
  217.      * @ORM\Column(type="string", length=64, nullable=true)
  218.      * @Assert\Length(max=64)
  219.      * @EnumAssert(class="App\Enum\CompanyOwnerType")
  220.      */
  221.     private $ownerType;
  222.     #[Groups(['company:item'])]
  223.     public ?string $coverUrl null;
  224.     /**
  225.      * @ORM\Embedded(class="Vich\UploaderBundle\Entity\File")
  226.      */
  227.     public $cover;
  228.     /**
  229.      * @Vich\UploadableField(mapping="company_cover", fileNameProperty="cover.name", size="cover.size", mimeType="cover.mimeType", originalName="cover.originalName", dimensions="cover.dimensions")
  230.      * @Assert\Image(maxSize="8M", mimeTypes={"image/jpeg", "image/png", "image/gif"})
  231.      * @Assert\Expression(expression="this.getCoverFile() or this.getCover().getName()")
  232.      */
  233.     #[Groups(['company:write'])]
  234.     public ?File $coverFile null;
  235.     #[Groups(['company:item'"company:list"])]
  236.     public ?string $logoUrl null;
  237.     /**
  238.      * @ORM\Embedded(class="Vich\UploaderBundle\Entity\File")
  239.      */
  240.     public $logo;
  241.     /**
  242.      * @Vich\UploadableField(mapping="company_logo", fileNameProperty="logo.name", size="logo.size", mimeType="logo.mimeType", originalName="logo.originalName", dimensions="logo.dimensions")
  243.      * @Assert\Image(maxSize="8M", mimeTypes={"image/jpeg", "image/png", "image/gif"})
  244.      * @Assert\Expression(expression="this.getLogoFile() or this.getLogo().getName()")
  245.      */
  246.     #[Groups(['company:write'])]
  247.     public ?File $logoFile null;
  248.     /**
  249.      * @var string
  250.      *
  251.      * @ORM\Column(type="string", length=64, nullable=true)
  252.      * @Assert\Length(max=64)
  253.      * @EnumAssert(class="App\Enum\CompanyVideoType")
  254.      */
  255.     private $videoType;
  256.     #[Groups(['company:item'"company:list"])]
  257.     public ?string $videoUploadedUrl null;
  258.     /**
  259.      * @ORM\Embedded(class="Vich\UploaderBundle\Entity\File")
  260.      */
  261.     public $videoUploaded;
  262.     /**
  263.      * @Vich\UploadableField(mapping="company_video_uploaded", fileNameProperty="videoUploaded.name", size="videoUploaded.size", mimeType="videoUploaded.mimeType", originalName="videoUploaded.originalName", dimensions="videoUploaded.dimensions")
  264.      * @Assert\Image(mimeTypes={"video/mp4", "video/avi"})
  265.      * @Assert\Expression(expression="this.getVideoUploadedFile() or this.getVideoUploaded().getName()", groups={"VideoTypeUpload"})
  266.      */
  267.     #[Groups(['company:write'])]
  268.     public ?File $videoUploadedFile null;
  269.     /**
  270.      * @ORM\Embedded(class="App\Entity\VideoEmbedded")
  271.      * @FluoresceAssert\Validate(groups={"VideoTypeEmbed"}, embeddedGroups={"Default"})
  272.      */
  273.     private $videoEmbedded;
  274.     /**
  275.      * @var ArrayCollection|Article[]
  276.      *
  277.      * @ORM\OneToMany(targetEntity="App\Entity\Article", mappedBy="company", cascade={"persist"})
  278.      */
  279.     private $articles;
  280.     /**
  281.      * @var ArrayCollection|Newsroom[]
  282.      *
  283.      * @ORM\OneToMany(targetEntity="App\Entity\Newsroom", mappedBy="company", cascade={"persist"})
  284.      */
  285.     private $newsrooms;
  286.     /**
  287.      * @var ArrayCollection|Blog[]
  288.      *
  289.      * @ORM\OneToMany(targetEntity="App\Entity\Blog", mappedBy="company", cascade={"persist"})
  290.      */
  291.     private $blogs;
  292.     /**
  293.      * @var ArrayCollection|Review[]
  294.      *
  295.      * @ORM\OneToMany(targetEntity="App\Entity\Review", cascade={"persist"}, mappedBy="company")
  296.      * @Assert\Valid()
  297.      */
  298.     private $reviews;
  299.     /**
  300.      * @ORM\Column(type="decimal", precision=8, scale=6, nullable=true)
  301.      * @Assert\Range(min="0", max="10")
  302.      */
  303.     private $diversityAcrossOrganizationAvg;
  304.     /**
  305.      * @ORM\Column(type="decimal", precision=8, scale=6, nullable=true)
  306.      * @Assert\Range(min="0", max="10")
  307.      */
  308.     private $diversityInLeadershipAvg;
  309.     /**
  310.      * @ORM\Column(type="decimal", precision=8, scale=6, nullable=true)
  311.      * @Assert\Range(min="0", max="10")
  312.      */
  313.     private $workLikeBalanceAvg;
  314.     /**
  315.      * @ORM\Column(type="decimal", precision=8, scale=6, nullable=true)
  316.      * @Assert\Range(min="0", max="10")
  317.      */
  318.     private $overallInclusivenessAvg;
  319.     /**
  320.      * @ORM\Column(type="decimal", precision=8, scale=6, nullable=true)
  321.      * @Assert\Range(min="0", max="10")
  322.      */
  323.     private $benefitsAndResourcesAvg;
  324.     /**
  325.      * @ORM\Column(type="decimal", precision=8, scale=6, nullable=true)
  326.      * @Assert\Range(min="0", max="10")
  327.      */
  328.     private $enpsAvg;
  329.     /**
  330.      * @ORM\Column(type="decimal", precision=8, scale=6, nullable=true)
  331.      * @Assert\Range(min="0", max="10")
  332.      * @Groups({"company:item","company:list","company:write"})
  333.      */
  334.     private $globalAverage;
  335.     /**
  336.      * @ORM\Column(type="integer", options={"unsigned"=true})
  337.      * @Groups({"company:item","company:list", "company:write"})
  338.      */
  339.     private $nbFollowers;
  340.     /**
  341.      * @ORM\Column(type="integer", options={"unsigned"=true})
  342.      */
  343.     private $nbUnfollowers;
  344.     /**
  345.      * @ORM\Column(type="integer", options={"unsigned"=true})
  346.      */
  347.     private $nbReviews;
  348.     /**
  349.      * @var ArrayCollection
  350.      *
  351.      * @ORM\OneToMany(targetEntity="App\Entity\Admin", mappedBy="company", orphanRemoval=true, cascade={"persist"})
  352.      * @Groups({"company:item"})
  353.      */
  354.     private $admins;
  355.     /**
  356.      * @ORM\Column(type="boolean")
  357.      * @Assert\Type("bool")
  358.      * @Groups({"company:item","company:list", "company:write"})
  359.      */
  360.     private $featured;
  361.     /**
  362.      * @ORM\Column(type="boolean")
  363.      * @Assert\Type("bool")
  364.      * @Groups({"company:item", "company:write"})
  365.      */
  366.     private $hasSubscription;
  367.     /**
  368.      * @var Collection
  369.      *
  370.      * @ORM\OneToMany(targetEntity="App\Entity\Contract", mappedBy="company", cascade={"persist"})
  371.      */
  372.     private $contracts;
  373.     /**
  374.      * @var Collection
  375.      *
  376.      * @ORM\OneToMany(targetEntity="App\Entity\FeedItem", mappedBy="company", cascade={"persist"})
  377.      */
  378.     private $feedItems;
  379.     /**
  380.      * @var Collection
  381.      *
  382.      * @ORM\OneToMany(targetEntity="App\Entity\CompanyContribution", mappedBy="company", cascade={"persist"})
  383.      */
  384.     private $formContributions;
  385.     /**
  386.      * @var Collection
  387.      *
  388.      * @ORM\OneToMany(targetEntity="App\Entity\SurveyContribution", mappedBy="company", cascade={"persist"})
  389.      */
  390.     private $surveyContributions;
  391.     /**
  392.      * @var ArrayCollection|CompanyInformationPage[]
  393.      *
  394.      * @ORM\OneToMany(targetEntity="App\Entity\CompanyInformationPage", mappedBy="company", cascade={"persist"})
  395.      */
  396.     private $informationPages;
  397.     /**
  398.      * @var ArrayCollection|UserFollowCompany[]
  399.      *
  400.      * @ORM\OneToMany(targetEntity="App\Entity\UserFollowCompany", mappedBy="company", cascade={"persist"})
  401.      */
  402.     private $userFollowedCompanies;
  403.     /**
  404.      * @var ArrayCollection|SurveyForm[]
  405.      *
  406.      * @ORM\OneToMany(targetEntity="App\Entity\SurveyForm", mappedBy="company", cascade={"persist"})
  407.      */
  408.     private $surveyForms;
  409.     /**
  410.      * @var ArrayCollection|CompanySurveyForm[]
  411.      *
  412.      * @ORM\OneToMany(targetEntity="App\Entity\CompanySurveyForm", mappedBy="company", cascade={"persist"})
  413.      */
  414.     private $companySurveyForms;
  415.     /**
  416.      * @var ArrayCollection|AnnualReport[]
  417.      *
  418.      * @ORM\OneToMany(targetEntity="App\Entity\AnnualReport", mappedBy="company", cascade={"persist"})
  419.      */
  420.     private $annualReports;
  421.     /**
  422.      * @ORM\Column(type="boolean")
  423.      * @Assert\Type("bool")
  424.      * @Groups({"company:item","company:list", "company:write"})
  425.      */
  426.     private $validated;
  427.     /**
  428.      * @var ArrayCollection|Domain[]
  429.      *
  430.      * @ORM\OneToMany(targetEntity="App\Entity\Domain", mappedBy="company", cascade={"persist", "remove"})
  431.      */
  432.     private $domains;
  433.     /**
  434.      * @var ArrayCollection|UserCompany[]
  435.      *
  436.      * @ORM\OneToMany(targetEntity="App\Entity\UserCompany", mappedBy="company", orphanRemoval=true)
  437.      */
  438.     private $userCompanies;
  439.     /**
  440.      * @ORM\Column(type="boolean")
  441.      * @Assert\Type(type="boolean")
  442.      * @Groups({"company:item","company:list"})
  443.      */
  444.     private $isLogo;
  445.     /**
  446.      * @ORM\Column(type="boolean")
  447.      * @Assert\Type(type="boolean")
  448.      * @Groups({"company:item","company:list"})
  449.      */
  450.     private $isHero;
  451.     /**
  452.      * @ORM\Column(type="boolean")
  453.      * @Assert\Type(type="boolean")
  454.      * @Groups({"company:item","company:list", "company:write"})
  455.      */
  456.     private $isPaternityLeave;
  457.     /**
  458.      * @ORM\Column(type="boolean")
  459.      * @Assert\Type(type="boolean")
  460.      * @Groups({"company:item","company:list","company:write"})
  461.      */
  462.     private $isMaternityLeave;
  463.     /**
  464.      * @ORM\Column(type="boolean")
  465.      * @Assert\Type(type="boolean")
  466.      * @Groups({"company:item","company:list", "company:write"})
  467.      */
  468.     private $isAdoptiveLeave;
  469.     /**
  470.      * @ORM\Column(type="boolean")
  471.      * @Assert\Type(type="boolean")
  472.      * @Groups({"company:item","company:list", "company:write"})
  473.      */
  474.     private $isPaidTimeOff;
  475.     /**
  476.      * @ORM\Column(type="boolean")
  477.      * @Assert\Type(type="boolean")
  478.      * @Groups({"company:item","company:list", "company:write"})
  479.      */
  480.     private $isDemographics;
  481.     /**
  482.      * @var string
  483.      *
  484.      * @ORM\Column(type="string", length=64, nullable=true)
  485.      * @Assert\Length(max=64)
  486.      * @EnumAssert(class="App\Enum\ReportFrequencyType")
  487.      */
  488.     private $reportFrequency;
  489.     /**
  490.      * @ORM\Column(type="datetime", nullable=true)
  491.      */
  492.     private $reportGeneratedAt;
  493.     /**
  494.      * @ORM\Column(type="boolean")
  495.      * @Assert\Type(type="boolean")
  496.      * @Groups({"company:item","company:list", "company:write"})
  497.      */
  498.     private $isPostJobs;
  499.     /**
  500.      * @ORM\Column(type="datetime", nullable=true)
  501.      */
  502.     private $feedGeneratedAt;
  503.     /**
  504.      * @ORM\ManyToMany(targetEntity="App\Entity\EeocFeed", mappedBy="companies")
  505.      */
  506.     private $eeocFeeds;
  507.     /**
  508.      * @ORM\OneToOne(targetEntity=CompanyFeed::class, mappedBy="company", cascade={"persist", "remove"})
  509.      */
  510.     private $companyFeed;
  511.     /**
  512.      * @ORM\Column(type="integer", options={"unsigned"=true})
  513.      */
  514.     private $nbComplaints;
  515.     /**
  516.      * @ORM\Column(type="decimal", precision=8, scale=6, nullable=true)
  517.      * @Assert\Range(min="0", max="10")
  518.      */
  519.     private $eeoReportAvg;
  520.     /**
  521.      * @ORM\Column(type="decimal", precision=8, scale=6, nullable=true)
  522.      * @Assert\Range(min="0", max="10")
  523.      */
  524.     private $eeocRecognitionAvg;
  525.     /**
  526.      * @ORM\Column(type="decimal", precision=8, scale=6, nullable=true)
  527.      * @Assert\Range(min="0", max="10")
  528.      */
  529.     private $awardsRecognitionAvg;
  530.     /**
  531.      * @ORM\Column(type="decimal", precision=8, scale=6, nullable=true)
  532.      * @Assert\Range(min="0", max="10")
  533.      */
  534.     private $deiInitiativesAvg;
  535.     /**
  536.      * @ORM\Column(type="decimal", precision=8, scale=6, nullable=true)
  537.      * @Assert\Range(min="0", max="10")
  538.      */
  539.     private $benefitsPolicyAvg;
  540.     /**
  541.      * @ORM\Column(type="decimal", precision=8, scale=6, nullable=true)
  542.      * @Assert\Range(min="0", max="10")
  543.      */
  544.     private $employeePerksAvg;
  545.     /**
  546.      * @ORM\Column(type="decimal", precision=8, scale=6, nullable=true)
  547.      * @Assert\Range(min="0", max="10")
  548.      */
  549.     private $recruitmentAvg;
  550.     /**
  551.      * @ORM\Column(type="decimal", precision=8, scale=6, nullable=true)
  552.      * @Assert\Range(min="0", max="10")
  553.      */
  554.     private $epiAvg;
  555.     /**
  556.      * @ORM\Column(type="decimal", precision=8, scale=6, nullable=true)
  557.      * @Assert\Range(min="0", max="10")
  558.      */
  559.     private $mpiAvg;
  560.     /**
  561.      * @var ArrayCollection|SurveyCompany[]
  562.      *
  563.      * @ORM\OneToMany(targetEntity="App\Entity\SurveyCompany", mappedBy="company", cascade={"persist"})
  564.      */
  565.     public $surveyCompanies;
  566.     /**
  567.      * @var ArrayCollection|SurveyCampaignSubmission[]
  568.      *
  569.      * @ORM\OneToMany(targetEntity="App\Entity\SurveyCampaignSubmission", mappedBy="surveyCampaign", cascade={"persist"})
  570.      */
  571.     public $surveyCampaignSubmissions;
  572.     /**
  573.      * @var ArrayCollection|Department[]
  574.      *
  575.      * @ORM\ManyToMany(targetEntity="App\Entity\Department", inversedBy="companies")
  576.      */
  577.     private $departments;
  578.     /**
  579.      * @var ArrayCollection|Region[]
  580.      *
  581.      * @ORM\ManyToMany(targetEntity="App\Entity\Region", inversedBy="companies")
  582.      */
  583.     private $regions;
  584.     /**
  585.      * @var ArrayCollection|City[]
  586.      *
  587.      * @ORM\ManyToMany(targetEntity="App\Entity\City", inversedBy="companies")
  588.      */
  589.     private $cities;
  590.     /**
  591.      * @var ArrayCollection|Position[]
  592.      *
  593.      * @ORM\ManyToMany(targetEntity="App\Entity\Position", inversedBy="companies")
  594.      */
  595.     private $positions;
  596.     /**
  597.      * @var ArrayCollection|Division[]
  598.      *
  599.      * @ORM\ManyToMany(targetEntity="App\Entity\Division", inversedBy="companies")
  600.      */
  601.     private $divisions;
  602.     /**
  603.      * @var ArrayCollection|PyramidHead[]
  604.      *
  605.      * @ORM\ManyToMany(targetEntity="App\Entity\PyramidHead", inversedBy="companies")
  606.      */
  607.     private $pyramidHeads;
  608.     /**
  609.      * @var ArrayCollection|DivisionHead[]
  610.      *
  611.      * @ORM\ManyToMany(targetEntity="App\Entity\DivisionHead", inversedBy="companies")
  612.      */
  613.     private $divisionHeads;
  614.     /**
  615.      * @var Collection
  616.      * @ORM\OneToMany(targetEntity=company::class, mappedBy="company")
  617.      */
  618.     private $users;
  619.     /**
  620.      * @ORM\Column(type="decimal", precision=8, scale=2, nullable=true)
  621.      * @Assert\Range(min="0", max="100")
  622.      * @Groups({"company:item","company:list", "company:write"})
  623.      */
  624.     private $completionPercentage;
  625.     /**
  626.      * Company constructor.
  627.      */
  628.     public function __construct()
  629.     {
  630.         $this->users = new ArrayCollection();
  631.         $this->cities = new ArrayCollection();
  632.         $this->departments = new ArrayCollection();
  633.         $this->regions = new ArrayCollection();
  634.         $this->divisions = new ArrayCollection();
  635.         $this->positions = new ArrayCollection();
  636.         $this->divisionHeads = new ArrayCollection();
  637.         $this->pyramidHeads = new ArrayCollection();
  638.         $this->cover = new EmbeddedFile();
  639.         $this->logo = new EmbeddedFile();
  640.         $this->videoUploaded = new EmbeddedFile();
  641.         $this->videoEmbedded = new VideoEmbedded();
  642.         $this->articles = new ArrayCollection();
  643.         $this->newsrooms = new ArrayCollection();
  644.         $this->blogs = new ArrayCollection();
  645.         $this->reviews = new ArrayCollection();
  646.         $this->nbFollowers 0;
  647.         $this->nbUnfollowers 0;
  648.         $this->address = new Address();
  649.         $this->nbReviews 0;
  650.         $this->nbComplaints 0;
  651.         $this->admins = new ArrayCollection();
  652.         $this->featured false;
  653.         $this->hasSubscription false;
  654.         $this->contracts = new ArrayCollection();
  655.         $this->feedItems = new ArrayCollection();
  656.         $this->formContributions = new ArrayCollection();
  657.         $this->userFollowedCompanies = new ArrayCollection();
  658.         $this->surveyForms = new ArrayCollection();
  659.         $this->companySurveyForms = new ArrayCollection();
  660.         $this->surveyContributions = new ArrayCollection();
  661.         $this->annualReports = new ArrayCollection();
  662.         $this->validated false;
  663.         $this->domains = new ArrayCollection();
  664.         $this->userCompanies = new ArrayCollection();
  665.         $this->informationPages = new ArrayCollection();
  666.         $this->isLogo false;
  667.         $this->isHero false;
  668.         $this->isPaternityLeave false;
  669.         $this->isMaternityLeave false;
  670.         $this->isAdoptiveLeave false;
  671.         $this->isPaidTimeOff false;
  672.         $this->isDemographics false;
  673.         $this->isPostJobs false;
  674.         $this->eeocFeeds = new ArrayCollection();
  675.         $this->eeoReportAvg 0;
  676.         $this->eeocRecognitionAvg 0;
  677.         $this->awardsRecognitionAvg 0;
  678.         $this->deiInitiativesAvg 0;
  679.         $this->benefitsPolicyAvg 0;
  680.         $this->employeePerksAvg 0;
  681.         $this->recruitmentAvg 0;
  682.         $this->epiAvg 0;
  683.         $this->mpiAvg 0;
  684.         $this->completionPercentage 0;
  685.         $this->surveyCompanies = new ArrayCollection();
  686.         $this->surveyCampaignSubmissions = new ArrayCollection();
  687.     }
  688.     /**
  689.      * @return string
  690.      */
  691.     public function __toString()
  692.     {
  693.         return $this->name;
  694.     }
  695.     public function getCover(): EmbeddedFile
  696.     {
  697.         return $this->cover;
  698.     }
  699.     public function setCover(EmbeddedFile $cover): self
  700.     {
  701.         $this->cover $cover;
  702.         return $this;
  703.     }
  704.     /**
  705.      * @return mixed
  706.      */
  707.     public function getCoverFile(): ?File
  708.     {
  709.         return $this->coverFile;
  710.     }
  711.     /**
  712.      * @param mixed $coverFile
  713.      *
  714.      * @throws Exception
  715.      */
  716.     public function setCoverFile(?File $coverFile): self
  717.     {
  718.         $this->coverFile $coverFile;
  719.         if ($coverFile) {
  720.             $this->updatedAt = new DateTime();
  721.         }
  722.         return $this;
  723.     }
  724.     public function getLogo(): EmbeddedFile
  725.     {
  726.         return $this->logo;
  727.     }
  728.     public function setLogo(EmbeddedFile $logo): self
  729.     {
  730.         $this->logo $logo;
  731.         return $this;
  732.     }
  733.     /**
  734.      * @return mixed
  735.      */
  736.     public function getLogoFile(): ?File
  737.     {
  738.         return $this->logoFile;
  739.     }
  740.     /**
  741.      * @param mixed $logoFile
  742.      *
  743.      * @throws Exception
  744.      */
  745.     public function setLogoFile(?File $logoFile): self
  746.     {
  747.         $this->logoFile $logoFile;
  748.         if ($logoFile) {
  749.             $this->updatedAt = new DateTime();
  750.         }
  751.         return $this;
  752.     }
  753.     public function getVideoUploaded(): EmbeddedFile
  754.     {
  755.         return $this->videoUploaded;
  756.     }
  757.     public function setVideoUploaded(EmbeddedFile $videoUploaded): self
  758.     {
  759.         $this->videoUploaded $videoUploaded;
  760.         return $this;
  761.     }
  762.     public function getId(): ?int
  763.     {
  764.         return $this->id;
  765.     }
  766.     public function getName(): ?string
  767.     {
  768.         return $this->name;
  769.     }
  770.     public function setName(string $name): self
  771.     {
  772.         $this->name $name;
  773.         return $this;
  774.     }
  775.     public function getAbout(): ?string
  776.     {
  777.         return $this->about;
  778.     }
  779.     public function setAbout(string $about): self
  780.     {
  781.         $this->about $about;
  782.         return $this;
  783.     }
  784.     public function getSlug(): ?string
  785.     {
  786.         return $this->slug;
  787.     }
  788.     public function setSlug(string $slug): self
  789.     {
  790.         $this->slug $slug;
  791.         return $this;
  792.     }
  793.     public function getWebsite(): ?string
  794.     {
  795.         return $this->website;
  796.     }
  797.     public function setWebsite(?string $website): self
  798.     {
  799.         $this->website $website;
  800.         return $this;
  801.     }
  802.     public function getFacebook(): ?string
  803.     {
  804.         return $this->facebook;
  805.     }
  806.     public function setFacebook(?string $facebook): self
  807.     {
  808.         $this->facebook $facebook;
  809.         return $this;
  810.     }
  811.     public function getTwitter(): ?string
  812.     {
  813.         return $this->twitter;
  814.     }
  815.     public function setTwitter(?string $twitter): self
  816.     {
  817.         $this->twitter $twitter;
  818.         return $this;
  819.     }
  820.     public function getLinkedin(): ?string
  821.     {
  822.         return $this->linkedin;
  823.     }
  824.     public function setLinkedin(?string $linkedin): self
  825.     {
  826.         $this->linkedin $linkedin;
  827.         return $this;
  828.     }
  829.     public function getInstagram(): ?string
  830.     {
  831.         return $this->instagram;
  832.     }
  833.     public function setInstagram(?string $instagram): self
  834.     {
  835.         $this->instagram $instagram;
  836.         return $this;
  837.     }
  838.     public function getDashboardUrl(): ?string
  839.     {
  840.         return $this->dashboardUrl;
  841.     }
  842.     public function setDashboardUrl(?string $dashboardUrl): self
  843.     {
  844.         $this->dashboardUrl $dashboardUrl;
  845.         return $this;
  846.     }
  847.     public function getDashboardCompletionUrl(): ?string
  848.     {
  849.         return $this->dashboardCompletionUrl;
  850.     }
  851.     public function setDashboardCompletionUrl(?string $dashboardCompletionUrl): self
  852.     {
  853.         $this->dashboardCompletionUrl $dashboardCompletionUrl;
  854.         return $this;
  855.     }
  856.     public function getDashboardQuestionUrl(): ?string
  857.     {
  858.         return $this->dashboardQuestionUrl;
  859.     }
  860.     public function setDashboardQuestionUrl(?string $dashboardQuestionUrl): self
  861.     {
  862.         $this->dashboardQuestionUrl $dashboardQuestionUrl;
  863.         return $this;
  864.     }
  865.     public function getDashboardAssessmentUrl(): ?string
  866.     {
  867.         return $this->dashboardAssessmentUrl;
  868.     }
  869.     public function setDashboardAssessmentUrl(?string $dashboardAssessmentUrl): self
  870.     {
  871.         $this->dashboardAssessmentUrl $dashboardAssessmentUrl;
  872.         return $this;
  873.     }
  874.     public function getDashboardDisparityUrl(): ?string
  875.     {
  876.         return $this->dashboardDisparityUrl;
  877.     }
  878.     public function setDashboardDisparityUrl(?string $dashboardDisparityUrl): self
  879.     {
  880.         $this->dashboardDisparityUrl $dashboardDisparityUrl;
  881.         return $this;
  882.     }
  883.     public function getDashboardLegalUrl(): ?string
  884.     {
  885.         return $this->dashboardLegalUrl;
  886.     }
  887.     public function setDashboardLegalUrl(?string $dashboardLegalUrl): self
  888.     {
  889.         $this->dashboardLegalUrl $dashboardLegalUrl;
  890.         return $this;
  891.     }
  892.     public function getDashboardMatterUrl(): ?string
  893.     {
  894.         return $this->dashboardMatterUrl;
  895.     }
  896.     public function setDashboardMatterUrl(?string $dashboardMatterUrl): self
  897.     {
  898.         $this->dashboardMatterUrl $dashboardMatterUrl;
  899.         return $this;
  900.     }
  901.     public function getDashboardPartnerUrl(): ?string
  902.     {
  903.         return $this->dashboardPartnerUrl;
  904.     }
  905.     public function setDashboardPartnerUrl(?string $dashboardPartnerUrl): self
  906.     {
  907.         $this->dashboardPartnerUrl $dashboardPartnerUrl;
  908.         return $this;
  909.     }
  910.     public function getDashboardInsightUrl(): ?string
  911.     {
  912.         return $this->dashboardInsightUrl;
  913.     }
  914.     public function setDashboardInsightUrl(?string $dashboardInsightUrl): self
  915.     {
  916.         $this->dashboardInsightUrl $dashboardInsightUrl;
  917.         return $this;
  918.     }
  919.     public function getFoundedAt(): ?string
  920.     {
  921.         return $this->foundedAt;
  922.     }
  923.     public function setFoundedAt(?string $foundedAt): self
  924.     {
  925.         $this->foundedAt $foundedAt;
  926.         return $this;
  927.     }
  928.     public function getOwnerType(): ?string
  929.     {
  930.         return $this->ownerType;
  931.     }
  932.     public function setOwnerType(?string $ownerType): self
  933.     {
  934.         $this->ownerType $ownerType;
  935.         return $this;
  936.     }
  937.     public function getVideoType(): ?string
  938.     {
  939.         return $this->videoType;
  940.     }
  941.     public function setVideoType(?string $videoType): self
  942.     {
  943.         $this->videoType $videoType;
  944.         return $this;
  945.     }
  946.     public function getIndustry(): ?Industry
  947.     {
  948.         return $this->industry;
  949.     }
  950.     public function setIndustry(?Industry $industry): self
  951.     {
  952.         $this->industry $industry;
  953.         return $this;
  954.     }
  955.     /**
  956.      * @return Collection|Article[]
  957.      */
  958.     public function getArticles(): Collection
  959.     {
  960.         return $this->articles;
  961.     }
  962.     public function addArticle(Article $article): self
  963.     {
  964.         if (!$this->articles->contains($article)) {
  965.             $this->articles[] = $article;
  966.             $article->setCompany($this);
  967.         }
  968.         return $this;
  969.     }
  970.     public function removeArticle(Article $article): self
  971.     {
  972.         if ($this->articles->contains($article)) {
  973.             $this->articles->removeElement($article);
  974.             // set the owning side to null (unless already changed)
  975.             if ($article->getCompany() === $this) {
  976.                 $article->setCompany(null);
  977.             }
  978.         }
  979.         return $this;
  980.     }
  981.     /**
  982.      * @return Collection|Newsroom[]
  983.      */
  984.     public function getNewsrooms(): Collection
  985.     {
  986.         return $this->newsrooms;
  987.     }
  988.     public function addNewsroom(Newsroom $newsroom): self
  989.     {
  990.         if (!$this->newsrooms->contains($newsroom)) {
  991.             $this->newsrooms[] = $newsroom;
  992.             $newsroom->setCompany($this);
  993.         }
  994.         return $this;
  995.     }
  996.     public function removeNewsroom(Newsroom $newsroom): self
  997.     {
  998.         if ($this->newsrooms->contains($newsroom)) {
  999.             $this->newsrooms->removeElement($newsroom);
  1000.             // set the owning side to null (unless already changed)
  1001.             if ($newsroom->getCompany() === $this) {
  1002.                 $newsroom->setCompany(null);
  1003.             }
  1004.         }
  1005.         return $this;
  1006.     }
  1007.     /**
  1008.      * @return Collection|Blog[]
  1009.      */
  1010.     public function getBlogs(): Collection
  1011.     {
  1012.         return $this->blogs;
  1013.     }
  1014.     public function addBlog(Blog $blog): self
  1015.     {
  1016.         if (!$this->blogs->contains($blog)) {
  1017.             $this->blogs[] = $blog;
  1018.             $blog->setCompany($this);
  1019.         }
  1020.         return $this;
  1021.     }
  1022.     public function removeBlog(Blog $blog): self
  1023.     {
  1024.         if ($this->blogs->contains($blog)) {
  1025.             $this->blogs->removeElement($blog);
  1026.             // set the owning side to null (unless already changed)
  1027.             if ($blog->getCompany() === $this) {
  1028.                 $blog->setCompany(null);
  1029.             }
  1030.         }
  1031.         return $this;
  1032.     }
  1033.     /**
  1034.      * @return mixed
  1035.      */
  1036.     public function getVideoUploadedFile(): ?File
  1037.     {
  1038.         return $this->videoUploadedFile;
  1039.     }
  1040.     /**
  1041.      * @param mixed $videoUploadedFile
  1042.      *
  1043.      * @throws Exception
  1044.      */
  1045.     public function setVideoUploadedFile(?File $videoUploadedFile): self
  1046.     {
  1047.         $this->videoUploadedFile $videoUploadedFile;
  1048.         if ($videoUploadedFile) {
  1049.             $this->updatedAt = new DateTime();
  1050.         }
  1051.         return $this;
  1052.     }
  1053.     public function getEmployeesRange(): ?EmployeesRange
  1054.     {
  1055.         return $this->employeesRange;
  1056.     }
  1057.     public function setEmployeesRange(?EmployeesRange $employeesRange): self
  1058.     {
  1059.         $this->employeesRange $employeesRange;
  1060.         return $this;
  1061.     }
  1062.     public function getVideoEmbedded(): VideoEmbedded
  1063.     {
  1064.         return $this->videoEmbedded;
  1065.     }
  1066.     public function setVideoEmbedded(VideoEmbedded $videoEmbedded): self
  1067.     {
  1068.         $this->videoEmbedded $videoEmbedded;
  1069.         return $this;
  1070.     }
  1071.     /**
  1072.      * @return Collection|Review[]
  1073.      */
  1074.     public function getReviews(): Collection
  1075.     {
  1076.         return $this->reviews;
  1077.     }
  1078.     public function addReview(Review $review): self
  1079.     {
  1080.         if (!$this->reviews->contains($review)) {
  1081.             $this->reviews[] = $review;
  1082.             $review->setCompany($this);
  1083.         }
  1084.         return $this;
  1085.     }
  1086.     public function removeReview(Review $review): self
  1087.     {
  1088.         if ($this->reviews->contains($review)) {
  1089.             $this->reviews->removeElement($review);
  1090.             // set the owning side to null (unless already changed)
  1091.             if ($review->getCompany() === $this) {
  1092.                 $review->setCompany(null);
  1093.             }
  1094.         }
  1095.         return $this;
  1096.     }
  1097.     public function getDiversityAcrossOrganizationAvg()
  1098.     {
  1099.         return $this->diversityAcrossOrganizationAvg;
  1100.     }
  1101.     public function setDiversityAcrossOrganizationAvg($diversityAcrossOrganizationAvg): self
  1102.     {
  1103.         $this->diversityAcrossOrganizationAvg $diversityAcrossOrganizationAvg;
  1104.         return $this;
  1105.     }
  1106.     public function getDiversityInLeadershipAvg()
  1107.     {
  1108.         return $this->diversityInLeadershipAvg;
  1109.     }
  1110.     public function setDiversityInLeadershipAvg($diversityInLeadershipAvg): self
  1111.     {
  1112.         $this->diversityInLeadershipAvg $diversityInLeadershipAvg;
  1113.         return $this;
  1114.     }
  1115.     public function getWorkLikeBalanceAvg()
  1116.     {
  1117.         return $this->workLikeBalanceAvg;
  1118.     }
  1119.     public function setWorkLikeBalanceAvg($workLikeBalanceAvg): self
  1120.     {
  1121.         $this->workLikeBalanceAvg $workLikeBalanceAvg;
  1122.         return $this;
  1123.     }
  1124.     public function getOverallInclusivenessAvg()
  1125.     {
  1126.         return $this->overallInclusivenessAvg;
  1127.     }
  1128.     public function setOverallInclusivenessAvg($overallInclusivenessAvg): self
  1129.     {
  1130.         $this->overallInclusivenessAvg $overallInclusivenessAvg;
  1131.         return $this;
  1132.     }
  1133.     public function getBenefitsAndResourcesAvg()
  1134.     {
  1135.         return $this->benefitsAndResourcesAvg;
  1136.     }
  1137.     public function setBenefitsAndResourcesAvg($benefitsAndResourcesAvg): self
  1138.     {
  1139.         $this->benefitsAndResourcesAvg $benefitsAndResourcesAvg;
  1140.         return $this;
  1141.     }
  1142.     public function enpsAvg()
  1143.     {
  1144.         return $this->enpsAvg;
  1145.     }
  1146.     public function setEnpsAvg($enpsAvg): self
  1147.     {
  1148.         $this->enpsAvg $enpsAvg;
  1149.         return $this;
  1150.     }
  1151.     public function getGlobalAverage()
  1152.     {
  1153.         return $this->globalAverage;
  1154.     }
  1155.     public function setGlobalAverage($globalAverage): self
  1156.     {
  1157.         $this->globalAverage $globalAverage;
  1158.         return $this;
  1159.     }
  1160.     public function getNbFollowers(): int
  1161.     {
  1162.         return $this->nbFollowers;
  1163.     }
  1164.     public function setNbFollowers(int $nbFollowers): self
  1165.     {
  1166.         $this->nbFollowers $nbFollowers;
  1167.         return $this;
  1168.     }
  1169.     public function getNbUnfollowers(): int
  1170.     {
  1171.         return $this->nbUnfollowers;
  1172.     }
  1173.     public function setNbUnfollowers(int $nbUnfollowers): self
  1174.     {
  1175.         $this->nbUnfollowers $nbUnfollowers;
  1176.         return $this;
  1177.     }
  1178.     public function getAddress(): Address
  1179.     {
  1180.         return $this->address;
  1181.     }
  1182.     public function setAddress(Address $address): self
  1183.     {
  1184.         $this->address $address;
  1185.         return $this;
  1186.     }
  1187.     public function getNbReviews(): int
  1188.     {
  1189.         return $this->nbReviews;
  1190.     }
  1191.     public function setNbReviews(int $nbReviews): self
  1192.     {
  1193.         $this->nbReviews $nbReviews;
  1194.         return $this;
  1195.     }
  1196.     /**
  1197.      * @return Collection|Admin[]
  1198.      */
  1199.     public function getAdmins(): Collection
  1200.     {
  1201.         return $this->admins;
  1202.     }
  1203.     public function addAdmin(Admin $admin): self
  1204.     {
  1205.         if (!$this->admins->contains($admin)) {
  1206.             $this->admins[] = $admin;
  1207.             $admin->setCompany($this);
  1208.         }
  1209.         return $this;
  1210.     }
  1211.     public function removeAdmin(Admin $admin): self
  1212.     {
  1213.         if ($this->admins->contains($admin)) {
  1214.             $this->admins->removeElement($admin);
  1215.             // set the owning side to null (unless already changed)
  1216.             if ($admin->getCompany() === $this) {
  1217.                 $admin->setCompany(null);
  1218.             }
  1219.         }
  1220.         return $this;
  1221.     }
  1222.     public function hasAdminUser(User $user): bool
  1223.     {
  1224.         return $this->admins->exists(function (int $indexAdmin $admin) use ($user) {
  1225.             return $admin->getUser()->getId() === $user->getId();
  1226.         });
  1227.     }
  1228.     public function getFeatured(): bool
  1229.     {
  1230.         return $this->featured;
  1231.     }
  1232.     public function setFeatured(bool $featured): self
  1233.     {
  1234.         $this->featured $featured;
  1235.         return $this;
  1236.     }
  1237.     public function getHasSubscription(): bool
  1238.     {
  1239.         return $this->hasSubscription;
  1240.     }
  1241.     public function setHasSubscription(bool $hasSubscription): self
  1242.     {
  1243.         $this->hasSubscription $hasSubscription;
  1244.         return $this;
  1245.     }
  1246.     /**
  1247.      * @return Collection|Contract[]
  1248.      */
  1249.     public function getContracts(): Collection
  1250.     {
  1251.         return $this->contracts;
  1252.     }
  1253.     public function addContract(Contract $contract): self
  1254.     {
  1255.         if (!$this->contracts->contains($contract)) {
  1256.             $this->contracts[] = $contract;
  1257.             $contract->setCompany($this);
  1258.         }
  1259.         return $this;
  1260.     }
  1261.     public function removeContract(Contract $contract): self
  1262.     {
  1263.         if ($this->contracts->contains($contract)) {
  1264.             $this->contracts->removeElement($contract);
  1265.             // set the owning side to null (unless already changed)
  1266.             if ($contract->getCompany() === $this) {
  1267.                 $contract->setCompany(null);
  1268.             }
  1269.         }
  1270.         return $this;
  1271.     }
  1272.     public function getValidated(): bool
  1273.     {
  1274.         return $this->validated;
  1275.     }
  1276.     public function setValidated(?bool $validated): self
  1277.     {
  1278.         $this->validated $validated;
  1279.         return $this;
  1280.     }
  1281.     /**
  1282.      * @return Collection|FeedItem[]
  1283.      */
  1284.     public function getFeedItems(): Collection
  1285.     {
  1286.         return $this->feedItems;
  1287.     }
  1288.     public function addFeedItem(FeedItem $feedItem): self
  1289.     {
  1290.         if (!$this->feedItems->contains($feedItem)) {
  1291.             $this->feedItems[] = $feedItem;
  1292.             $feedItem->setCompany($this);
  1293.         }
  1294.         return $this;
  1295.     }
  1296.     public function removeFeedItem(FeedItem $feedItem): self
  1297.     {
  1298.         if ($this->feedItems->contains($feedItem)) {
  1299.             $this->feedItems->removeElement($feedItem);
  1300.             // set the owning side to null (unless already changed)
  1301.             if ($feedItem->getCompany() === $this) {
  1302.                 $feedItem->setCompany(null);
  1303.             }
  1304.         }
  1305.         return $this;
  1306.     }
  1307.     /**
  1308.      * @return Collection|CompanyContribution[]
  1309.      */
  1310.     public function getFormContributions(): Collection
  1311.     {
  1312.         return $this->formContributions;
  1313.     }
  1314.     public function addFormContribution(CompanyContribution $formContribution): self
  1315.     {
  1316.         if (!$this->formContributions->contains($formContribution)) {
  1317.             $this->formContributions[] = $formContribution;
  1318.             $formContribution->setCompany($this);
  1319.         }
  1320.         return $this;
  1321.     }
  1322.     public function removeFormContribution(CompanyContribution $formContribution): self
  1323.     {
  1324.         if ($this->formContributions->contains($formContribution)) {
  1325.             $this->formContributions->removeElement($formContribution);
  1326.             // set the owning side to null (unless already changed)
  1327.             if ($formContribution->getCompany() === $this) {
  1328.                 $formContribution->setCompany(null);
  1329.             }
  1330.         }
  1331.         return $this;
  1332.     }
  1333.     /**
  1334.      * @return Collection|SurveyContribution[]
  1335.      */
  1336.     public function getSurveyContributions(): Collection
  1337.     {
  1338.         return $this->surveyContributions;
  1339.     }
  1340.     public function addSurveyContribution(SurveyContribution $surveyContribution): self
  1341.     {
  1342.         if (!$this->surveyContributions->contains($surveyContribution)) {
  1343.             $this->surveyContributions[] = $surveyContribution;
  1344.             $surveyContribution->setCompany($this);
  1345.         }
  1346.         return $this;
  1347.     }
  1348.     public function removeSurveyContribution(SurveyContribution $surveyContribution): self
  1349.     {
  1350.         if ($this->surveyContributions->contains($surveyContribution)) {
  1351.             $this->surveyContributions->removeElement($surveyContribution);
  1352.             // set the owning side to null (unless already changed)
  1353.             if ($surveyContribution->getCompany() === $this) {
  1354.                 $surveyContribution->setCompany(null);
  1355.             }
  1356.         }
  1357.         return $this;
  1358.     }
  1359.     /**
  1360.      * @return Collection|CompanyInformationPage[]
  1361.      */
  1362.     public function getInformationPages(): Collection
  1363.     {
  1364.         return $this->informationPages;
  1365.     }
  1366.     public function addInformationPage(CompanyInformationPage $informationPage): self
  1367.     {
  1368.         if (!$this->informationPages->contains($informationPage)) {
  1369.             $this->informationPages[] = $informationPage;
  1370.             $informationPage->setCompany($this);
  1371.         }
  1372.         return $this;
  1373.     }
  1374.     public function removeInformationPage(CompanyInformationPage $informationPage): self
  1375.     {
  1376.         if ($this->informationPages->contains($informationPage)) {
  1377.             $this->informationPages->removeElement($informationPage);
  1378.             // set the owning side to null (unless already changed)
  1379.             if ($informationPage->getCompany() === $this) {
  1380.                 $informationPage->setCompany(null);
  1381.             }
  1382.         }
  1383.         return $this;
  1384.     }
  1385.     /**
  1386.      * @return Collection|UserFollowCompany[]
  1387.      */
  1388.     public function getUserFollowedCompanies(): Collection
  1389.     {
  1390.         return $this->userFollowedCompanies;
  1391.     }
  1392.     public function addUserFollowedCompany(UserFollowCompany $followedUser): self
  1393.     {
  1394.         if (!$this->userFollowedCompanies->contains($followedUser)) {
  1395.             $this->userFollowedCompanies[] = $followedUser;
  1396.             $followedUser->setCompany($this);
  1397.         }
  1398.         return $this;
  1399.     }
  1400.     public function removeUserFollowedCompany(UserFollowCompany $followedUser): self
  1401.     {
  1402.         if ($this->userFollowedCompanies->contains($followedUser)) {
  1403.             $this->userFollowedCompanies->removeElement($followedUser);
  1404.             // set the owning side to null (unless already changed)
  1405.             if ($followedUser->getCompany() === $this) {
  1406.                 $followedUser->setCompany(null);
  1407.             }
  1408.         }
  1409.         return $this;
  1410.     }
  1411.     /**
  1412.      * @return Collection|SurveyForm[]
  1413.      */
  1414.     public function getSurveyForms(): Collection
  1415.     {
  1416.         return $this->surveyForms;
  1417.     }
  1418.     public function addSurveyForm(SurveyForm $surveyForm): self
  1419.     {
  1420.         if (!$this->surveyForms->contains($surveyForm)) {
  1421.             $this->surveyForms[] = $surveyForm;
  1422.             $surveyForm->setCompany($this);
  1423.         }
  1424.         return $this;
  1425.     }
  1426.     public function removeSurveyForm(SurveyForm $surveyForm): self
  1427.     {
  1428.         if ($this->surveyForms->contains($surveyForm)) {
  1429.             $this->surveyForms->removeElement($surveyForm);
  1430.             // set the owning side to null (unless already changed)
  1431.             if ($surveyForm->getCompany() === $this) {
  1432.                 $surveyForm->setCompany(null);
  1433.             }
  1434.         }
  1435.         return $this;
  1436.     }
  1437.     /**
  1438.      * @return Collection|CompanySurveyForm[]
  1439.      */
  1440.     public function getCompanySurveyForms(): Collection
  1441.     {
  1442.         return $this->companySurveyForms;
  1443.     }
  1444.     public function addCompanySurveyForm(CompanySurveyForm $companySurveyForm): self
  1445.     {
  1446.         if (!$this->companySurveyForms->contains($companySurveyForm)) {
  1447.             $this->companySurveyForms[] = $companySurveyForm;
  1448.             $companySurveyForm->setCompany($this);
  1449.         }
  1450.         return $this;
  1451.     }
  1452.     public function removeCompanySurveyForm(CompanySurveyForm $companySurveyForm): self
  1453.     {
  1454.         if ($this->companySurveyForms->contains($companySurveyForm)) {
  1455.             $this->companySurveyForms->removeElement($companySurveyForm);
  1456.             // set the owning side to null (unless already changed)
  1457.             if ($companySurveyForm->getCompany() === $this) {
  1458.                 $companySurveyForm->setCompany(null);
  1459.             }
  1460.         }
  1461.         return $this;
  1462.     }
  1463.     /**
  1464.      * @return Collection|AnnualReport[]
  1465.      */
  1466.     public function getAnnualReports(): Collection
  1467.     {
  1468.         return $this->annualReports;
  1469.     }
  1470.     public function addAnnualReport(AnnualReport $annualReport): self
  1471.     {
  1472.         if (!$this->annualReports->contains($annualReport)) {
  1473.             $this->annualReports[] = $annualReport;
  1474.             $annualReport->setCompany($this);
  1475.         }
  1476.         return $this;
  1477.     }
  1478.     public function removeAnnualReport(AnnualReport $annualReport): self
  1479.     {
  1480.         if ($this->annualReports->contains($annualReport)) {
  1481.             $this->annualReports->removeElement($annualReport);
  1482.             // set the owning side to null (unless already changed)
  1483.             if ($annualReport->getCompany() === $this) {
  1484.                 $annualReport->setCompany(null);
  1485.             }
  1486.         }
  1487.         return $this;
  1488.     }
  1489.     /**
  1490.      * @return Collection|Domain[]
  1491.      */
  1492.     public function getDomains(): Collection
  1493.     {
  1494.         return $this->domains;
  1495.     }
  1496.     public function addDomain(Domain $domain): self
  1497.     {
  1498.         if (!$this->domains->contains($domain)) {
  1499.             $this->domains[] = $domain;
  1500.             $domain->setCompany($this);
  1501.         }
  1502.         return $this;
  1503.     }
  1504.     public function removeDomain(Domain $domain): self
  1505.     {
  1506.         if ($this->domains->contains($domain)) {
  1507.             $this->domains->removeElement($domain);
  1508.             // set the owning side to null (unless already changed)
  1509.             if ($domain->getCompany() === $this) {
  1510.                 $domain->setCompany(null);
  1511.             }
  1512.         }
  1513.         return $this;
  1514.     }
  1515.     /**
  1516.      * @return Collection|UserCompany[]
  1517.      */
  1518.     public function getUserCompanies(): Collection
  1519.     {
  1520.         return $this->userCompanies;
  1521.     }
  1522.     public function addUserCompany(UserCompany $userCompany): self
  1523.     {
  1524.         if (!$this->userCompanies->contains($userCompany)) {
  1525.             $this->userCompanies[] = $userCompany;
  1526.             $userCompany->setCompany($this);
  1527.         }
  1528.         return $this;
  1529.     }
  1530.     public function removeUserCompany(UserCompany $userCompany): self
  1531.     {
  1532.         if ($this->userCompanies->contains($userCompany)) {
  1533.             $this->userCompanies->removeElement($userCompany);
  1534.             // set the owning side to null (unless already changed)
  1535.             if ($userCompany->getCompany() === $this) {
  1536.                 $userCompany->setCompany(null);
  1537.             }
  1538.         }
  1539.         return $this;
  1540.     }
  1541.     public function getIsLogo(): bool
  1542.     {
  1543.         return $this->isLogo;
  1544.     }
  1545.     public function setIsLogo(bool $isLogo): self
  1546.     {
  1547.         $this->isLogo $isLogo;
  1548.         return $this;
  1549.     }
  1550.     public function getIsHero(): bool
  1551.     {
  1552.         return $this->isHero;
  1553.     }
  1554.     public function setIsHero(bool $isHero): self
  1555.     {
  1556.         $this->isHero $isHero;
  1557.         return $this;
  1558.     }
  1559.     public function getIsPaternityLeave(): bool
  1560.     {
  1561.         return $this->isPaternityLeave;
  1562.     }
  1563.     public function setIsPaternityLeave(bool $isPaternityLeave): self
  1564.     {
  1565.         $this->isPaternityLeave $isPaternityLeave;
  1566.         return $this;
  1567.     }
  1568.     public function getIsMaternityLeave(): bool
  1569.     {
  1570.         return $this->isMaternityLeave;
  1571.     }
  1572.     public function setIsMaternityLeave(bool $isMaternityLeave): self
  1573.     {
  1574.         $this->isMaternityLeave $isMaternityLeave;
  1575.         return $this;
  1576.     }
  1577.     public function getIsAdoptiveLeave(): bool
  1578.     {
  1579.         return $this->isAdoptiveLeave;
  1580.     }
  1581.     public function setIsAdoptiveLeave(bool $isAdoptiveLeave): self
  1582.     {
  1583.         $this->isAdoptiveLeave $isAdoptiveLeave;
  1584.         return $this;
  1585.     }
  1586.     public function getIsPaidTimeOff(): bool
  1587.     {
  1588.         return $this->isPaidTimeOff;
  1589.     }
  1590.     public function setIsPaidTimeOff(bool $isPaidTimeOff): self
  1591.     {
  1592.         $this->isPaidTimeOff $isPaidTimeOff;
  1593.         return $this;
  1594.     }
  1595.     public function getIsDemographics(): bool
  1596.     {
  1597.         return $this->isDemographics;
  1598.     }
  1599.     public function setIsDemographics(bool $isDemographics): self
  1600.     {
  1601.         $this->isDemographics $isDemographics;
  1602.         return $this;
  1603.     }
  1604.     public function getReportFrequency(): ?string
  1605.     {
  1606.         return $this->reportFrequency;
  1607.     }
  1608.     public function setReportFrequency(?string $reportFrequency): self
  1609.     {
  1610.         $this->reportFrequency $reportFrequency;
  1611.         return $this;
  1612.     }
  1613.     public function getReportGeneratedAt(): ?\DateTimeInterface
  1614.     {
  1615.         return $this->reportGeneratedAt;
  1616.     }
  1617.     public function setReportGeneratedAt(?\DateTimeInterface $reportGeneratedAt): self
  1618.     {
  1619.         $this->reportGeneratedAt $reportGeneratedAt;
  1620.         return $this;
  1621.     }
  1622.     public function getIsPostJobs(): bool
  1623.     {
  1624.         return $this->isPostJobs;
  1625.     }
  1626.     public function setIsPostJobs(bool $isPostJobs): self
  1627.     {
  1628.         $this->isPostJobs $isPostJobs;
  1629.         return $this;
  1630.     }
  1631.     public function getFeedGeneratedAt(): ?\DateTimeInterface
  1632.     {
  1633.         return $this->feedGeneratedAt;
  1634.     }
  1635.     public function setFeedGeneratedAt(?\DateTimeInterface $feedGeneratedAt): self
  1636.     {
  1637.         $this->feedGeneratedAt $feedGeneratedAt;
  1638.         return $this;
  1639.     }
  1640.     /**
  1641.      * @return Collection|EeocFeed[]
  1642.      */
  1643.     public function getEeocFeeds(): Collection
  1644.     {
  1645.         return $this->eeocFeeds;
  1646.     }
  1647.     public function addEeocFeed(EeocFeed $eeocFeed): self
  1648.     {
  1649.         if (!$this->eeocFeeds->contains($eeocFeed)) {
  1650.             $this->eeocFeeds[] = $eeocFeed;
  1651.             $eeocFeed->addFeedCompany($this);
  1652.         }
  1653.         return $this;
  1654.     }
  1655.     public function removeEeocFeed(EeocFeed $eeocFeed): self
  1656.     {
  1657.         if ($this->eeocFeeds->contains($eeocFeed)) {
  1658.             $this->eeocFeeds->removeElement($eeocFeed);
  1659.             $eeocFeed->removeFeedCompany($this);
  1660.         }
  1661.         return $this;
  1662.     }
  1663.     public function getCompanyFeed(): ?CompanyFeed
  1664.     {
  1665.         return $this->companyFeed;
  1666.     }
  1667.     public function setCompanyFeed(?CompanyFeed $companyFeed): void
  1668.     {
  1669.         $this->companyFeed $companyFeed;
  1670.         // set (or unset) the owning side of the relation if necessary
  1671.         $newCompany null === $companyFeed null $this;
  1672.         if ($companyFeed->getCompany() !== $newCompany) {
  1673.             $companyFeed->setCompany($newCompany);
  1674.         }
  1675.     }
  1676.     public function getNbComplaints(): ?int
  1677.     {
  1678.         return $this->nbComplaints;
  1679.     }
  1680.     public function setNbComplaints(int $nbComplaints): self
  1681.     {
  1682.         $this->nbComplaints $nbComplaints;
  1683.         return $this;
  1684.     }
  1685.     public function getEeoReportAvg()
  1686.     {
  1687.         return $this->eeoReportAvg;
  1688.     }
  1689.     public function setEeoReportAvg($eeoReportAvg): self
  1690.     {
  1691.         $this->eeoReportAvg $eeoReportAvg;
  1692.         return $this;
  1693.     }
  1694.     public function getEeocRecognitionAvg()
  1695.     {
  1696.         return $this->eeocRecognitionAvg;
  1697.     }
  1698.     public function setEeocRecognitionAvg($eeocRecognitionAvg): self
  1699.     {
  1700.         $this->eeocRecognitionAvg $eeocRecognitionAvg;
  1701.         return $this;
  1702.     }
  1703.     public function getAwardsRecognitionAvg()
  1704.     {
  1705.         return $this->awardsRecognitionAvg;
  1706.     }
  1707.     public function setAwardsRecognitionAvg($awardsRecognitionAvg): self
  1708.     {
  1709.         $this->awardsRecognitionAvg $awardsRecognitionAvg;
  1710.         return $this;
  1711.     }
  1712.     public function getDeiInitiativesAvg()
  1713.     {
  1714.         return $this->deiInitiativesAvg;
  1715.     }
  1716.     public function setDeiInitiativesAvg($deiInitiativesAvg): self
  1717.     {
  1718.         $this->deiInitiativesAvg $deiInitiativesAvg;
  1719.         return $this;
  1720.     }
  1721.     public function getBenefitsPolicyAvg()
  1722.     {
  1723.         return $this->benefitsPolicyAvg;
  1724.     }
  1725.     public function setBenefitsPolicyAvg($benefitsPolicyAvg): self
  1726.     {
  1727.         $this->benefitsPolicyAvg $benefitsPolicyAvg;
  1728.         return $this;
  1729.     }
  1730.     public function getEmployeePerksAvg()
  1731.     {
  1732.         return $this->employeePerksAvg;
  1733.     }
  1734.     public function setEmployeePerksAvg($employeePerksAvg): self
  1735.     {
  1736.         $this->employeePerksAvg $employeePerksAvg;
  1737.         return $this;
  1738.     }
  1739.     public function getRecruitmentAvg()
  1740.     {
  1741.         return $this->recruitmentAvg;
  1742.     }
  1743.     public function setRecruitmentAvg($recruitmentAvg): self
  1744.     {
  1745.         $this->recruitmentAvg $recruitmentAvg;
  1746.         return $this;
  1747.     }
  1748.     public function getEpiAvg()
  1749.     {
  1750.         return $this->epiAvg;
  1751.     }
  1752.     public function setEpiAvg($epiAvg): self
  1753.     {
  1754.         $this->epiAvg $epiAvg;
  1755.         return $this;
  1756.     }
  1757.     public function getMpiAvg()
  1758.     {
  1759.         return $this->mpiAvg;
  1760.     }
  1761.     public function setMpiAvg($mpiAvg): self
  1762.     {
  1763.         $this->mpiAvg $mpiAvg;
  1764.         return $this;
  1765.     }
  1766.     /**
  1767.      * @return Collection|SurveyCompany[]
  1768.      */
  1769.     public function getSurveyCompanies(): Collection
  1770.     {
  1771.         return $this->surveyCompanies;
  1772.     }
  1773.     public function addSurveyCompany(SurveyCompany $surveyCompany): self
  1774.     {
  1775.         if (!$this->surveyCompanies->contains($surveyCompany)) {
  1776.             $this->surveyCompanies[] = $surveyCompany;
  1777.             $surveyCompany->setCompany($this);
  1778.         }
  1779.         return $this;
  1780.     }
  1781.     public function removeSurveyCompany(SurveyCompany $surveyCompany): self
  1782.     {
  1783.         if ($this->surveyCompanies->contains($surveyCompany)) {
  1784.             $this->surveyCompanies->removeElement($surveyCompany);
  1785.             // set the owning side to null (unless already changed)
  1786.             if ($surveyCompany->getCompany() === $this) {
  1787.                 $surveyCompany->setCompany(null);
  1788.             }
  1789.         }
  1790.         return $this;
  1791.     }
  1792.     /**
  1793.      * @return Collection|SurveyCampaignSubmission[]
  1794.      */
  1795.     public function getSurveyCampaignSubmissions(): Collection
  1796.     {
  1797.         return $this->surveyCampaignSubmissions;
  1798.     }
  1799.     public function addSurveyCampaignSubmission(SurveyCampaignSubmission $surveyCampaignSubmission): self
  1800.     {
  1801.         if (!$this->surveyCampaignSubmissions->contains($surveyCampaignSubmission)) {
  1802.             $this->surveyCampaignSubmissions[] = $surveyCampaignSubmission;
  1803.             $surveyCampaignSubmission->setCompany($this);
  1804.         }
  1805.         return $this;
  1806.     }
  1807.     public function removeSurveyCampaignSubmission(SurveyCampaignSubmission $surveyCampaignSubmission): self
  1808.     {
  1809.         if ($this->surveyCampaignSubmissions->contains($surveyCampaignSubmission)) {
  1810.             $this->surveyCampaignSubmissions->removeElement($surveyCampaignSubmission);
  1811.             // set the owning side to null (unless already changed)
  1812.             if ($surveyCampaignSubmission->getCompany() === $this) {
  1813.                 $surveyCampaignSubmission->setCompany(null);
  1814.             }
  1815.         }
  1816.         return $this;
  1817.     }
  1818.     /**
  1819.      * @return Collection|Department[]
  1820.      */
  1821.     public function getDepartments(): Collection
  1822.     {
  1823.         return $this->departments;
  1824.     }
  1825.     public function addDepartment(Department $department): self
  1826.     {
  1827.         if (!$this->departments->contains($department)) {
  1828.             $this->departments[] = $department;
  1829.         }
  1830.         return $this;
  1831.     }
  1832.     public function removeDepartment(Department $department): self
  1833.     {
  1834.         if ($this->departments->contains($department)) {
  1835.             $this->departments->removeElement($department);
  1836.         }
  1837.         return $this;
  1838.     }
  1839.     /**
  1840.      * @return Collection|Region[]
  1841.      */
  1842.     public function getRegions(): Collection
  1843.     {
  1844.         return $this->regions;
  1845.     }
  1846.     public function addRegion(Region $region): self
  1847.     {
  1848.         if (!$this->regions->contains($region)) {
  1849.             $this->regions[] = $region;
  1850.         }
  1851.         return $this;
  1852.     }
  1853.     public function removeRegion(Region $region): self
  1854.     {
  1855.         if ($this->regions->contains($region)) {
  1856.             $this->regions->removeElement($region);
  1857.         }
  1858.         return $this;
  1859.     }
  1860.     /**
  1861.      * @return Collection|Division[]
  1862.      */
  1863.     public function getDivisions(): Collection
  1864.     {
  1865.         return $this->divisions;
  1866.     }
  1867.     public function addDivision(Division $division): self
  1868.     {
  1869.         if (!$this->divisions->contains($division)) {
  1870.             $this->divisions[] = $division;
  1871.         }
  1872.         return $this;
  1873.     }
  1874.     public function removeDivision(Division $division): self
  1875.     {
  1876.         if ($this->divisions->contains($division)) {
  1877.             $this->divisions->removeElement($division);
  1878.         }
  1879.         return $this;
  1880.     }
  1881.     /**
  1882.      * @return Collection|DivisionHead[]
  1883.      */
  1884.     public function getDivisionHeads(): Collection
  1885.     {
  1886.         return $this->divisionHeads;
  1887.     }
  1888.     public function addDivisionHead(DivisionHead $divisionHead): self
  1889.     {
  1890.         if (!$this->divisionHeads->contains($divisionHead)) {
  1891.             $this->divisionHeads[] = $divisionHead;
  1892.         }
  1893.         return $this;
  1894.     }
  1895.     public function removeDivisionHead(DivisionHead $divisionHead): self
  1896.     {
  1897.         if ($this->divisionHeads->contains($divisionHead)) {
  1898.             $this->divisionHeads->removeElement($divisionHead);
  1899.         }
  1900.         return $this;
  1901.     }
  1902.     /**
  1903.      * @return Collection|PyramidHead[]
  1904.      */
  1905.     public function getPyramidHeads(): Collection
  1906.     {
  1907.         return $this->pyramidHeads;
  1908.     }
  1909.     public function addPyramidHead(PyramidHead $pyramidHead): self
  1910.     {
  1911.         if (!$this->pyramidHeads->contains($pyramidHead)) {
  1912.             $this->pyramidHeads[] = $pyramidHead;
  1913.         }
  1914.         return $this;
  1915.     }
  1916.     public function removePyramidHead(PyramidHead $pyramidHead): self
  1917.     {
  1918.         if ($this->pyramidHeads->contains($pyramidHead)) {
  1919.             $this->pyramidHeads->removeElement($pyramidHead);
  1920.         }
  1921.         return $this;
  1922.     }
  1923.     /**
  1924.      * @return Collection|Position[]
  1925.      */
  1926.     public function getPositions(): Collection
  1927.     {
  1928.         return $this->positions;
  1929.     }
  1930.     public function addPosition(Position $position): self
  1931.     {
  1932.         if (!$this->positions->contains($position)) {
  1933.             $this->positions[] = $position;
  1934.         }
  1935.         return $this;
  1936.     }
  1937.     public function removePosition(Position $position): self
  1938.     {
  1939.         if ($this->positions->contains($position)) {
  1940.             $this->positions->removeElement($position);
  1941.         }
  1942.         return $this;
  1943.     }
  1944.     /**
  1945.      * @return Collection|City[]
  1946.      */
  1947.     public function getCities(): Collection
  1948.     {
  1949.         return $this->cities;
  1950.     }
  1951.     public function addCity(City $city): self
  1952.     {
  1953.         if (!$this->cities->contains($city)) {
  1954.             $this->cities[] = $city;
  1955.         }
  1956.         return $this;
  1957.     }
  1958.     public function removeCity(City $city): self
  1959.     {
  1960.         if ($this->cities->contains($city)) {
  1961.             $this->cities->removeElement($city);
  1962.         }
  1963.         return $this;
  1964.     }
  1965.     /**
  1966.      * @return Collection|User[]
  1967.      */
  1968.     public function getUsers(): Collection
  1969.     {
  1970.         return $this->users;
  1971.     }
  1972.     public function addUser(User $user): self
  1973.     {
  1974.         if (!$this->users->contains($user)) {
  1975.             $this->users[] = $user;
  1976.         }
  1977.         return $this;
  1978.     }
  1979.     public function removeUser(User $user): self
  1980.     {
  1981.         if ($this->users->contains($user)) {
  1982.             $this->users->removeElement($user);
  1983.         }
  1984.         return $this;
  1985.     }
  1986.     public function getCompletionPercentage()
  1987.     {
  1988.         return $this->completionPercentage;
  1989.     }
  1990.     public function setCompletionPercentage($completionPercentage): self
  1991.     {
  1992.         $this->completionPercentage $completionPercentage;
  1993.         return $this;
  1994.     }
  1995. }