<?php
namespace App\Entity;
use ApiPlatform\Core\Annotation\ApiFilter;
use ApiPlatform\Core\Annotation\ApiResource;
use ApiPlatform\Core\Annotation\ApiSubresource;
use ApiPlatform\Core\Bridge\Doctrine\Orm\Filter\BooleanFilter;
use ApiPlatform\Core\Bridge\Doctrine\Orm\Filter\DateFilter;
use ApiPlatform\Core\Bridge\Doctrine\Orm\Filter\OrderFilter;
use ApiPlatform\Core\Bridge\Doctrine\Orm\Filter\SearchFilter;
use ApiPlatform\Core\Bridge\Doctrine\Orm\Filter\ExistsFilter;
use ApiPlatform\Core\Serializer\Filter\GroupFilter;
use ApiPlatform\Core\Serializer\Filter\PropertyFilter;
use App\Repository\TeamplayChallengeRepository;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
use Gedmo\Mapping\Annotation as Gedmo;
use Symfony\Component\HttpFoundation\File\UploadedFile;
use Symfony\Component\Serializer\Annotation\Groups;
use Symfony\Component\Validator\Constraints as Assert;
use App\Entity\KinestexExercise;
/**
* @ApiResource(
* normalizationContext={
* "groups"={"teamplay_challenge:read"}
* },
* denormalizationContext={
* "groups"={"teamplay_challenge:write"}
* },
* itemOperations={
* "get"={
* "security"="is_granted('ROLE_USER')"
* },
* "patch"={
* "security"="is_granted('ROLE_ADMIN')"
* },
* "delete"={
* "security"="is_granted('ROLE_ADMIN')"
* }
* },
* collectionOperations={
* "get"={
* "security"="is_granted('ROLE_USER')"
* },
* "get_client_teamplay_collected"={
* "security"="is_granted('ROLE_CLIENT')",
* "method"="GET",
* "description"="Get completed TeamplayChallenge by a Client",
* "controller"="App\Controller\Api\TeamplayChallengeController::getClientTeamplayChallengeCompleted"
* },
* "post"={
* "security"="is_granted('ROLE_ADMIN')"
* },
* "post_update"={
* "security"="is_granted('ROLE_ADMIN')",
* "path"="/teamplay_challenges/{id}",
* "description"="Update a TeamplayChallenge with method POST (using content-type: 'multipart')",
* "method"="POST",
* "controller"="App\Controller\Api\TeamplayChallengeController::update"
* }
* }
* )
* @ORM\Entity(repositoryClass=TeamplayChallengeRepository::class)
* @ApiFilter(SearchFilter::class,
* strategy="exact",
* properties={"active", "teamplay.id", "name": "partial", "type", "company.id", "isTemplate"}
* )
* @ApiFilter(ExistsFilter::class, properties={"teamplay", "company", "video", "survey", "type"})
* @ApiFilter(BooleanFilter::class, properties={"active", "isTemplate"})
* @ApiFilter(DateFilter::class, properties={"dateStart", "dateEnd"})
* @ApiFilter(OrderFilter::class)
* @ApiFilter(GroupFilter::class,
* arguments={
* "parameterName": "groups",
* "overrideDefaultGroups": true
* }
* )
* @ApiFilter(PropertyFilter::class,
* arguments={
* "parameterName"="fields",
* "overrideDefaultProperties"=true
* }
* )
*/
class TeamplayChallenge
{
const TYPE_STEP = "step";
const TYPE_BIKE = "bike";
const TYPE_RUN = "run";
const TYPE_RECURRENT_STEP = "recurrent_step";
const TYPE_RECURRENT_BIKE = "recurrent_bike";
const TYPE_RECURRENT_RUN = "recurrent_run";
const TYPE_RECURRENT_RANKING_AWARD = "recurrent_ranking_award";
const TYPE_VIDEO_PHYSICAL = "video_physical";
const TYPE_VIDEO_INTERVIEW = "video_interview";
const TYPE_QUIZ = "quiz";
const TYPE_KINESTEX = "kinestex";
const TYPE_RECURRENT_KINESTEX = 'recurrent_kinestex';
const TYPE_DAILY_REWARD = "daily_reward";
const TYPES = [
self::TYPE_STEP,
self::TYPE_BIKE,
self::TYPE_RUN,
self::TYPE_RECURRENT_STEP,
self::TYPE_RECURRENT_BIKE,
self::TYPE_RECURRENT_RUN,
self::TYPE_RECURRENT_RANKING_AWARD,
self::TYPE_VIDEO_PHYSICAL,
self::TYPE_VIDEO_INTERVIEW,
self::TYPE_QUIZ,
self::TYPE_KINESTEX,
self::TYPE_DAILY_REWARD,
];
const STATUS_IN_PROGRESS = "in_progress";
const STATUS_IN_COMING = "in_coming";
const STATUS_PASSED = "passed";
const STATUS = [
self::STATUS_IN_PROGRESS,
self::STATUS_IN_COMING,
self::STATUS_PASSED
];
const EVERY_TYPE_HOUR = "hour";
const EVERY_TYPE_DAY = "day";
const EVERY_TYPE_WEEK = "week";
const EVERY_TYPE_MONTH = "month";
const EVERY_TYPE_YEAR = "year";
const EVERY_DATE_TYPES = [
self::EVERY_TYPE_HOUR,
self::EVERY_TYPE_DAY,
self::EVERY_TYPE_WEEK,
self::EVERY_TYPE_MONTH,
self::EVERY_TYPE_YEAR,
];
/**
* @ORM\Id
* @ORM\GeneratedValue
* @ORM\Column(type="integer")
* @Groups({"teamplay_challenge:read:id", "teamplay_challenge:read", "teamplay_challenge_simple", "teamplay:read", "challenge_form"})
*/
private $id;
/**
* @ORM\Column(type="string", length=255, nullable=true)
* @Groups({"teamplay_challenge:read:name", "teamplay_challenge:read", "teamplay_challenge:write", "teamplay_challenge_simple", "teamplay:read", "challenge_form"})
*/
private $name;
/**
* @ORM\Column(type="text", nullable=true)
* @Groups({"teamplay_challenge:read:description", "teamplay_challenge:read", "teamplay_challenge:write", "teamplay_challenge_simple", "teamplay:read"})
*/
private $description;
/**
* @ORM\Column(type="string", length=255, nullable=true)
* @Assert\Choice(choices=self::TYPES)
* @Groups({"teamplay_challenge:read:type", "teamplay_challenge:read", "teamplay_challenge:write", "teamplay_challenge_simple", "teamplay:read"})
*/
private $type;
/**
* @ORM\ManyToOne(targetEntity=MediaObject::class)
* @Groups({"teamplay_challenge:read:picture", "teamplay_challenge:read", "teamplay_challenge:write", "teamplay_challenge_simple", "teamplay:read"})
*/
private $picture;
/**
* @ORM\Column(type="integer", nullable=true)
* @Groups({"teamplay_challenge:read:duration", "teamplay_challenge:read", "teamplay_challenge:write", "teamplay_challenge_simple", "teamplay:read"})
*/
private $duration;
/**
* @ORM\Column(type="integer", nullable=true)
* @Groups({"teamplay_challenge:read:pointAmount", "teamplay_challenge:read", "teamplay_challenge:write", "teamplay_challenge_simple", "teamplay:read"})
*/
private $pointAmount;
/**
* @ORM\Column(type="integer", nullable=true)
* @Groups({"teamplay_challenge:read:stepAmount", "teamplay_challenge:read", "teamplay_challenge:write", "teamplay_challenge_simple", "teamplay:read"})
*/
private $stepAmount;
/**
* @ORM\Column(type="integer", nullable=true)
* @Groups({"teamplay_challenge:read:dayStart", "teamplay_challenge:read", "teamplay_challenge:write", "teamplay_challenge_simple", "teamplay:read"})
*/
private $dayStart;
/**
* @ORM\Column(type="integer", nullable=true)
* @Groups({"teamplay_challenge:read:dayEnd", "teamplay_challenge:read", "teamplay_challenge:write", "teamplay_challenge_simple", "teamplay:read"})
*/
private $dayEnd;
/**
* @ORM\Column(type="datetime", nullable=true)
* @Groups({"teamplay_challenge:read:dateStart", "teamplay_challenge:read", "teamplay_challenge:write", "teamplay_challenge_simple", "teamplay:read"})
*/
private $dateStart;
/**
* @ORM\Column(type="datetime", nullable=true)
* @Groups({"teamplay_challenge:read:dateEnd", "teamplay_challenge:read", "teamplay_challenge:write", "teamplay_challenge_simple", "teamplay:read"})
*/
private $dateEnd;
/**
* @ORM\ManyToOne(targetEntity=Video::class, inversedBy="teamplayChallenges")
* @Groups({"teamplay_challenge:read:video", "teamplay_challenge:read", "teamplay_challenge:write", "teamplay_challenge_simple", "teamplay:read"})
*/
private $video;
/**
* @ORM\ManyToOne(targetEntity=Survey::class, inversedBy="teamplayChallenges", cascade={"persist", "refresh", "remove"})
* @Groups({"teamplay_challenge:read:survey", "teamplay_challenge:read", "teamplay_challenge:write", "teamplay_challenge_simple", "teamplay:read"})
*/
private $survey;
/**
* @ORM\Column(type="boolean", nullable=true, options={"default": "1"})
* @Groups({"teamplay_challenge:read:isTemplate", "teamplay_challenge:read", "teamplay_challenge:write", "teamplay_challenge_simple", "teamplay:read"})
*/
private $isTemplate = true;
/**
* @ORM\Column(type="integer", nullable=true)
* @Groups({"teamplay_challenge:read:awardAmount", "teamplay_challenge:read", "teamplay_challenge:write", "teamplay_challenge_simple", "teamplay:read"})
*/
private $awardAmount;
/**
* @ORM\Column(type="boolean", options={"default": "0"})
* @Groups({"teamplay_challenge:read:isMultipleWinnable", "teamplay_challenge:read", "teamplay_challenge:write", "teamplay_challenge_simple", "teamplay:read"})
*/
private $isMultipleWinnable = false;
/**
* @ORM\Column(type="integer", nullable=true)
* @Groups({"teamplay_challenge:read:everyInt", "teamplay_challenge:read", "teamplay_challenge:write", "teamplay_challenge_simple", "teamplay:read"})
*/
private $everyInt;
/**
* @ORM\Column(type="string", length=255, nullable=true)
* @Groups({"teamplay_challenge:read:everyDateType", "teamplay_challenge:read", "teamplay_challenge:write", "teamplay_challenge_simple", "teamplay:read"})
*/
private $everyDateType;
/**
* @ORM\ManyToOne(targetEntity=TvCompany::class, inversedBy="teamplayChallenges")
*/
private $tvCompany;
/**
* @ORM\ManyToOne(targetEntity=Company::class, inversedBy="teamplayChallenges")
* @Groups({"teamplay_challenge:read:company", "teamplay_challenge:read", "teamplay_challenge:write", "teamplay_challenge_simple", "teamplay:read"})
*/
private $company;
/**
* @ORM\Column(type="boolean", nullable=true, options={"default": "1"})
* @Groups({"teamplay_challenge:read:active", "teamplay_challenge:read", "teamplay_challenge:write", "teamplay_challenge_simple", "teamplay:read"})
*/
private $active = true;
/**
* @ORM\Column(type="datetime", options={"default": "CURRENT_TIMESTAMP"})
* @Gedmo\Timestampable(on="create")
* @Groups({"teamplay_challenge:read:createdAt", "teamplay_challenge:read", "teamplay_challenge_simple"})
*/
private $createdAt;
/**
* @ORM\Column(type="datetime", nullable=true)
* @Gedmo\Timestampable(on="update")
* @Groups({"teamplay_challenge:read:updatedAt", "teamplay_challenge:read", "teamplay_challenge_simple"})
*/
private $updatedAt;
/**
* @ORM\ManyToOne(targetEntity=Teamplay::class, inversedBy="challenges", cascade={"refresh"})
* @Groups({"teamplay_challenge:read:teamplay", "teamplay_challenge:read", "teamplay_challenge:write", "teamplay_challenge_simple"})
*/
private $teamplay;
/**
* @ORM\OneToMany(targetEntity=TeamplayLog::class, mappedBy="teamplayChallenge", cascade={"persist", "refresh", "remove"})
*/
private $teamplayLogs;
/**
* Champ Custom (PostLoad)
* Permet de savoir si le TeamplayChallenge a été complété par le Client connecté
* @var ?bool
* @Groups({"teamplay_challenge:read:isCompleted", "teamplay_challenge:read"})
*/
public $isCompleted = null;
/**
* Champ Custom (PostLoad)
* Permet de savoir si le Client connecté a récupéré les points du TeamplayChallenge
* @var ?bool
* @Groups({"teamplay_challenge:read:isCollected", "teamplay_challenge:read"})
*/
public $isCollected = null;
/**
* Champ Custom (PostLoad)
* Nombre de pas effectués par le Client connecté durant ce challenge
* @var ?int
* @Groups({"teamplay_challenge:read:userStepsAmount", "teamplay_challenge:read"})
*/
public $userStepsAmount = null;
/**
* Distance en mètres requise pour gagner des points (seuil récurrent vélo)
* @ORM\Column(type="integer", nullable=true)
* @Groups({"teamplay_challenge:read:bikeAmount", "teamplay_challenge:read", "teamplay_challenge:write", "teamplay_challenge_simple", "teamplay:read"})
*/
private $bikeAmount;
/**
* Champ Custom (PostLoad)
* Nombre de mètres parcourus à vélo par le Client connecté durant ce challenge (avec décimales)
* @var ?float
* @Groups({"teamplay_challenge:read:userBikeAmount", "teamplay_challenge:read"})
*/
public $userBikeAmount = null;
/**
* Distance en mètres requise pour gagner des points (seuil récurrent course à pied)
* @ORM\Column(type="integer", nullable=true)
* @Groups({"teamplay_challenge:read:runAmount", "teamplay_challenge:read", "teamplay_challenge:write", "teamplay_challenge_simple", "teamplay:read"})
*/
private $runAmount;
/**
* Champ Custom (PostLoad)
* Nombre de mètres parcourus en course à pied par le Client connecté durant ce challenge (avec décimales)
* @var ?float
* @Groups({"teamplay_challenge:read:userRunAmount", "teamplay_challenge:read"})
*/
public $userRunAmount = null;
/**
* Score KinesteX requis pour valider le challenge (pourcentage de 0 Ã 100)
* @ORM\Column(type="integer", nullable=true)
* @Groups({"teamplay_challenge:read:kinestexAmount", "teamplay_challenge:read", "teamplay_challenge:write", "teamplay_challenge_simple", "teamplay:read"})
*/
private $kinestexAmount;
/**
* Champ Custom (PostLoad)
* Score de précision KinesteX obtenu par le Client connecté durant ce challenge
* @var ?float
* @Groups({"teamplay_challenge:read:userKinestexAmount", "teamplay_challenge:read"})
*/
public $userKinestexAmount = null;
/**
* Champ Custom (PostLoad)
* Nombre total de répétitions effectuées par le Client durant ce challenge KinesteX
* @var ?int
* @Groups({"teamplay_challenge:read:userKinestexReps", "teamplay_challenge:read"})
*/
public $userKinestexReps = null;
/**
* Champ Custom (PostLoad)
* Durée totale en secondes effectuée par le Client durant ce challenge KinesteX
* @var ?int
* @Groups({"teamplay_challenge:read:userKinestexDuration", "teamplay_challenge:read"})
*/
public $userKinestexDuration = null;
/**
* Champ Custom (PostLoad)
* Nombre total de sessions KinesteX effectuées par le Client durant ce challenge
* @var ?int
* @Groups({"teamplay_challenge:read:userKinestexSessions", "teamplay_challenge:read"})
*/
public $userKinestexSessions = null;
/**
* Champ Custom (PostLoad)
* Nombre de sessions KinesteX complétées (80%+) par le Client durant ce challenge
* @var ?int
* @Groups({"teamplay_challenge:read:userKinestexCompletedSessions", "teamplay_challenge:read"})
*/
public $userKinestexCompletedSessions = null;
/**
* Champ Custom (PostLoad)
* Pourcentage moyen de complétion des sessions KinesteX du Client durant ce challenge
* @var ?float
* @Groups({"teamplay_challenge:read:userKinestexAvgAccuracy", "teamplay_challenge:read"})
*/
public $userKinestexAvgAccuracy = null;
/**
* Points attribués pour un score KinesteX entre 10% et 40%
* @ORM\Column(type="integer", nullable=true)
* @Groups({"teamplay_challenge:read:kinestexPointsLow", "teamplay_challenge:read", "teamplay_challenge:write", "teamplay_challenge_simple", "teamplay:read"})
*/
private $kinestexPointsLow;
/**
* Points attribués pour un score KinesteX entre 40% et 70%
* @ORM\Column(type="integer", nullable=true)
* @Groups({"teamplay_challenge:read:kinestexPointsMedium", "teamplay_challenge:read", "teamplay_challenge:write", "teamplay_challenge_simple", "teamplay:read"})
*/
private $kinestexPointsMedium;
/**
* Points attribués pour un score KinesteX entre 70% et 100%
* @ORM\Column(type="integer", nullable=true)
* @Groups({"teamplay_challenge:read:kinestexPointsHigh", "teamplay_challenge:read", "teamplay_challenge:write", "teamplay_challenge_simple", "teamplay:read"})
*/
private $kinestexPointsHigh;
/**
* Exercice KinesteX associé
* @ORM\ManyToOne(targetEntity=KinestexExercise::class)
* @Groups({"teamplay_challenge:read", "teamplay_challenge:write"})
*/
private $kinestexExercise;
/**
* Objectif de répétitions pour l'exercice KinesteX (si type repetition)
* @ORM\Column(type="integer", nullable=true)
* @Groups({"teamplay_challenge:read", "teamplay_challenge:write"})
*/
private $kinestexRepetitions;
/**
* Objectif de durée en secondes pour l'exercice KinesteX (si type duration)
* @ORM\Column(type="integer", nullable=true)
* @Groups({"teamplay_challenge:read", "teamplay_challenge:write"})
*/
private $kinestexDuration;
/**
* Points attribués pour la récompense quotidienne
* @ORM\Column(type="integer", nullable=true)
* @Groups({"teamplay_challenge:read:dailyRewardPoints", "teamplay_challenge:read", "teamplay_challenge:write", "teamplay_challenge_simple", "teamplay:read"})
*/
private $dailyRewardPoints;
/**
* Heure de base pour l'envoi des notifications (format HH:MM)
* @ORM\Column(type="string", length=5, nullable=true)
* @Groups({"teamplay_challenge:read:notificationBaseTime", "teamplay_challenge:read", "teamplay_challenge:write", "teamplay_challenge_simple", "teamplay:read"})
*/
private $notificationBaseTime;
/**
* Décalage maximum en minutes pour étaler les notifications
* @ORM\Column(type="integer", nullable=true, options={"default": "120"})
* @Groups({"teamplay_challenge:read:notificationMaxOffset", "teamplay_challenge:read", "teamplay_challenge:write", "teamplay_challenge_simple", "teamplay:read"})
*/
private $notificationMaxOffset = 120;
public function __construct()
{
$this->teamplayLogs = new ArrayCollection();
}
public function getId(): ?int
{
return $this->id;
}
public function setId(?int $id): self
{
$this->id = $id;
return $this;
}
public function getName(): ?string
{
return $this->name;
}
public function setName(?string $name): self
{
$this->name = $name;
return $this;
}
public function getDescription(): ?string
{
return $this->description;
}
public function setDescription(?string $description): self
{
$this->description = $description;
return $this;
}
public function getType(): ?string
{
return $this->type;
}
public function setType(?string $type): self
{
$this->type = $type;
return $this;
}
public function getPicture(): ?MediaObject
{
return $this->picture;
}
public function setPicture(?MediaObject $picture): self
{
$this->picture = $picture;
return $this;
}
/**
* @Groups({"teamplay_challenge:write"})
*/
public function setPictureFile($file = null): self
{
if ($file instanceof UploadedFile) {
$picture = empty($this->picture) ? new MediaObject : $this->picture;
$picture->setFile($file);
$this->setPicture($picture);
}
return $this;
}
public function getDuration(): ?int
{
return $this->duration;
}
public function setDuration(?int $duration): self
{
$this->duration = $duration;
return $this;
}
public function getPointAmount(): ?int
{
return $this->pointAmount;
}
public function setPointAmount(?int $pointAmount): self
{
$this->pointAmount = $pointAmount;
return $this;
}
public function getStepAmount(): ?int
{
return $this->stepAmount;
}
public function setStepAmount(?int $stepAmount): self
{
$this->stepAmount = $stepAmount;
return $this;
}
public function getDayStart(): ?int
{
return $this->dayStart;
}
public function setDayStart(?int $dayStart): self
{
$this->dayStart = $dayStart;
return $this;
}
public function getDayEnd(): ?int
{
return $this->dayEnd;
}
public function setDayEnd(?int $dayEnd): self
{
$this->dayEnd = $dayEnd;
return $this;
}
public function getDateStart(): ?\DateTimeInterface
{
return $this->dateStart;
}
public function setDateStart(?\DateTimeInterface $dateStart = null): self
{
$this->dateStart = $dateStart;
return $this;
}
public function getDateEnd(): ?\DateTimeInterface
{
return $this->dateEnd;
}
public function setDateEnd(?\DateTimeInterface $dateEnd): self
{
$this->dateEnd = $dateEnd;
return $this;
}
public function getVideo(): ?Video
{
return $this->video;
}
public function setVideo(?Video $video): self
{
$this->video = $video;
return $this;
}
public function getSurvey(): ?Survey
{
return $this->survey;
}
public function setSurvey(?Survey $survey): self
{
$this->survey = $survey;
return $this;
}
public function isTemplate(): bool
{
return $this->getIsTemplate();
}
public function getIsTemplate(): ?bool
{
return $this->isTemplate;
}
public function setIsTemplate(?bool $isTemplate): self
{
$this->isTemplate = $isTemplate;
return $this;
}
public function getTvCompany(): ?TvCompany
{
return $this->tvCompany;
}
public function setTvCompany(?TvCompany $tvCompany): self
{
$this->tvCompany = $tvCompany;
return $this;
}
public function getCompany(): ?Company
{
return $this->company;
}
public function setCompany(?Company $company): self
{
$this->company = $company;
return $this;
}
public function getTeamplay(): ?Teamplay
{
return $this->teamplay;
}
public function setTeamplay(?Teamplay $teamplay): self
{
$this->teamplay = $teamplay;
return $this;
}
public function getActive(): ?bool
{
return $this->active;
}
public function setActive(?bool $active): self
{
$this->active = $active;
return $this;
}
public function getCreatedAt(): ?\DateTimeInterface
{
return $this->createdAt;
}
public function setCreatedAt(\DateTimeInterface $createdAt): self
{
$this->createdAt = $createdAt;
return $this;
}
public function getUpdatedAt(): ?\DateTimeInterface
{
return $this->updatedAt;
}
public function setUpdatedAt(?\DateTimeInterface $updatedAt): self
{
$this->updatedAt = $updatedAt;
return $this;
}
/**
* @Groups({"teamplay_challenge:read:isInProgress", "teamplay_challenge:read", "teamplay_challenge_simple"})
*/
public function isInProgress(): ?bool
{
$today = new \DateTime("now");
if ($this->getDateStart() <= $today && $this->getDateEnd() > $today) {
return true;
}
return false;
}
/**
* @Groups({"teamplay_challenge:read:isInComing", "teamplay_challenge:read", "teamplay_challenge_simple"})
*/
public function isInComing(): ?bool
{
$today = new \DateTime("now");
if ($this->getDateStart() > $today) {
return true;
}
return false;
}
/**
* @Groups({"teamplay_challenge:read:isPassed", "teamplay_challenge:read", "teamplay_challenge_simple"})
*/
public function isPassed(): ?bool
{
$today = new \DateTime("now");
if ($this->getDateEnd() < $today) {
return true;
}
return false;
}
/**
* @return Collection|TeamplayLog[]
*/
public function getTeamplayLogs(): Collection
{
return $this->teamplayLogs;
}
public function addTeamplayLog(TeamplayLog $teamplayLog): self
{
if (!$this->teamplayLogs->contains($teamplayLog)) {
$this->teamplayLogs[] = $teamplayLog;
$teamplayLog->setTeamplayChallenge($this);
}
return $this;
}
public function removeTeamplayLog(TeamplayLog $teamplayLog): self
{
if ($this->teamplayLogs->removeElement($teamplayLog)) {
if ($teamplayLog->getTeamplayChallenge() === $this) {
$teamplayLog->setTeamplayChallenge(null);
}
}
return $this;
}
public function getAwardAmount(): ?int
{
return $this->awardAmount;
}
public function setAwardAmount(?int $awardAmount): self
{
$this->awardAmount = $awardAmount;
return $this;
}
public function getIsMultipleWinnable(): ?bool
{
return $this->isMultipleWinnable;
}
public function setIsMultipleWinnable(bool $isMultipleWinnable): self
{
$this->isMultipleWinnable = $isMultipleWinnable;
return $this;
}
public function getEveryInt(): ?int
{
return $this->everyInt;
}
public function setEveryInt(?int $everyInt): self
{
$this->everyInt = $everyInt;
return $this;
}
public function getEveryDateType(): ?string
{
return $this->everyDateType;
}
public function setEveryDateType(?string $everyDateType): self
{
$this->everyDateType = $everyDateType;
return $this;
}
public function getBikeAmount(): ?int
{
return $this->bikeAmount;
}
public function setBikeAmount(?int $bikeAmount): self
{
$this->bikeAmount = $bikeAmount;
return $this;
}
public function getRunAmount(): ?int
{
return $this->runAmount;
}
public function setRunAmount(?int $runAmount): self
{
$this->runAmount = $runAmount;
return $this;
}
public function getKinestexAmount(): ?int
{
return $this->kinestexAmount;
}
public function setKinestexAmount(?int $kinestexAmount): self
{
$this->kinestexAmount = $kinestexAmount;
return $this;
}
public function getKinestexPointsLow(): ?int
{
return $this->kinestexPointsLow;
}
public function setKinestexPointsLow(?int $kinestexPointsLow): self
{
$this->kinestexPointsLow = $kinestexPointsLow;
return $this;
}
public function getKinestexPointsMedium(): ?int
{
return $this->kinestexPointsMedium;
}
public function setKinestexPointsMedium(?int $kinestexPointsMedium): self
{
$this->kinestexPointsMedium = $kinestexPointsMedium;
return $this;
}
public function getKinestexPointsHigh(): ?int
{
return $this->kinestexPointsHigh;
}
public function setKinestexPointsHigh(?int $kinestexPointsHigh): self
{
$this->kinestexPointsHigh = $kinestexPointsHigh;
return $this;
}
public function getKinestexExercise(): ?KinestexExercise
{
return $this->kinestexExercise;
}
public function setKinestexExercise(?KinestexExercise $kinestexExercise): self
{
$this->kinestexExercise = $kinestexExercise;
return $this;
}
public function getKinestexRepetitions(): ?int
{
return $this->kinestexRepetitions;
}
public function setKinestexRepetitions(?int $kinestexRepetitions): self
{
$this->kinestexRepetitions = $kinestexRepetitions;
return $this;
}
public function getKinestexDuration(): ?int
{
return $this->kinestexDuration;
}
public function setKinestexDuration(?int $kinestexDuration): self
{
$this->kinestexDuration = $kinestexDuration;
return $this;
}
public function getDailyRewardPoints(): ?int
{
return $this->dailyRewardPoints;
}
public function setDailyRewardPoints(?int $dailyRewardPoints): self
{
$this->dailyRewardPoints = $dailyRewardPoints;
return $this;
}
public function getNotificationBaseTime(): ?string
{
return $this->notificationBaseTime;
}
public function setNotificationBaseTime(?string $notificationBaseTime): self
{
$this->notificationBaseTime = $notificationBaseTime;
return $this;
}
public function getNotificationMaxOffset(): ?int
{
return $this->notificationMaxOffset;
}
public function setNotificationMaxOffset(?int $notificationMaxOffset): self
{
$this->notificationMaxOffset = $notificationMaxOffset;
return $this;
}
}