<?php
namespace App\Controller;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Annotation\Route;
use App\Document\User;
use App\Document\Newsletter;
use Symfony\Component\Mailer\MailerInterface;
use Symfony\Bridge\Twig\Mime\TemplatedEmail;
use Symfony\Component\Mime\Address;
use App\Service\EuodiaApiConnector;
use MongoDB\BSON\UTCDateTime;
use MongoDB\BSON\Regex;
/*
* reste à faire :
* - notification Taux
* - rajouter un bouton pouir installer l'appli
*/
class PagesController extends AbstractBaseController {
/**
* @Route("/accueil", name="client_accueil")
*/
public function accueil(Request $request, EuodiaApiConnector $api) {
if (!$user = $this->getMyUser($request)) {
return $this->redirectToRoute('client_login');
}
$datas = $user->getDatas();
$folders = $api->getApporteurFolder($user->getEmail());
$nbContact = 0;
$nbInstruction = 0;
$nbEnvoye = 0;
$nbAccorde = 0;
$nbAcceptation = 0;
$nbRealise = 0;
$totalCommission = 0;
foreach ($folders as $f) {
if ($f['statut'] != "PROSPECT") {
$nbContact++;
}
if ($f['statut'] == "INSTRUCTION") {
$nbInstruction++;
}
elseif ($f['statut'] == "ENVOYE_BANQUE") {
$nbEnvoye++;
}
elseif ($f['statut'] == "ACCORDE_BANQUE") {
$nbAccorde++;
}
elseif ($f['statut'] == "ACCEPTATION_CLIENT") {
$nbAcceptation++;
}
elseif ($f['statut'] == "CLOTURE") {
$nbRealise++;
if ($datas['commissionsVisibles']) {
$totalCommission += $f['commission'];
}
}
}
$stats = [
[
"name" => "Nombre de contacts",
"help" => "Dossier en cours (qui ne sont plus en prospect) sur le total de dossiers.",
"class" => "nb",
"value" => $nbContact . " / " . count($folders)
],
[
"name" => "Instruction",
"help" => "Le dossier est en cours de constitution.",
"class" => "instruction",
"value" => $nbInstruction
],
[
"name" => "Envoyé à la banque",
"help" => "Un dossier complet a été envoyé à un partenaire bancaire (ou +) pour analyse et négociation.",
"class" => "envoye",
"value" => $nbEnvoye
],
[
"name" => "Accordé par la banque",
"help" => "Le dossier a fait l'objet d'une ou plusieurs propositions de financement (accords) par des partenaires bancaires.",
"class" => "accord",
"value" => $nbAccorde
],
[
"name" => "Acceptation client",
"help" => "Le client a accepté l'offre négociée avec un partenaire bancaire. ",
"class" => "acceptation",
"value" => $nbAcceptation
]
];
/* if ($datas['commissionsVisibles']) {
$stats[] = [
"name" => "Commissions - " . $nbRealise . " finalisé" . ($nbRealise > 1 ? "s" : ""),
"class" => "commission",
"value" => number_format($totalCommission, 0, ",", " ") . " €"
];
}
else { */
$stats[] = [
"name" => "Finalisé",
"class" => "realise",
"value" => $nbRealise
];
//}
return $this->render("pages/home.html.twig", [
'user' => $user,
'folders' => $folders,
'stats' => $stats,
'params' => $_GET,
'titre' => 'Accueil'
]);
}
/**
* @Route("/profil", name="client_profil", methods={"POST"})
*/
public function profil(Request $request, EuodiaApiConnector $api) {
if (!$user = $this->getMyUser($request)) {
return $this->redirectToRoute('client_login');
}
$updateProfil = "";
$pwd = trim($request->get('memberPwd'));
if ($pwd) {
if (!preg_match('/^(?=.*[0-9])(?=.*[A-Z])(?=.*[a-z]).{8,}$/', $pwd)) {
$error = "";
if (strlen($pwd) < 8) {
$error = 'Le mot de passe doit faire au moins 8 caractères.<br>';
}
if (!preg_match('/^(?=.*[a-z]).{0,}$/', $pwd)) {
$error .= 'Le mot de passe doit contenir au moins une lettre minuscule.<br>';
}
if (!preg_match('/^(?=.*[A-Z]).{0,}$/', $pwd)) {
$error .= 'Le mot de passe doit contenir au moins une lettre majuscule.<br>';
}
if (!preg_match('/^(?=.*[0-9]).{0,}$/', $pwd)) {
$error .= 'Le mot de passe doit contenir au moins un chiffre.<br>';
}
if ($error) {
$this->addFlash('error', $error);
}
}
else {
$pwd = hash('sha256', hash('sha256', $pwd . $user->getId()) . $user->getId());
$user->setPwd($pwd);
$this->dmPersistFlush($user);
$updateProfil .= "Votre mot de passe a été modifié avec succès.<br>";
}
}
$datas = $user->getDatas();
$notification = $user->getNotification();
$notif = trim($request->get('notification_newsletter'));
if ($notif == '0' || $notif == '1') {
$notification['newsletter'] = (int) $notif;
$notif = trim($request->get('notification_taux'));
if ($notif == '0' || $notif == '1') {
$notification['taux'] = (int) $notif;
}
$notif = trim($request->get('notification_message'));
if ($notif == '0' || $notif == '1' || $notif == '2' || $notif == '3') {
$notification['message'] = (int) $notif;
}
$notif = trim($request->get('notification_dossier'));
if ($notif == '0' || $notif == '1' || $notif == '2' || $notif == '3') {
$notification['dossier'] = (int) $notif;
}
$user->setNotification($notification);
$this->dmPersistFlush($user);
$updateProfil .= "Vos préférences de notifications ont bien été enregistrées.<br>";
}
$notificationJson = trim($request->get('notificationJson'));
if ($notificationJson) {
if ($notificationJson == "disable") {
$notification['navigatorAuth'] = [];
}
else {
$notification['navigatorAuth'][]['json'] = $notificationJson;
}
$user->setNotification($notification);
$this->dmPersistFlush($user);
$updateProfil .= "Les notifications du navigateur ont bien été " . ($notificationJson == "disable" ? "désactivées" : "activées") . "<br>";
}
if ($updateProfil) {
return $this->json([
'status' => 'success',
'message' => $updateProfil
]);
}
else {
return $this->json([
'status' => 'error',
'error' => 'Rien à mettre à jour.'
]);
}
}
/**
* @Route("/taux", name="member_taux")
*/
public function taux(Request $request, EuodiaApiConnector $api) {
if (!$user = $this->getMyUser($request)) {
return $this->redirectToRoute('client_login');
}
$rates = $api->getApporteurRate($user->getDatas()['id']);
$ratesMinMax = [
"T15" => 100,
"T20" => 100,
"T25" => 100
];
if (isset($rates["regionalRates"])) {
usort($rates["regionalRates"], function ($a, $b) {
return strcmp($a["year"] . "-" . $a['month'], $b["year"] . "-" . $b['month']);
});
$rates["regionalRates"] = array_reverse($rates["regionalRates"]);
foreach ($rates["regionalRates"][0]['rates'] as $r) {
if ($r['rateFifteenYears'] > 0 && $r['rateFifteenYears'] < $ratesMinMax['T15']) {
$ratesMinMax['T15'] = $r['rateFifteenYears'];
}
if ($r['rateTwentyYears'] > 0 && $r['rateTwentyYears'] < $ratesMinMax['T20']) {
$ratesMinMax['T20'] = $r['rateTwentyYears'];
}
if ($r['rateTwentyFiveYears'] > 0 && $r['rateTwentyFiveYears'] < $ratesMinMax['T25']) {
$ratesMinMax['T25'] = $r['rateTwentyFiveYears'];
}
}
}
else {
$rates["regionalRates"] = [];
}
return $this->render("pages/taux.html.twig", [
'user' => $user,
'rates' => $rates,
'ratesMinMax' => $ratesMinMax,
'titre' => 'Taux immobiliers'
]);
}
/**
* @Route("/newsletters", name="member_newsletters")
*/
public function newsletters(Request $request) {
if (!$user = $this->getMyUser($request)) {
return $this->redirectToRoute('client_login');
}
// search on assurance-vie
$campaigns = $this->dm
->createQueryBuilder(Newsletter::class)
->sort('connectionAt', -1)
->limit(24)
->getQuery()->execute();
return $this->render("pages/newsletters.html.twig", [
'user' => $user,
'titre' => 'Newsletters',
'campaigns' => $campaigns
]);
}
/**
* @Route("/statistiques", name="member_statistiques")
*/
public function statistiques(Request $request, EuodiaApiConnector $api) {
if (!$user = $this->getMyUser($request)) {
return $this->redirectToRoute('client_login');
}
$datas = $user->getDatas();
if (!isset($datas['statisticsVisibles']) || !$datas['statisticsVisibles']) {
return $this->redirectToRoute('client_login');
}
$filter = [
"a" => $request->get('a'),
"d" => $request->get('d'),
"f" => $request->get('f')
];
if (!$filter['d']) {
$d = mktime(0, 0, 0, 1, 1, date('Y'));
$filter['d'] = date('Y-m-d', $d);
}
else {
$d = strtotime($filter['d']);
}
if (!$filter['f']) {
$f = mktime(23, 59, 59, 12, 31, date('Y'));
$filter['f'] = date('Y-m-d', $f);
}
else {
$f = strtotime($filter['f']) + 86399;
}
$apporteurs = $api->getListApporteur($user->getEmail());
if (!$filter['a']) {
foreach ($apporteurs as $a => $v) {
$filter['a'][] = $a;
}
}
$ids = [];
if ($filter['a'] && is_array($filter['a'])) {
foreach ($filter['a'] as $a) {
if (!in_array($a, $ids)) {
$ids[] = $a;
}
}
}
return $this->render("pages/statistiques.html.twig", [
'user' => $user,
'titre' => 'Statistiques',
'filter' => $filter,
'apporteur' => $apporteurs,
'stats' => $api->getStatistiques(implode(",", $ids), date('c', $d), date('c', $f)),
'statsOld' => $api->getStatistiques(implode(",", $ids), date('c', $d - 31536000), date('c', $f - 31536000)),
]);
}
/**
* @Route("/_ajax/search/", name="_ajax_search")
*/
public function search(Request $request) {
$response = [];
return $this->json($response);
}
/**
* @Route("/", name="client_login", methods={"GET","POST"})
*/
public function login(Request $request) {
if ($this->getMyUser($request)) {
return $this->redirectToRoute('client_accueil');
}
$error = false;
$email = trim($request->get('email'));
$pwd = trim($request->get('password'));
if ($email && $pwd) {
$user = $this->dmGetRepo(User::class)->findOneBy(['email' => new Regex($email, 'i'), 'status' => true, 'datas.espacePartenaire' => true]);
if ($user && $user->getPwd() == hash('sha256', hash('sha256', $pwd . $user->getId()) . $user->getId())) {
$request->getSession()->set('user', $user);
return $this->redirectToRoute('client_accueil');
}
else {
$error = "Email et/ou mot de passe incorrect.";
}
}
return $this->render('pages/login.html.twig', ['error' => $error, 'titre' => 'Connexion']);
}
/**
* @Route("/logout", name="client_logout")
*/
public function logout(Request $request) {
$request->getSession()->remove('user');
return $this->redirectToRoute('client_login');
}
/**
* @Route("/forgotten-password", name="client_forgotten_password")
*/
public function forgottenPassword(Request $request, MailerInterface $mail) {
if ($this->getMyUser($request)) {
return $this->redirectToRoute('client_accueil');
}
$error = false;
$email = trim($request->get('email'));
if ($email) {
$user = $this->dmGetRepo(User::class)->findOneBy(['email' => new Regex($email, 'i'), 'status' => true, 'datas.espacePartenaire' => true]);
if ($user) {
$datas = $user->getDatas();
$key = hash('sha256', $user->getId() . "|cv7a,_H)" . $user->getPwd() . "-7aU;f|" . date('Y-m-d'));
$user->setForgottenPwd([
"key" => $key,
"date" => new UTCDateTime()
]);
$this->dmPersistFlush($user);
$lien = $this->generateUrl('client_forgotten_password_change', [], false) . "?id=" . $user->getId() . "&key=" . $key;
$email = (new TemplatedEmail())
->from(new Address('noreply@artemiscourtage.com', 'Artemis Courtage'))
->to(new Address($_ENV['APP_ENV'] == "prod" ? $user->getEmail() : "n.theneaud@kiwilab.fr"))
->bcc(new Address("artemis@kiwilab.fr"))
->subject('Artemis Courtage - Mot de passe oublié')
->htmlTemplate('email/forgotten-password.html.twig')
->context(['datas' => $datas, 'lien' => $lien]);
$mail->send($email);
}
$error = "Si vous disposez d'un compte vous allez recevoir un email pour réinitialiser votre mot de passe.";
}
return $this->render('pages/forgotten-password.html.twig', ['error' => $error, 'titre' => 'Mot de passe oublié']);
}
/**
* @Route("/update-user-albr", name="client_user_update_albr", methods={"POST"})
*/
public function updateUserAlbr(Request $request) {
if ($this->getMyUser($request)) {
return $this->redirectToRoute('client_accueil');
}
$email = trim($request->get('email'));
$key = trim($request->get('key'));
if ($email && $key && $key == 'cN.QB:T46791zdg}4]P£!O-LG') {
$user = $this->dmGetRepo(User::class)->findOneBy(['email' => new Regex($email, 'i')]);
if (!$user) {
$user = new User();
$user->setNotification([
'newsletter' => 1,
'taux' => 1,
'message' => 1,
'dossier' => 1
]);
}
$p = json_decode($request->getContent(), true);
$pClean = $p;
unset($pClean['email'], $pClean['pictureFile'], $pClean['isDisabled']);
$user
->setDatas($pClean)
->setEmail($p['email'])
->setStatus(!$p['isDisabled']);
$this->dmPersistFlush($user);
return $this->json(['ok' => true]);
}
else {
return $this->json(['error' => 'url et/ou paramètres inccorects'], 400);
}
}
/**
* @Route("/invitation-password-simple", name="client_invitation_password_simple")
*/
public function invitationPasswordSimple(Request $request, MailerInterface $mail, EuodiaApiConnector $api) {
if ($this->getMyUser($request)) {
return $this->redirectToRoute('client_accueil');
}
$email = trim($request->get('email'));
$emailCourtier = trim($request->get('emailCourtier'));
$key = trim($request->get('key'));
if ($email && $emailCourtier && $key && $key == 'cN.QB:T46791zdg}4]P£!O-LG') {
$user = $this->dmGetRepo(User::class)->findOneBy(['email' => new Regex($email, 'i'), 'status' => true, 'datas.espacePartenaire' => true]);
if ($user) {
$key = hash('sha256', $user->getId() . "|cv7a,_H)" . $user->getPwd() . "-7aU;f|" . date('Y-m-d'));
$user->setForgottenPwd([
"key" => $key,
"date" => new UTCDateTime()
]);
$this->dmPersistFlush($user);
$from = new Address($emailCourtier, 'Artemis Courtage');
$email = (new TemplatedEmail())
->from($from)
->to(new Address($_ENV['APP_ENV'] == "prod" ? $user->getEmail() : "n.theneaud@kiwilab.fr"))
->bcc($from)
->addBcc(new Address("artemis@kiwilab.fr"))
->subject('Artemis Courtage - Invitation de connexion')
->htmlTemplate('email/invitation.html.twig')
->context([
'user' => $user,
'lien' => $this->generateUrl('client_forgotten_password_change', [], false) . "?id=" . $user->getId() . "&key=" . $key
]);
$mail->send($email);
return $this->json(['ok' => true]);
}
else {
return $this->json(['error' => 'email not found'], 400);
}
}
else {
return $this->json(['error' => 'url et/ou paramètres inccorects'], 400);
}
}
/**
* @Route("/autologin-albr", name="client_autologin_albr")
*/
public function autoLoginAlbr(Request $request, EuodiaApiConnector $api) {
$email = trim($request->get('email'));
$key = trim($request->get('key'));
if ($email && $key && $key == 'cN.QB:T46791zdg}4]P£!O-LG') {
$user = $this->dmGetRepo(User::class)->findOneBy(['email' => new Regex($email, 'i'), 'status' => true, 'datas.espacePartenaire' => true]);
if ($user) {
return $this->json(['autologin' => $this->generateUrl('client_autologin_client', [], false) . "?id=" . $user->getId() . "&key=" . hash('sha256', $user->getId() . "|cv7a,_H)" . $user->getPwd() . "-7aU;f|" . date('Y-m-d') . "T" . floor(date('H') * 60 * 60 + date('i') * 60 + date('s') / 60))]);
}
else {
return $this->json(['error' => 'email not found'], 400);
}
}
else {
return $this->json(['error' => 'url et/ou paramètres inccorects'], 400);
}
}
/**
* @Route("/autologin-client", name="client_autologin_client")
*/
public function autoLoginClient(Request $request) {
$id = trim($request->get('id'));
$key = trim($request->get('key'));
if ($id && $key) {
$user = $this->dmGetRepo(User::class)->findOneBy(['id' => $id, 'status' => true, 'datas.espacePartenaire' => true]);
if ($user && $key == hash('sha256', $user->getId() . "|cv7a,_H)" . $user->getPwd() . "-7aU;f|" . date('Y-m-d') . "T" . floor(date('H') * 60 * 60 + date('i') * 60 + date('s') / 60))) {
$request->getSession()->set('user', $user);
return $this->redirectToRoute('client_accueil');
}
else {
$this->addFlash('error', "Erreur : Lien expiré.");
return $this->redirectToRoute('client_accueil');
}
}
else {
$this->addFlash('error', "Erreur : Lien incomplet.");
return $this->redirectToRoute('client_accueil');
}
}
/**
* @Route("/forgotten-password-change", name="client_forgotten_password_change")
*/
public function forgottenPasswordChange(Request $request) {
$id = $request->get('id');
$key = $request->get('key');
if ($id && $key) {
$user = $this->dmGetRepo(User::class)->findOneBy(['id' => $id, 'status' => true, 'datas.espacePartenaire' => true]);
if ($user && isset($user->getForgottenPwd()['key']) && $key == $user->getForgottenPwd()['key'] && $user->getForgottenPwd()['date']->toDateTime()->getTimestamp() >= time() - 7 * 24 * 60 * 60) {
$error = false;
$pwd1 = trim($request->get('pwd1'));
$pwd2 = trim($request->get('pwd2'));
if ($pwd1 && $pwd2) {
if ($pwd1 != $pwd2) {
$error = "Les mots de passe ne sont pas identiques.";
}
elseif (!preg_match('/^(?=.*[0-9])(?=.*[A-Z])(?=.*[a-z]).{8,}$/', $pwd1)) {
if (strlen($pwd1) < 8) {
$error = 'Le mot de passe doit faire au moins 8 caractères.<br>';
}
if (!preg_match('/^(?=.*[a-z]).{0,}$/', $pwd1)) {
$error .= 'Le mot de passe doit contenir au moins une lettre minuscule.<br>';
}
if (!preg_match('/^(?=.*[A-Z]).{0,}$/', $pwd1)) {
$error .= 'Le mot de passe doit contenir au moins une lettre majuscule.<br>';
}
if (!preg_match('/^(?=.*[0-9]).{0,}$/', $pwd1)) {
$error .= 'Le mot de passe doit contenir au moins un chiffre.<br>';
}
}
else {
$pwd = hash('sha256', hash('sha256', $pwd1 . $user->getId()) . $user->getId());
$user->setPwd($pwd);
$this->dmPersistFlush($user);
$this->addFlash('success', "Votre mot de passe a été modifié avec succès.");
return $this->redirectToRoute('client_accueil');
}
}
return $this->render('pages/forgotten-password-change.html.twig', ['error' => $error, 'titre' => 'Connexion']);
}
else {
$this->addFlash('error', "Erreur : Lien de changement de mot de passe expiré.");
return $this->redirectToRoute('client_forgotten_password');
}
}
else {
$this->addFlash('error', "Erreur : Paramètre(s) manquant(s).");
return $this->redirectToRoute('client_accueil');
}
}
/**
* @Route("/send-contact", name="client_send_contact", methods={"POST"})
*/
public function sendContact(Request $request, EuodiaApiConnector $api, MailerInterface $mail) {
if (!$user = $this->getMyUser($request)) {
return $this->redirectToRoute('client_login');
}
$infos = $request->request->all();
$valid = array_reduce(['civilite', 'nom', 'prenom', 'email', 'tel', 'premier', 'type', 'projet', 'destination'], function ($acc, $item) use ($infos) {
return $acc &= !empty($infos[$item]);
}, true);
if (!$valid) {
return $this->json([
'status' => 'error',
'error' => 'Données manquantes ! Merci de bien remplir correctement les champs !'
]);
}
else {
$datas = $user->getDatas();
$d = [
"webSourceName" => "espaceaffaire",
"baseTypeDDP" => (int) $infos['type'],
"clientNbClient" => 1,
"prjType" => (int) $infos['projet'],
"prjDestine" => (int) $infos['destination'],
"prjIs1erAchat" => ($infos['premier'] == "oui" ? true : false),
"baseIdAgent" => $datas['memberId'], //ID DU MEMBRE
"baseIdParrain" => $datas['idCifacil'], //ID CIFACIL ATTENTION BIEN CIFACIL DE L'APPORTEUR
"emailApporteur" => $user->getEmail(),
"civilite" => (int) $infos['civilite'],
"nom" => $infos['nom'],
"prenom" => $infos['prenom'],
"email" => $infos['email'],
"telMobile" => $infos['tel']
];
if ($infos['dpe']) {
$d["prjTypePE"] = (int) $infos['dpe'];
}
$r = $api->sendLead($d);
/* echo '<pre>';
print_r($api->sendLead($d));
echo json_encode($d);
exit; */
$email = (new TemplatedEmail())
->from(new Address('noreply@artemiscourtage.com', 'Artemis Courtage'))
->to(new Address($_ENV['APP_ENV'] == "prod" ? $r['emailCourtier'] : "n.theneaud@kiwilab.fr"))
->bcc(new Address("artemis@kiwilab.fr"))
->subject('Artemis Courtage - Envoi d\'un contact')
->htmlTemplate('email/send-contact.html.twig')
->context([
'user' => $user,
'datas' => $infos
]);
$mail->send($email);
return $this->json([
'status' => 'success',
'debug' => $r
]);
}
}
/**
* @Route("/message", name="client_message")
*/
public function message(Request $request, EuodiaApiConnector $api) {
if (!$user = $this->getMyUser($request)) {
return $this->redirectToRoute('client_login');
}
$id = $request->query->get('id');
if ($id) {
return $this->json($api->getMessage($user->getEmail(), $id));
}
return $this->json([]);
}
/**
* @Route("/message-send", name="client_message_send", methods={"POST"})
*/
public function messageSend(Request $request, EuodiaApiConnector $api) {
if (!$user = $this->getMyUser($request)) {
return $this->redirectToRoute('client_login');
}
$id = $request->get('id');
$content = $request->get('content');
if ($id && $content) {
return $this->json($api->setMessage($user->getEmail(), $id, $content));
}
return $this->json(["error" => "Erreur : Paramètre(s) manquant(s)."]);
}
/**
* @Route("/notification", name="client_notification")
*/
public function notification(Request $request, EuodiaApiConnector $api) {
if (!$user = $this->getMyUser($request)) {
return $this->redirectToRoute('client_login');
}
$notifs = $api->getNotification($user->getEmail());
foreach ($user->getNotificationOtherList() as $t => $n) {
if ($n['type'] == "TAUX" || $n['type'] == "NEWSLETTER") {
$notifs[] = [
"id" => $t,
"type" => $n['type'],
"content" => $n['content'],
"creationDate" => $n['creationDate']->toDateTime()->format(DATE_ISO8601),
"seenDate" => $n['seenDate'] ? $n['seenDate']->toDateTime()->format(DATE_ISO8601) : null
];
}
}
usort($notifs, function ($a, $b) {
if (strtotime($a['creationDate']) == strtotime($b['creationDate'])) {
return 0;
}
return strtotime($a['creationDate']) > strtotime($b['creationDate']) ? -1 : 1;
});
return $this->json($notifs);
}
/**
* @Route("/notification-lu", name="client_notification_lu", methods={"POST"})
*/
public function notificationLu(Request $request, EuodiaApiConnector $api) {
if (!$user = $this->getMyUser($request)) {
return $this->redirectToRoute('client_login');
}
$dossiers = [];
$messages = [];
$id = $request->get('id');
if (!is_array($id)) {
$id = [$id];
}
foreach ($id as $v) {
$v = explode('-', $v);
if (count($v) != 2) {
return $this->json([
'status' => 'error'
]);
}
if ($v[0] == "NEWSLETTER") {
$notifs = $user->getNotificationOtherList();
$notifs[$v[1]]['seenDate'] = ($request->get('lu') ? new UTCDateTime() : null);
$user->setNotificationOtherList($notifs);
$this->dmPersistFlush($user);
}
else {
$dossiers[] = $v[0];
$messages[] = $v[1];
}
}
if (count($dossiers) > 0) {
$api->setMessageSeen($user->getEmail(), $dossiers, $messages, $request->get('lu'));
}
return $this->json([
'status' => 'success'
]);
}
/**
* @Route("/manifest.webmanifest", name="manifest")
*/
public function manifest() {
return $this->json([
"name" => "Espace Affaires - Artemis Courtage",
"short_name" => "Espace Affaires",
"description" => "Espace Affaires de la société Artemis Courtage",
"icons" => [
[
"src" => "/sw/icon.svg",
"sizes" => "144x144",
"type" => "image/svg+xml",
"purpose" => "any"
]],
"start_url" => "/accueil",
"display" => "standalone",
"background_color" => "#1F1D25",
"theme_color" => "#000000",
"screenshots" => [
[
"src" => "/sw/screenshot1.png",
"sizes" => "1280x720",
"type" => "image/png",
"form_factor" => "wide",
"label" => "List of folders"
],
[
"src" => "/sw/screenshot2.png",
"sizes" => "391x869",
"type" => "image/png",
"form_factor" => "narrow",
"label" => "List of folders"
]
]
]);
}
protected function getMyUser($request) {
$user = $request->getSession()->get('user');
$u = false;
if ($user) {
$u = $this->dmGetRepo(User::class)->findOneBy(['id' => $user->getId(), 'status' => true, 'datas.espacePartenaire' => true]);
if (!$u->getStatus()) {
$u = false;
}
else {
$u->setConnectionAt(time());
$this->dmPersistFlush($u);
}
}
return $u;
}
}