<?php
declare(strict_types=1);
namespace App\Repository;
use App\Entity\User;
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
use Doctrine\Persistence\ManagerRegistry;
use Symfony\Bridge\Doctrine\Security\User\UserLoaderInterface;
use Symfony\Component\Security\Core\User\UserInterface;
/**
* @method User|null find($id, $lockMode = null, $lockVersion = null)
* @method User|null findOneBy(array $criteria, array $orderBy = null)
* @method User[] findAll()
* @method User[] findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
* @extends ServiceEntityRepository<User>
*/
class UserRepository extends ServiceEntityRepository implements UserLoaderInterface
{
public function __construct(ManagerRegistry $registry)
{
parent::__construct($registry, User::class);
}
public function find2User(int $max): array {
return $this->createQueryBuilder('u')
//->addSelect('RAND() as HIDDEN rand')
->where('u.EtatCompteUser = 1')
->andWhere('u.TypeCompteUser = 1')
->setMaxResults($max)
//->orderBy('rand')
->getQuery()
->getResult();
}
public function getUserPreference($currentUser) {
return $this->createQueryBuilder('u')
->where('u.TypeCompteUser = 1')
->andWhere('u.id <> :val')
->setParameter(':val',$currentUser)
->setMaxResults(8)
->getQuery()
->getResult();
}
public function getUserPreferenceIonic() {
return $this->createQueryBuilder('u')
->join('u.userPreferer','p')
->where('u.TypeCompteUser = 1')
->setMaxResults(100)
->getQuery()
->getResult();
}
public function getmaxId($mail): array {
return $this->createQueryBuilder('u')
->where('u.EmailUser = :val')
->setParameter('val',$mail)
->setMaxResults(1)
->addOrderBy('u.id','DESC')
->getQuery()
->getResult();
}
public function getId($id): User {
return $this->createQueryBuilder('u')
->select('u.id')
->where('u.id = :val')
->setParameter('val',$id)
->getQuery()
->getResult();
}
public function UserMembre($max) {
return $this->createQueryBuilder('u')
//->addSelect('RAND() as HIDDEN rand')
->where('u.EtatCompteUser = 1')
->andWhere('u.TypeCompteUser = 0')
->setMaxResults($max)
//->orderBy('rand')
->getQuery()
->getResult();
}
public function UserMembreSignateurCount() {
return $this->createQueryBuilder('u')
//->addSelect('RAND() as HIDDEN rand')
->where('u.EtatCompteUser = 1')
->andWhere('u.TypeCompteUser = 0')
//->orderBy('rand')
->getQuery()
->getResult();
}
public function UserMembrePrefereChoeur($max,$id) {
return $this->createQueryBuilder('u')
->join('u.userPreferences','p')
//->addSelect('RAND() as HIDDEN rand')
->where('u.EtatCompteUser = 1')
->andWhere('p.userPreferer = :val ')
->setParameter('val',$id)
->setMaxResults($max)
//->orderBy('rand')
->getQuery()
->getResult();
}
public function UserMembrePrefereChoeurCount($id) {
return $this->createQueryBuilder('u')
->join('u.userPreferences','p')
//->addSelect('RAND() as HIDDEN rand')
->where('u.EtatCompteUser = 1')
->andWhere('p.userPreferer = :val ')
->setParameter('val',$id)
//->orderBy('rand')
->getQuery()
->getResult();
}
/**
* @param $value
* @param $id
* @return mixed
* @throws \Doctrine\ORM\NonUniqueResultException
*/
public function UserUpdt($value,$id) {
return $this->createQueryBuilder('u')
->update()
->set('u.ImageFile',':va')
->setParameter('va',$value)
->where('u.id = :val')
->setParameter('val',$id)
->getQuery()
->getSingleScalarResult();
}
/**
* @param $value
* @param $id
* @return mixed
* @throws \Doctrine\ORM\NonUniqueResultException
*/
public function UserUpdtSignature($value,$email) {
return $this->createQueryBuilder('u')
->update()
->set('u.image_file_signature',':va')
->setParameter('va',$value)
->where('u.EmailUser = :val')
->setParameter('val',$email)
->getQuery()
->getSingleScalarResult();
}
/**
* @param $value
* @param $id
* @return mixed
* @throws \Doctrine\ORM\NonUniqueResultException
*/
public function UserUpdtMur($value,$id) {
return $this->createQueryBuilder('u')
->update()
->set('u.ImageFile',':va')
->setParameter('va',$value)
->where('u.id = :val')
->setParameter('val',$id)
->getQuery()
->getSingleScalarResult();
}
/**
* @param $value
* @param $id
* @return mixed
* @throws \Doctrine\ORM\NonUniqueResultException
*/
public function UserUpdtNom($value,$id) {
return $this->createQueryBuilder('u')
->update()
->set('u.NomUser',':va')
->setParameter('va',$value)
->where('u.id = :val')
->setParameter('val',$id)
->getQuery()
->getSingleScalarResult();
}
public function getMediaPreferenceNotification($id,$clan,$eglise):array {
/*return $this->createQueryBuilder('m')
->join('m.user_pub', 'u','m.user = u.id')
->join('u.userPreferer','p','p.userPreferer')
->where('p.userPrefere = :val ')
->andWhere(' u.Connected_at < m.Created_at ')
->andWhere('(u.eglise = :val1 or u.clan = :val2 or m.VisibiliteMedia = :val3)')
->setParameter('val',$id)
->setParameter('val1',$eglise)
->setParameter('val2',$clan)
->setParameter('val3',1)
->orderBy('m.id','DESC')
->getQuery()
->getResult();*/
return $this->createQueryBuilder('u')
->join('u.media', 'm','m.user_pub = u.id')
->join('u.userPreferer','p','p.userPreferer = u.preferer')
->where('u.id = :val and u.Connected_at < m.Created_at ')
->andWhere('(u.eglise = :val1 or u.clan = :val2) and m.VisibiliteMedia > :val3')
->setParameter('val',$id)
->setParameter('val1',$eglise)
->setParameter('val2',$clan)
->setParameter('val3',0)
->orderBy('m.id','DESC')
->getQuery()
->getResult();
}
/**
* @param $id
* @return mixed
* @throws \Doctrine\ORM\NonUniqueResultException
*/
public function EtatCompteUpdt($id){
return $this->createQueryBuilder('u')
->update()
->set('u.EtatCompteUser',':va')
->setParameter('va',1)
->where('u.id = :val')
->setParameter('val',$id)
->getQuery()
->getSingleScalarResult();
}
/**
* @param $id
* @param $pwA
* @param $pw
* @return mixed
* @throws \Doctrine\ORM\NonUniqueResultException
*/
public function PasswordUpdt($id,$pwA,$pw){
return $this->createQueryBuilder('u')
->update()
->set('u.PasswordUser',':va')
->setParameter('va',$pw)
->where('u.id = :val')
->andWhere('u.PasswordUser = :val1')
->setParameter('val',$id)
->setParameter('val1',$pwA)
->getQuery()
->getSingleScalarResult();
}
/**
* @param string $username
* @return mixed|null|UserInterface
* @throws \Doctrine\ORM\NonUniqueResultException
*/
public function loadUserByUsername($username)
{
return $this->createQueryBuilder('u')
->where('u.email_user = :email')
->setParameter('email', $username)
->getQuery()
->getOneOrNullResult();
}
public function autocomplete($key,$id) {
/* $rawSql = "SELECT * FROM user u WHERE u.nom_user LIKE '%$key%' ";
$stmt = $this->getEntityManager()->getConnection()->prepare($rawSql);
$stmt->execute();
return $stmt->fetchAll();*/
return $this->createQueryBuilder('u')
->where('u.NomUser LIKE :key')
->andWhere('u.TypeCompteUser = 1')
->andWhere('u.EtatCompteUser = 1')
->andWhere('u.id <> :val')
->setParameter('key', '%'.$key.'%')
->setParameter('val', $id)
->setMaxResults(10)
->getQuery()
->getResult();
}
/* ********* METHODE DOCTRINE POUR L'APPLICATION IONIC ************* */
/**
* Permet de faire une rchercher aleatoire des users parc au niveau de la page home
*
* @param int $max
* @return mixed
*/
public function User_liste(int $max){
$rawSql = "SELECT *, u.id As user_id FROM user u JOIN clan c ON(u.clan_id = c.id) JOIN eglise e ON(u.eglise_id = e.id) WHERE u.type_compte_user = 1 ORDER BY u.id DESC LIMIT $max";
$stmt = $this->getEntityManager()->getConnection()->prepare($rawSql);
$stmt->execute();
return $stmt->fetchAll();
}
/**
* Permet de faire une rchercher scroller des users parc au niveau de la page home
*
* @param int $max
* @return mixed
*/
public function User_listeScroller(int $max, $id){
$rawSql = "SELECT *, u.id As user_id FROM user u JOIN clan c ON(u.clan_id = c.id) JOIN eglise e ON(u.eglise_id = e.id) WHERE u.type_compte_user = 1 AND u.id < $id ORDER BY u.id DESC LIMIT $max";
$stmt = $this->getEntityManager()->getConnection()->prepare($rawSql);
$stmt->execute();
return $stmt->fetchAll();
}
/**
* Permet de faire une rchercher aleatoire des users parc pour la preference
*
* @param int $max
* @return mixed
*/
public function User_lstePreference(int $max, $id){
$rawSql = "Select *, (Select usr.user_prefere_id From user_preference usr Where usr.user_preferer_id = u.id And usr.user_prefere_id = $id) As flag, u.id As user_id, usrP.user_preferer_id As Preference_id From user u left Join user_preference usrP On u.id = usrP.user_prefere_id LEFT JOIN clan c ON(u.clan_id = c.id) LEFT JOIN eglise e ON(u.eglise_id = e.id) Where u.type_compte_user = 1 ORDER BY u.id DESC Limit $max ";
$stmt = $this->getEntityManager()->getConnection()->prepare($rawSql);
$stmt->execute();
return $stmt->fetchAll();
}
/**
* Permet de faire une rchercher aleatoire des users parc pour la preference scroller
*
* @param int $max
* @return mixed
*/
public function User_lstePreferenceSroller(int $max, $id, $minId){
$rawSql = "Select *, (Select usr.user_prefere_id From user_preference usr Where usr.user_preferer_id = u.id And usr.user_prefere_id = $id) As flag, u.id As user_id, usrP.user_preferer_id As Preference_id From user u left Join user_preference usrP On u.id = usrP.user_prefere_id LEFT JOIN clan c ON(u.clan_id = c.id) LEFT JOIN eglise e ON(u.eglise_id = e.id) Where u.id < $minId AND u.type_compte_user = 1 Limit $max ";
$stmt = $this->getEntityManager()->getConnection()->prepare($rawSql);
$stmt->execute();
return $stmt->fetchAll();
}
/**
* Permet de faire la rechercher d'un utilisateur parc
*
* @param int $max
* @return mixed
*/
public function User_listeParc(int $max, $id, string $key){
$rawSql = "SELECT *, (Select usr.user_prefere_id From user_preference usr Where usr.user_preferer_id = u.id And usr.user_prefere_id = $id) As flag, u.id As user_id FROM user u JOIN clan c ON(u.clan_id = c.id) JOIN eglise e ON(u.eglise_id = e.id) WHERE u.nom_user LIKE '$key%' LIMIT $max";
$stmt = $this->getEntityManager()->getConnection()->prepare($rawSql);
$stmt->execute();
return $stmt->fetchAll();
}
public function User_listeSinature(int $max){
$rawSql = "SELECT *, u.id As user_id FROM user u JOIN clan c ON(u.clan_id = c.id) JOIN eglise e ON(u.eglise_id = e.id) WHERE u.type_compte_user = 0 ORDER BY u.id DESC LIMIT $max";
$stmt = $this->getEntityManager()->getConnection()->prepare($rawSql);
$stmt->execute();
return $stmt->fetchAll();
}
public function User_listeSinatureScroller(int $max, $limit){
$rawSql = "SELECT *, u.id As user_id FROM user u JOIN clan c ON(u.clan_id = c.id) JOIN eglise e ON(u.eglise_id = e.id) WHERE u.id < $limit AND u.type_compte_user = 0 ORDER BY u.id DESC LIMIT $max";
$stmt = $this->getEntityManager()->getConnection()->prepare($rawSql);
$stmt->execute();
return $stmt->fetchAll();
}
public function User_listeSinature_AAA(int $max, $id){
// $rawSql = "SELECT *, (Select usr.user_prefere_id From user_preference usr Where usr.user_preferer_id = u.id And usr.user_prefere_id = $id) As flag, u.id As user_id FROM user u JOIN clan c ON(u.clan_id = c.id) JOIN eglise e ON(u.eglise_id = e.id) WHERE u.type_compte_user = 0 ORDER BY u.id DESC LIMIT $max";
$rawSql = "SELECT *, usr.user_prefere_id As flag, u.id As user_id FROM user_preference usr JOIN user u ON usr.user_preferer_id = u.id JOIN clan c ON(u.clan_id = c.id) JOIN eglise e ON(u.eglise_id = e.id) WHERE usr.user_prefere_id = $id AND u.type_compte_user = 0 ORDER BY u.id DESC LIMIT $max";
$stmt = $this->getEntityManager()->getConnection()->prepare($rawSql);
$stmt->execute();
return $stmt->fetchAll();
}
public function User_listeSinatureScroller_AAA(int $max, $limit, $id){
// $rawSql = "SELECT *, (Select usr.user_prefere_id From user_preference usr Where usr.user_preferer_id = u.id And usr.user_prefere_id = $id) As flag, u.id As user_id FROM user u JOIN clan c ON(u.clan_id = c.id) JOIN eglise e ON(u.eglise_id = e.id) WHERE u.id < $limit AND u.type_compte_user = 0 ORDER BY u.id DESC LIMIT $max";
$rawSql = "SELECT *, usr.user_prefere_id As flag, u.id As user_id FROM user_preference usr JOIN user u ON usr.user_preferer_id = u.id JOIN clan c ON(u.clan_id = c.id) JOIN eglise e ON(u.eglise_id = e.id) WHERE usr.user_prefere_id = $id AND u.id < $limit AND u.type_compte_user = 0 ORDER BY u.id DESC LIMIT $max";
$stmt = $this->getEntityManager()->getConnection()->prepare($rawSql);
$stmt->execute();
return $stmt->fetchAll();
}
public function connexion(string $email,string $pwd){
$rawSql = "SELECT *, u.id As user_id FROM user u JOIN clan c ON(u.clan_id = c.id) JOIN eglise e ON(u.eglise_id = e.id) WHERE u.email_user = '$email'";
$stmt = $this->getEntityManager()->getConnection()->prepare($rawSql);
$stmt->execute();
return $stmt->fetchAll();
}
public function findOneUser(string $id,string $med){
$rawSql = "SELECT *, (SELECT COUNT(*) + 1 AS total3 FROM post_comment cmt WHERE cmt.media_id = '$med' ) AS CntCmnt, u.id As user_id FROM user u JOIN clan c ON(u.clan_id = c.id) JOIN eglise e ON(u.eglise_id = e.id) WHERE u.email_user = '$id'";
$stmt = $this->getEntityManager()->getConnection()->prepare($rawSql);
$stmt->executeQuery();
return $stmt;
}
public function InsertOneUserSignateur(string $nom,string $numTel,string $photoSignature,string $photo,string $password,string $email,$date,$eglise,$clan,$firebase,$textProfil){
$rawSql = "INSERT INTO user (nom_user,num_tel_user,type_compte_user,etat_compte_user,image_file_signature,image_file,password_user,email_user,created_at,connected_at,eglise_id,clan_id,Firebase_token,text_de_prifil) VALUES ('$nom','$numTel','0',1,'$photoSignature','$photo','$password','$email','$date','$date',$eglise,$clan,'$firebase','$textProfil')";
$stmt = $this->getEntityManager()->getConnection()->prepare($rawSql);
$stmt->executeQuery();
return $stmt;
}
public function UpdateOneUserSignateur(string $nom,string $numTel,string $photoSignature,string $photo,string $password,string $email,$date,$eglise,$clan,$firebase){
$rawSql = "UPDATE user SET password_user = '$password', Firebase_token = '$firebase' WHERE email_user = '$email' ";
$stmt = $this->getEntityManager()->getConnection()->prepare($rawSql);
$stmt->executeQuery();
return $stmt;
}
public function getUserChoraleProgressive(int $page, String $query) {
return $this->createQueryBuilder('u')
->where('u.TypeCompteUser = 1')
->andWhere('u.id < :id')
->andWhere("u.NomUser LIKE '%".$query."%'")
->setParameter('id',$page)
->orderBy('u.id','DESC')
->setMaxResults(30)
->getQuery()
->getResult();
}
public function getChovis(int $page, User $id, string $flag) {
return $this->createQueryBuilder('u')
->where('u.TypeCompteUser = 0')
->andWhere('u.id < :id')
->setParameter('id',$page)
->orderBy('u.id','DESC')
->setMaxResults(20)
->getQuery()
->getResult();
}
public function getChovis_(int $page, $id, string $flag) {
$req = $this->createQueryBuilder('u');
if($flag == '1'){
$req->join('u.userPreferer','p')
->where('p.userPrefere = :idP')
->andWhere('u.TypeCompteUser = 0')
->andWhere('u.id < :id');
}
else{
$req->where('u.TypeCompteUser = 0')
->andWhere('u.id < :id');
}
$req->setParameter('id',$page);
if($flag == '1') $req->setParameter('idP',$id);
$req->orderBy('u.id','DESC');
if($flag == '1') $req->setMaxResults(5);
else $req->setMaxResults(20);
return $req->getQuery()->getResult();
}
public function getUserChoralePreference($query) {
return $this->createQueryBuilder('u')
->where('u.TypeCompteUser = 1')
->andWhere("u.NomUser LIKE '%".$query."%'")
->getQuery()
->getResult();
}
public function __call($name, $arguments)
{
// TODO: Implement @method null loadUserByIdentifier(string $identifier)
}
}