src/Entity/Student.php line 26

Open in your IDE?
  1. <?php
  2. namespace App\Entity;
  3. use App\Entity\ClassRoom;
  4. use App\Entity\Mark;
  5. use App\Entity\Payment;
  6. use Doctrine\DBAL\Types\Types;
  7. use Doctrine\ORM\Mapping as ORM;
  8. use App\Entity\Traits\TimeStampable;
  9. use App\Repository\StudentRepository;
  10. use App\Entity\Traits\HasUploadableField;
  11. use Doctrine\Common\Collections\Collection;
  12. use Doctrine\Common\Collections\ArrayCollection;
  13. use Vich\UploaderBundle\Mapping\Annotation as Vich;
  14. use Symfony\Component\Validator\Constraints as Assert;
  15. use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
  16. /**
  17.  * @ORM\Entity(repositoryClass=StudentRepository::class)
  18.  * @UniqueEntity(fields={"matricule"}, message="There is already an account with this matricule")
  19.  * @ORM\HasLifecycleCallbacks
  20.  * @Vich\Uploadable
  21.  * 
  22.  */
  23. class Student
  24. {
  25.     use TimeStampable;
  26.     use HasUploadableField;
  27.     /**
  28.      * @ORM\Id
  29.      * @ORM\GeneratedValue
  30.      * @ORM\Column(type="integer")
  31.      */
  32.     private $id;
  33.     /**
  34.      * NOTE: This is not a mapped field of entity metadata, just a simple property.
  35.      * 
  36.      * @Vich\UploadableField(mapping="student_image", fileNameProperty="imageName")
  37.      * @Assert\File(
  38.      *     maxSize = "6024k",
  39.      *     mimeTypes = {"image/bmp", "image/gif", "image/x-icon", "image/jpeg", "image/png", "image/svg+xml"},
  40.      *     mimeTypesMessage = "Please upload a valid image(bmp,gif,jpg,jpeg,png,svg)"
  41.      * )
  42.      * 
  43.      * @var File|null
  44.      */
  45.     private $imageFile;
  46.     /**
  47.      * @ORM\Column(type="string", length=255)
  48.      */
  49.     private $matricule;
  50.     /**
  51.      * @var string
  52.      *
  53.      * @ORM\Column(name="firstname", type="string", length=255, nullable=true)
  54.      */
  55.     private $firstname;
  56.     /**
  57.      * @var string
  58.      *
  59.      * @ORM\Column(name="lastname", type="string", length=255)
  60.      */
  61.     private $lastname;
  62.     /**
  63.      * @var string
  64.      *
  65.      * @ORM\Column(name="particular_disease", type="string", length=255, nullable=true)
  66.      */
  67.     private $particularDisease;
  68.     /**
  69.      * @var string
  70.      *
  71.      * @ORM\Column(name="father_name", type="string", length=255)
  72.      */
  73.     private $fatherName;
  74.     /**
  75.      * @var string
  76.      *
  77.      * @ORM\Column(name="mother_name", type="string", length=255)
  78.      */
  79.     private $motherName;
  80.     /**
  81.      * @var string
  82.      *
  83.      * @ORM\Column(name="primary_contact", type="string", length=255, nullable=true)
  84.      */
  85.     private $primaryContact;
  86.     /**
  87.      * @var string
  88.      *
  89.      * @ORM\Column(name="residence", type="string", length=255, nullable=true)
  90.      */
  91.     private $residence;
  92.     /**
  93.      * @var string
  94.      *
  95.      * @ORM\Column(name="secondary_contact", type="string", length=255, nullable=true)
  96.      */
  97.     private $secondaryContact;
  98.     /**
  99.      * @var string
  100.      *
  101.      * @ORM\Column(name="other_informations", type="text", nullable=true)
  102.      */
  103.     private $otherInformations;
  104.     /**
  105.      * @var \DateTime
  106.      *
  107.      * @ORM\Column(name="birthday", type="date", nullable=false)
  108.      */
  109.     private $birthday;
  110.     /** @ORM\Column(name="gender", nullable=false, unique=false, length=10)
  111.      * @Assert\Choice(
  112.      * choices = { "0", "1" },
  113.      * message = "précisez le sexe")
  114.      */
  115.     private $gender;
  116.     /**
  117.      * @var string
  118.      *
  119.      * @ORM\Column(name="birthplace", type="string", length=255)
  120.      */
  121.     private $birthplace;
  122.     /**
  123.      * @var boolean
  124.      *
  125.      * @ORM\Column(name="enrolled", type="boolean", options={"default":false})
  126.      */
  127.     private $enrolled false;
  128.     /**
  129.      * @ORM\OneToMany(targetEntity=Subscription::class, mappedBy="student")
  130.      */
  131.     private $subscriptions;
  132.     /**
  133.      * @ORM\OneToMany(targetEntity=Payment::class, mappedBy="student",cascade={"persist"})
  134.      * @ORM\JoinColumn(nullable=true)
  135.      *
  136.      * */
  137.     private $payments;
  138.   
  139.     /**
  140.      * @ORM\ManyToOne(targetEntity=ClassRoom::class)
  141.      * @ORM\JoinColumn(nullable=true)
  142.      */
  143.     private $entryClass;
  144.     /**
  145.      * Get updated
  146.      *
  147.      * @return \DateTime
  148.      */
  149.     public function getUpdated()
  150.     {
  151.         return $this->updated;
  152.     }
  153.     public function getId(): ?int
  154.     {
  155.         return $this->id;
  156.     }
  157.     /**
  158.      *
  159.      * @return string
  160.      */
  161.     public function __toString()
  162.     {
  163.         $lastname = (is_null($this->getLastName())) ? "" $this->getLastName();
  164.         $firstname = (is_null($this->getFirstName())) ? "" $this->getFirstName();
  165.         $matricule = (is_null($this->getMatricule())) ? "" $this->getMatricule();
  166.         return  $lastname " " $firstname " " $matricule;
  167.     }
  168.     
  169.     /**
  170.      *
  171.      * @return string
  172.      */
  173.     public function fullName()
  174.     {
  175.         $lastname = (is_null($this->getLastName())) ? "" $this->getLastName();
  176.         $firstname = (is_null($this->getFirstName())) ? "" $this->getFirstName();
  177.         return  $lastname " " $firstname ;
  178.     }
  179.     /**
  180.      * Set matricule
  181.      *
  182.      * @param string $matricule
  183.      *
  184.      * @return Student
  185.      */
  186.     public function setMatricule($matricule)
  187.     {
  188.         $this->matricule $matricule;
  189.         return $this;
  190.     }
  191.     /**
  192.      * Get matricule
  193.      *
  194.      * @return string
  195.      */
  196.     public function getMatricule()
  197.     {
  198.         return $this->matricule;
  199.     }
  200.     /**
  201.      * Set particularDisease
  202.      *
  203.      * @param string $particularDisease
  204.      *
  205.      * @return Student
  206.      */
  207.     public function setParticularDisease($particularDisease)
  208.     {
  209.         $this->particularDisease $particularDisease;
  210.         return $this;
  211.     }
  212.     /**
  213.      * Get particularDisease
  214.      *
  215.      * @return string
  216.      */
  217.     public function getParticularDisease()
  218.     {
  219.         return $this->particularDisease;
  220.     }
  221.     /**
  222.      * Set fatherName
  223.      *
  224.      * @param string $fatherName
  225.      *
  226.      * @return Student
  227.      */
  228.     public function setFatherName($fatherName)
  229.     {
  230.         $this->fatherName $fatherName;
  231.         return $this;
  232.     }
  233.     /**
  234.      * Get fatherName
  235.      *
  236.      * @return string
  237.      */
  238.     public function getFatherName()
  239.     {
  240.         return $this->fatherName;
  241.     }
  242.     /**
  243.      * Set motherName
  244.      *
  245.      * @param string $motherName
  246.      *
  247.      * @return Student
  248.      */
  249.     public function setMotherName($motherName)
  250.     {
  251.         $this->motherName $motherName;
  252.         return $this;
  253.     }
  254.     /**
  255.      * Get motherName
  256.      *
  257.      * @return string
  258.      */
  259.     public function getMotherName()
  260.     {
  261.         return $this->motherName;
  262.     }
  263.     /**
  264.      * Set primaryContact
  265.      *
  266.      * @param string $primaryContact
  267.      *
  268.      * @return Student
  269.      */
  270.     public function setPrimaryContact($primaryContact)
  271.     {
  272.         $this->primaryContact $primaryContact;
  273.         return $this;
  274.     }
  275.     /**
  276.      * Get primaryContact
  277.      *
  278.      * @return string
  279.      */
  280.     public function getPrimaryContact()
  281.     {
  282.         return $this->primaryContact;
  283.     }
  284.     /**
  285.      * Set secondaryContact
  286.      *
  287.      * @param string $secondaryContact
  288.      *
  289.      * @return Student
  290.      */
  291.     public function setSecondaryContact($secondaryContact)
  292.     {
  293.         $this->secondaryContact $secondaryContact;
  294.         return $this;
  295.     }
  296.     /**
  297.      * Get secondaryContact
  298.      *
  299.      * @return string
  300.      */
  301.     public function getSecondaryContact()
  302.     {
  303.         return $this->secondaryContact;
  304.     }
  305.     /**
  306.      * Set otherInformations
  307.      *
  308.      * @param string $otherInformations
  309.      *
  310.      * @return Student
  311.      */
  312.     public function setOtherInformations($otherInformations)
  313.     {
  314.         $this->otherInformations $otherInformations;
  315.         return $this;
  316.     }
  317.     /**
  318.      * Get otherInformations
  319.      *
  320.      * @return string
  321.      */
  322.     public function getOtherInformations()
  323.     {
  324.         return $this->otherInformations;
  325.     }
  326.     /**
  327.      * Set gender
  328.      *
  329.      * @param string $gender
  330.      *
  331.      * @return Student
  332.      */
  333.     public function setGender($gender)
  334.     {
  335.         $this->gender $gender;
  336.         return $this;
  337.     }
  338.     /**
  339.      * Get gender
  340.      *
  341.      * @return string
  342.      */
  343.     public function getGender()
  344.     {
  345.         return $this->gender;
  346.     }
  347.     /**
  348.      * Set birthplace
  349.      *
  350.      * @param string $birthplace
  351.      *
  352.      * @return Student
  353.      */
  354.     public function setBirthplace($birthplace)
  355.     {
  356.         $this->birthplace $birthplace;
  357.         return $this;
  358.     }
  359.     /**
  360.      * Get birthplace
  361.      *
  362.      * @return string
  363.      */
  364.     public function getBirthplace()
  365.     {
  366.         return $this->birthplace;
  367.     }
  368.     /**
  369.      * Set level
  370.      *
  371.      * @param \AppBundle\Entity\Level $level
  372.      *
  373.      * @return Student
  374.      */
  375.     public function setLevel(Level $level)
  376.     {
  377.         $this->level $level;
  378.         return $this;
  379.     }
  380.     /**
  381.      * Get level
  382.      *
  383.      * @return \AppBundle\Entity\Level
  384.      */
  385.     public function getLevel()
  386.     {
  387.         return $this->level;
  388.     }
  389.     /**
  390.      * Set updated
  391.      *
  392.      * @param \DateTime $updated
  393.      *
  394.      * @return Student
  395.      */
  396.     public function setUpdated($updated)
  397.     {
  398.         $this->updated $updated;
  399.         return $this;
  400.     }
  401.     /**
  402.      * Class where the student is enrolled in a given school year
  403.      *
  404.      * @return ClassRoom
  405.      */
  406.     public function getClassRoom(SchoolYear $year)
  407.     {
  408.         $subscribtion $em->getRepository('AppBundle:Subscription')->findBy(array('schoolYear' => $year'student' => $std));
  409.         return $subscribtion->getClassRoom();
  410.     }
  411.      /**
  412.      * Tuition fees already paid by the student in a given school year
  413.      *
  414.      * @return int
  415.      */
  416.     public function getPaymentsSum(SchoolYear $year)
  417.     {
  418.         $sum 0;
  419.         foreach ($this->payments as $p) {
  420.             if($p->getSchoolYear() == $year){
  421.                  $sum += $p->getAmount();
  422.             }
  423.         }
  424.         return $sum;
  425.     }
  426.     /**
  427.      * Set birthday
  428.      *
  429.      * @param \DateTime $birthday
  430.      *
  431.      * @return Student
  432.      */
  433.     public function setBirthday($birthday)
  434.     {
  435.         $this->birthday $birthday;
  436.         return $this;
  437.     }
  438.     /**
  439.      * Get birthday
  440.      *
  441.      * @return \DateTime
  442.      */
  443.     public function getBirthday()
  444.     {
  445.         return $this->birthday;
  446.     }
  447.     /**
  448.      * Set firstname
  449.      *
  450.      * @param string $firstname
  451.      *
  452.      * @return Student
  453.      */
  454.     public function setFirstname($firstname)
  455.     {
  456.         $this->firstname $firstname;
  457.         return $this;
  458.     }
  459.     /**
  460.      * Get firstname
  461.      *
  462.      * @return string
  463.      */
  464.     public function getFirstname()
  465.     {
  466.         return $this->firstname;
  467.     }
  468.     /**
  469.      * Set lastname
  470.      *
  471.      * @param string $lastname
  472.      *
  473.      * @return Student
  474.      */
  475.     public function setLastname($lastname)
  476.     {
  477.         $this->lastname $lastname;
  478.         return $this;
  479.     }
  480.     /**
  481.      * Get lastname
  482.      *
  483.      * @return string
  484.      */
  485.     public function getLastname()
  486.     {
  487.         return $this->lastname;
  488.     }
  489.     /**
  490.      * Constructor
  491.      */
  492.     public function __construct()
  493.     {
  494.         $this->setEnrolled(false);
  495.         $this->marks = new \Doctrine\Common\Collections\ArrayCollection();
  496.         $this->subscriptions = new \Doctrine\Common\Collections\ArrayCollection();
  497.         $this->payments = new ArrayCollection();
  498.     }
  499.     public function addMark(Mark $mark)
  500.     {
  501.         $this->marks[] = $mark;
  502.         return $this;
  503.     }
  504.     public function removeMark(Mark $mark)
  505.     {
  506.         $this->marks->removeElement($mark);
  507.     }
  508.     /**
  509.      * Get marks
  510.      *
  511.      * @return \Doctrine\Common\Collections\Collection
  512.      */
  513.     public function getMarks()
  514.     {
  515.         return $this->marks;
  516.     }
  517.     /**
  518.      * Set profileImagePath
  519.      *
  520.      * @param string $profileImagePath
  521.      *
  522.      * @return Student
  523.      */
  524.     public function setProfileImagePath($profileImagePath)
  525.     {
  526.         $this->profileImagePath $profileImagePath;
  527.         return $this;
  528.     }
  529.     /**
  530.      * Get profileImagePath
  531.      *
  532.      * @return string
  533.      */
  534.     public function getProfileImagePath()
  535.     {
  536.         return $this->profileImagePath;
  537.     }
  538.     /**
  539.      * Set residence
  540.      *
  541.      * @param string $residence
  542.      *
  543.      * @return Student
  544.      */
  545.     public function setResidence($residence)
  546.     {
  547.         $this->residence $residence;
  548.         return $this;
  549.     }
  550.     /**
  551.      * Get residence
  552.      *
  553.      * @return string
  554.      */
  555.     public function getResidence()
  556.     {
  557.         return $this->residence;
  558.     }
  559.     /**
  560.      * @return Collection|Subscription[]
  561.      */
  562.     public function getSubscriptions(): Collection
  563.     {
  564.         return $this->subscriptions;
  565.     }
  566.     public function addSubscription(Subscription $subscription): self
  567.     {
  568.         if (!$this->subscriptions->contains($subscription)) {
  569.             $this->subscriptions[] = $subscription;
  570.             $subscription->setStudent($this);
  571.         }
  572.         return $this;
  573.     }
  574.     public function removeSubscription(Subscription $subscription): self
  575.     {
  576.         if ($this->subscriptions->removeElement($subscription)) {
  577.             // set the owning side to null (unless already changed)
  578.             if ($subscription->getStudent() === $this) {
  579.                 $subscription->setStudent(null);
  580.             }
  581.         }
  582.         return $this;
  583.     }
  584.     /**
  585.      * Set enrolled
  586.      *
  587.      * @param boolean $enrolled
  588.      *
  589.      * @return Student
  590.      */
  591.     public function setEnrolled($enrolled)
  592.     {
  593.         $this->enrolled $enrolled;
  594.         return $this;
  595.     }
  596.     /**
  597.      * Get enrolled
  598.      *
  599.      * @return boolean
  600.      */
  601.     public function getEnrolled()
  602.     {
  603.         return $this->enrolled;
  604.     }
  605.     public function addPayment(Payment $payment)
  606.     {
  607.         $this->payments[] = $payment;
  608.         return $this;
  609.     }
  610.     public function removePayment(Payment $payment)
  611.     {
  612.         $this->payments->removeElement($payment);
  613.     }
  614.     /**
  615.      * Get payments
  616.      *
  617.      * @return \Doctrine\Common\Collections\Collection
  618.      */
  619.     public function getPayments()
  620.     {
  621.         return $this->payments;
  622.     }
  623.     public function isEnrolled(): ?bool
  624.     {
  625.         return $this->enrolled;
  626.     }
  627.     public function getEntryClass(): ?ClassRoom
  628.     {
  629.         return $this->entryClass;
  630.     }
  631.     public function setEntryClass(?ClassRoom $entryClass): static
  632.     {
  633.         $this->entryClass $entryClass;
  634.         return $this;
  635.     }
  636.  
  637. }