src/Entity/MonthlyReport.php line 12

Open in your IDE?
  1. <?php
  2. namespace App\Entity;
  3. use App\Repository\MonthlyReportRepository;
  4. use Doctrine\Common\Collections\ArrayCollection;
  5. use Doctrine\Common\Collections\Collection;
  6. use Doctrine\DBAL\Types\Types;
  7. use Doctrine\ORM\Mapping as ORM;
  8. #[ORM\Entity(repositoryClassMonthlyReportRepository::class)]
  9. class MonthlyReport
  10. {
  11.     #[ORM\Id]
  12.     #[ORM\GeneratedValue]
  13.     #[ORM\Column]
  14.     private ?int $id null;
  15.     #[ORM\ManyToOne(inversedBy'monthlyReports')]
  16.     private ?PropertyList $property null;
  17.     #[ORM\OneToMany(mappedBy'monthlyReport'targetEntityUtilities::class)]
  18.     private Collection $monthlyBills;
  19.     #[ORM\Column(typeTypes::DATE_MUTABLEnullabletrue)]
  20.     private ?\DateTimeInterface $periodStart null;
  21.     #[ORM\Column(typeTypes::DATE_MUTABLEnullabletrue)]
  22.     private ?\DateTimeInterface $periodEnd null;
  23.     #[ORM\Column(nullabletrue)]
  24.     private ?\DateTimeImmutable $generatedAt null;
  25.     #[ORM\ManyToOne(inversedBy'monthlyReports')]
  26.     private ?User $generatedBy null;
  27.     #[ORM\Column(length255nullabletrue)]
  28.     private ?string $water null;
  29.     #[ORM\Column(length255nullabletrue)]
  30.     private ?string $gas null;
  31.     #[ORM\Column(length255nullabletrue)]
  32.     private ?string $electricity null;
  33.     #[ORM\Column(length255nullabletrue)]
  34.     private ?string $internet null;
  35.     #[ORM\Column(length255nullabletrue)]
  36.     private ?string $other null;
  37.     #[ORM\Column(length255nullabletrue)]
  38.     private ?string $extra null;
  39.     #[ORM\Column(length255nullabletrue)]
  40.     private ?string $extra2 null;
  41.     #[ORM\Column(length255nullabletrue)]
  42.     private ?string $extra3 null;
  43.     #[ORM\Column(length255nullabletrue)]
  44.     private ?string $extra4 null;
  45.     #[ORM\Column(length255nullabletrue)]
  46.     private ?string $extra5 null;
  47.     #[ORM\Column(length255nullabletrue)]
  48.     private ?string $totalCost null;
  49.     #[ORM\Column(length255nullabletrue)]
  50.     private ?string $RentedRoomsRatio null;
  51.     #[ORM\Column(length255nullabletrue)]
  52.     private ?string $totalRevenue null;
  53.     #[ORM\Column(length255nullabletrue)]
  54.     private ?string $amountPaid null;
  55.     #[ORM\OneToMany(mappedBy'monthlyReport'targetEntityUtilitiesProperty::class)]
  56.     private Collection $utilitiesProperties;
  57.     public function __construct()
  58.     {
  59.         $this->monthlyBills = new ArrayCollection();
  60.         $this->utilitiesProperties = new ArrayCollection();
  61.     }
  62.     public function getId(): ?int
  63.     {
  64.         return $this->id;
  65.     }
  66.     public function getProperty(): ?PropertyList
  67.     {
  68.         return $this->property;
  69.     }
  70.     public function setProperty(?PropertyList $property): self
  71.     {
  72.         $this->property $property;
  73.         return $this;
  74.     }
  75.     /**
  76.      * @return Collection<int, Utilities>
  77.      */
  78.     public function getMonthlyBills(): Collection
  79.     {
  80.         return $this->monthlyBills;
  81.     }
  82.     public function addMonthlyBill(Utilities $monthlyBill): self
  83.     {
  84.         if (!$this->monthlyBills->contains($monthlyBill)) {
  85.             $this->monthlyBills->add($monthlyBill);
  86.             $monthlyBill->setMonthlyReport($this);
  87.         }
  88.         return $this;
  89.     }
  90.     public function removeMonthlyBill(Utilities $monthlyBill): self
  91.     {
  92.         if ($this->monthlyBills->removeElement($monthlyBill)) {
  93.             // set the owning side to null (unless already changed)
  94.             if ($monthlyBill->getMonthlyReport() === $this) {
  95.                 $monthlyBill->setMonthlyReport(null);
  96.             }
  97.         }
  98.         return $this;
  99.     }
  100.     public function getPeriodStart(): ?\DateTimeInterface
  101.     {
  102.         return $this->periodStart;
  103.     }
  104.     public function setPeriodStart(?\DateTimeInterface $periodStart): self
  105.     {
  106.         $this->periodStart $periodStart;
  107.         return $this;
  108.     }
  109.     public function getPeriodEnd(): ?\DateTimeInterface
  110.     {
  111.         return $this->periodEnd;
  112.     }
  113.     public function setPeriodEnd(?\DateTimeInterface $periodEnd): self
  114.     {
  115.         $this->periodEnd $periodEnd;
  116.         return $this;
  117.     }
  118.     public function getGeneratedAt(): ?\DateTimeImmutable
  119.     {
  120.         return $this->generatedAt;
  121.     }
  122.     public function setGeneratedAt(?\DateTimeImmutable $generatedAt): self
  123.     {
  124.         $this->generatedAt $generatedAt;
  125.         return $this;
  126.     }
  127.     public function getGeneratedBy(): ?User
  128.     {
  129.         return $this->generatedBy;
  130.     }
  131.     public function setGeneratedBy(?User $generatedBy): self
  132.     {
  133.         $this->generatedBy $generatedBy;
  134.         return $this;
  135.     }
  136.     public function getWater(): ?string
  137.     {
  138.         return $this->water;
  139.     }
  140.     public function setWater(?string $water): self
  141.     {
  142.         $this->water $water;
  143.         return $this;
  144.     }
  145.     public function getGas(): ?string
  146.     {
  147.         return $this->gas;
  148.     }
  149.     public function setGas(?string $gas): self
  150.     {
  151.         $this->gas $gas;
  152.         return $this;
  153.     }
  154.     public function getElectricity(): ?string
  155.     {
  156.         return $this->electricity;
  157.     }
  158.     public function setElectricity(?string $electricity): self
  159.     {
  160.         $this->electricity $electricity;
  161.         return $this;
  162.     }
  163.     public function getInternet(): ?string
  164.     {
  165.         return $this->internet;
  166.     }
  167.     public function setInternet(?string $internet): self
  168.     {
  169.         $this->internet $internet;
  170.         return $this;
  171.     }
  172.     public function getOther(): ?string
  173.     {
  174.         return $this->other;
  175.     }
  176.     public function setOther(?string $other): self
  177.     {
  178.         $this->other $other;
  179.         return $this;
  180.     }
  181.     public function getExtra(): ?string
  182.     {
  183.         return $this->extra;
  184.     }
  185.     public function setExtra(?string $extra): self
  186.     {
  187.         $this->extra $extra;
  188.         return $this;
  189.     }
  190.     public function getExtra2(): ?string
  191.     {
  192.         return $this->extra2;
  193.     }
  194.     public function setExtra2(?string $extra2): self
  195.     {
  196.         $this->extra2 $extra2;
  197.         return $this;
  198.     }
  199.     public function getExtra3(): ?string
  200.     {
  201.         return $this->extra3;
  202.     }
  203.     public function setExtra3(?string $extra3): self
  204.     {
  205.         $this->extra3 $extra3;
  206.         return $this;
  207.     }
  208.     public function getExtra4(): ?string
  209.     {
  210.         return $this->extra4;
  211.     }
  212.     public function setExtra4(?string $extra4): self
  213.     {
  214.         $this->extra4 $extra4;
  215.         return $this;
  216.     }
  217.     public function getExtra5(): ?string
  218.     {
  219.         return $this->extra5;
  220.     }
  221.     public function setExtra5(?string $extra5): self
  222.     {
  223.         $this->extra5 $extra5;
  224.         return $this;
  225.     }
  226.     public function getTotalCost(): ?string
  227.     {
  228.         return $this->totalCost;
  229.     }
  230.     public function setTotalCost(?string $totalCost): self
  231.     {
  232.         $this->totalCost $totalCost;
  233.         return $this;
  234.     }
  235.     public function getRentedRoomsRatio(): ?string
  236.     {
  237.         return $this->RentedRoomsRatio;
  238.     }
  239.     public function setRentedRoomsRatio(?string $RentedRoomsRatio): self
  240.     {
  241.         $this->RentedRoomsRatio $RentedRoomsRatio;
  242.         return $this;
  243.     }
  244.     public function getTotalRevenue(): ?string
  245.     {
  246.         return $this->totalRevenue;
  247.     }
  248.     public function setTotalRevenue(?string $totalRevenue): self
  249.     {
  250.         $this->totalRevenue $totalRevenue;
  251.         return $this;
  252.     }
  253.     public function getAmountPaid(): ?string
  254.     {
  255.         return $this->amountPaid;
  256.     }
  257.     public function setAmountPaid(?string $amountPaid): self
  258.     {
  259.         $this->amountPaid $amountPaid;
  260.         return $this;
  261.     }
  262.     /*
  263.     public function calculateUtilityCosts()
  264.     {
  265.         $property = $this->getProperty();
  266.         $utilities = $this->getMonthlyBills();
  267.         $tenants=$property->getTenants();
  268.         // Calculate the total number of rented bedrooms and tenants
  269.         $numRentedBedrooms = 0;
  270.         $numTenants = 0;
  271.         foreach ($tenants as $tenant) {
  272.             if ($tenant->getProperty() === $property) {
  273.                 $numRentedBedrooms += $tenant->getProperty()->getPropertyDetails()->getBedroomNumber();
  274.                 $numTenants += $tenant->getProperty()->getTenants()->count();
  275.             }
  276.         }
  277.         // Calculate the utility costs based on the number of rented bedrooms and tenants
  278.         $totalUtilityCost = 0;
  279.         foreach ($utilities as $utility) {
  280.             if ($utility->getIsVariableCost()) {
  281.                 // Variable cost utilities are split equally between rented bedrooms
  282.                 $totalUtilityCost += $utility->getCost() * $numRentedBedrooms / $property->getPropertyDetails()->getBedroomNumber();;
  283.             } else {
  284.                 // Fixed cost utilities are split equally between tenants
  285.                 $totalUtilityCost += $utility->getCost() * $numTenants / $property->getPropertyDetails()->getBedroomNumber();
  286.             }
  287.         }
  288.         return $totalUtilityCost;
  289.     }
  290.     */
  291.     /**
  292.      * @return Collection<int, UtilitiesProperty>
  293.      */
  294.     public function getUtilitiesProperties(): Collection
  295.     {
  296.         return $this->utilitiesProperties;
  297.     }
  298.     public function addUtilitiesProperty(UtilitiesProperty $utilitiesProperty): static
  299.     {
  300.         if (!$this->utilitiesProperties->contains($utilitiesProperty)) {
  301.             $this->utilitiesProperties->add($utilitiesProperty);
  302.             $utilitiesProperty->setMonthlyReport($this);
  303.         }
  304.         return $this;
  305.     }
  306.     public function removeUtilitiesProperty(UtilitiesProperty $utilitiesProperty): static
  307.     {
  308.         if ($this->utilitiesProperties->removeElement($utilitiesProperty)) {
  309.             // set the owning side to null (unless already changed)
  310.             if ($utilitiesProperty->getMonthlyReport() === $this) {
  311.                 $utilitiesProperty->setMonthlyReport(null);
  312.             }
  313.         }
  314.         return $this;
  315.     }
  316. }