<?php
namespace App\Entity;
use App\Enum\User\Permission;
use App\Enum\User\PermissionGroup;
use App\Repository\UserSettingsRepository;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity(repositoryClass=UserSettingsRepository::class)
*/
class UserSettings
{
/**
* @ORM\Id
* @ORM\GeneratedValue
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\Column(type="boolean", nullable=true)
*/
private $canEditCalendarEvents;
/**
* @ORM\Column(type="boolean", nullable=true)
*/
private $canEditStudents;
/**
* @ORM\Column(type="boolean", nullable=true)
*/
private $canViewCandidates;
/**
* @ORM\Column(type="boolean", nullable=true)
*/
private $canEditPayments;
/**
* @ORM\Column(type="boolean", nullable=true)
*/
private $canReviewCandidates;
/**
* @ORM\Column(type="boolean", nullable=true)
*/
private $canViewStudents;
/**
* @ORM\Column(type="boolean", nullable=true)
*/
private $canViewCalendarEvents;
/**
* @ORM\Column(type="boolean", nullable=true)
*/
private $canViewZoomReport;
/**
* @ORM\Column(type="boolean", nullable=true)
*/
private $canViewPaymentsReport;
/**
* @ORM\Column(type="boolean", nullable=true)
*/
private $canViewStudentsPersonalData;
/**
* @ORM\Column(type="boolean", nullable=true)
*/
private $canViewPayments;
/**
* @ORM\Column(type="boolean", nullable=true)
*/
private $canEditCandidates;
/**
* @ORM\Column(type="boolean", nullable=true)
*/
private $canViewCampaigns;
/**
* @ORM\Column(type="boolean", nullable=true)
*/
private $canViewPaymentRequisites;
/**
* @ORM\Column(type="boolean", nullable=true)
*/
private $canSendCampaigns;
/**
* @ORM\Column(type="boolean", nullable=true)
*/
private $canUseTestFeatures;
/**
* @ORM\Column(type="boolean", nullable=true)
*/
private $canRemovePayments;
/**
* @ORM\Column(type="boolean", nullable=true)
*/
private $canCompareTable;
public function getId(): ?int
{
return $this->id;
}
public function isCanEditCalendarEvents(): ?bool
{
return $this->canEditCalendarEvents;
}
public function setCanEditCalendarEvents(?bool $canEditCalendarEvents): self
{
$this->canEditCalendarEvents = $canEditCalendarEvents;
return $this;
}
public function isCanEditStudents(): ?bool
{
return $this->canEditStudents;
}
public function setCanEditStudents(?bool $canEditStudents): self
{
$this->canEditStudents = $canEditStudents;
return $this;
}
public function isCanViewCandidates(): ?bool
{
return $this->canViewCandidates;
}
public function setCanViewCandidates(?bool $canViewCandidates): self
{
$this->canViewCandidates = $canViewCandidates;
return $this;
}
public function isCanEditPayments(): ?bool
{
return $this->canEditPayments;
}
public function setCanEditPayments(?bool $canEditPayments): self
{
$this->canEditPayments = $canEditPayments;
return $this;
}
public function isCanReviewCandidates(): ?bool
{
return $this->canReviewCandidates;
}
public function setCanReviewCandidates(?bool $canReviewCandidates): self
{
$this->canReviewCandidates = $canReviewCandidates;
return $this;
}
public function isCanViewStudents(): ?bool
{
return $this->canViewStudents;
}
public function setCanViewStudents(?bool $canViewStudents): self
{
$this->canViewStudents = $canViewStudents;
return $this;
}
public function isCanViewCalendarEvents(): ?bool
{
return $this->canViewCalendarEvents;
}
public function setCanViewCalendarEvents(?bool $canViewCalendarEvents): self
{
$this->canViewCalendarEvents = $canViewCalendarEvents;
return $this;
}
public function isCanViewZoomReport(): ?bool
{
return $this->canViewZoomReport;
}
public function setCanViewZoomReport(?bool $canViewZoomReport): self
{
$this->canViewZoomReport = $canViewZoomReport;
return $this;
}
public function isCanViewPaymentsReport(): ?bool
{
return $this->canViewPaymentsReport;
}
public function setCanViewPaymentsReport(?bool $canViewPaymentsReport): self
{
$this->canViewPaymentsReport = $canViewPaymentsReport;
return $this;
}
public function isCanViewStudentsPersonalData(): ?bool
{
return $this->canViewStudentsPersonalData;
}
public function setCanViewStudentsPersonalData(?bool $canViewStudentsPersonalData): self
{
$this->canViewStudentsPersonalData = $canViewStudentsPersonalData;
return $this;
}
public function isCanViewPayments(): ?bool
{
return $this->canViewPayments;
}
public function setCanViewPayments(?bool $canViewPayments): self
{
$this->canViewPayments = $canViewPayments;
return $this;
}
public function setPermission(string $key, bool $value): self
{
$this->$key = $value;
return $this;
}
public function getPermission(string $key): bool
{
return $this->$key ?? false;
}
public function getAllPermissionsGrouped(array $options = null): array
{
$options = array_merge([
'grantedOnly' => false,
], $options ?? []);
$data = [];
foreach (PermissionGroup::getAsArray() as $group) {
$data[$group] = [
"text" => PermissionGroup::getText($group),
"permissions" => [],
];
foreach (Permission::getAsArray() as $permission) {
if (PermissionGroup::getGroup($permission) === $group) {
if ($options['grantedOnly'] && !$this->getPermission($permission)) {
continue;
}
$data[$group]["permissions"][$permission] = [
"text" => Permission::getText($permission),
"value" => $this->getPermission($permission),
"shortText" => Permission::getShortText($permission),
];
}
}
}
return $data;
}
public function isCanEditCandidates(): ?bool
{
return $this->canEditCandidates;
}
public function setCanEditCandidates(?bool $canEditCandidates): self
{
$this->canEditCandidates = $canEditCandidates;
return $this;
}
public function isCanViewCampaigns(): ?bool
{
return $this->canViewCampaigns;
}
public function setCanViewCampaigns(?bool $canViewCampaigns): self
{
$this->canViewCampaigns = $canViewCampaigns;
return $this;
}
public function isCanViewPaymentRequisites(): ?bool
{
return $this->canViewPaymentRequisites;
}
public function setCanViewPaymentRequisites(?bool $canViewPaymentRequisites): self
{
$this->canViewPaymentRequisites = $canViewPaymentRequisites;
return $this;
}
public function isCanSendCampaigns(): ?bool
{
return $this->canSendCampaigns;
}
public function setCanSendCampaigns(?bool $canSendCampaigns): self
{
$this->canSendCampaigns = $canSendCampaigns;
return $this;
}
public function isCanUseTestFeatures(): ?bool
{
return $this->canUseTestFeatures;
}
public function setCanUseTestFeatures(?bool $canUseTestFeatures): self
{
$this->canUseTestFeatures = $canUseTestFeatures;
return $this;
}
public function isCanRemovePayments(): ?bool
{
return $this->canRemovePayments;
}
public function setCanRemovePayments(?bool $canRemovePayments): self
{
$this->canRemovePayments = $canRemovePayments;
return $this;
}
public function isCanCompareTable(): ?bool
{
return $this->canCompareTable;
}
public function setCanCompareTable(?bool $canCompareTable): self
{
$this->canCompareTable = $canCompareTable;
return $this;
}
}