I have an issue when I try to write a service Class on Symfony 5. Here's my service
<?php
namespace App\Service;
use App\Entity\OrderLine;
use App\Entity\User;
use Doctrine\ORM\EntityManagerInterface;
class UserContribution
{
/**
* @var EntityManagerInterface
*/
private $em;
public function __construct(EntityManagerInterface $em)
{
$this->em = $em;
}
/**
* @param User $user
* @return bool
* 3 cas de figure :
* L'utilisateur est salarié : réponse = true
* L'utilisateur est un intérimaire : réponse = false
* L'utilisateur est retraité :
* S'il est dans son année de départ à la retraite : réponse = true
* Sinon : Réponse = false
*/
public function isUserBenefitContribution(User $user):bool
{
$userStatus = $user->getStatus()->getId();
if($userStatus == 3) //retraité
{
$dateOfRetirement = $user->getDateOfRetirement();
if($dateOfRetirement->format('Y') == date('Y'))
{
return true;
} else {
return false;
}
} else {
return $user->getStatus()->getContribution();
}
}
public function getSoldeAbondement(User $user):string
{
$toto = $this->em->getDoctrine()->getManager();
$benefitContribution = UserContribution::isUserBenefitContribution($user);
//on met à jour le solde de l'abondement
if($benefitContribution == true) {
//récupération abondement user si celui-ci en bénéficie
//$soldeAbondement = $this->getParameter('app.montant_abondement_'.date('Y')) - $em->getRepository(OrderLine::class)->getSommeParticipationCSE($user);
$soldeAbondement = $this->em->getRepository(OrderLine::class)->getSommeParticipationCSE($user);
$soldeAbondement = number_format($soldeAbondement,'2',',',' ').' €';
} else {
$soldeAbondement = "NC";
}
return $soldeAbondement;
}
}
When I want to use my function getSoldeAbondement, I encounter this error : Using $this when not in object context.
I don't understand why Im' not in object context ? Do I have to use self instead of This ? Am I in a static environnment ?
Thanks for your help !