<?php
namespace App\Controller\MobileApp;
use App\Entity\User;
use DateTimeImmutable;
use App\Service\SMSSender;
use Informagenie\OrangeSDK;
use App\Repository\UserRepository;
use App\Service\DateIntervalManage;
use App\Entity\CommunicationMessage;
use App\Entity\SchoolTeacherCallSheet;
use App\Repository\SchoolYearRepository;
use App\Entity\SchoolTeacherCallSheetLine;
use App\Entity\SchoolWorkingTimeHourLesson;
use App\Repository\SchoolTeacherRepository;
use Symfony\Component\Serializer\Serializer;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Doctrine\Common\Collections\ArrayCollection;
use App\Repository\SchoolTeacherCallSheetRepository;
use Symfony\Component\Serializer\Encoder\JsonEncoder;
use App\Repository\SchoolTeacherCallSheetLineRepository;
use App\Repository\SchoolWorkingTimeHourLessonRepository;
use Symfony\Component\Serializer\Normalizer\ObjectNormalizer;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface;
/**
* @Route("/online/api/v1/callsheet")
*/
class CallSheetController extends AbstractController
{
private $headers = [
'Content-Type' => 'application/json',
'Access-Control-Allow-Origin' => '*',
'Access-Control-Allow-Methods' => 'POST'
];
/**
* @Route("/auth", name="online_api_v1_callsheet_auth")
*/
public function auth(Request $request, UserPasswordHasherInterface $userPasswordHasher, UserRepository $userRepository, SchoolTeacherRepository $schoolTeacherRepository, SchoolYearRepository $schoolYearRepository): Response
{
$entityManager = $this->getDoctrine()->getManager();
$encoders = [new JsonEncoder()];
$normalizer = [new ObjectNormalizer()];
$serializer = new Serializer($normalizer, $encoders);
$content = $request->getContent();
$contentJson = json_decode($content, true);
$username = $contentJson['username'];
$password = $contentJson['password'];
$user = $userRepository->findOneBy(['username' => $username], []);
if (null == $user) {
$data = ['code' => 400, 'msg' => "User not found", 'request' => $contentJson];
$jsonContent = $serializer->serialize($data, 'json');
$response = new Response($jsonContent, 200, $this->headers);
return $response;
}
if (!$userPasswordHasher->isPasswordValid($user, $password)) {
$data = ['code' => 403, 'msg' => "invalid credential", 'request' => $request->request];
$jsonContent = $serializer->serialize($data, 'json');
$response = new Response($jsonContent, 200, $this->headers);
return $response;
}
$user->setLastAuthTime(time());
$user->setToken(md5(time()).$user->getId());
$schoolYear = $schoolYearRepository->findOneBy(['is_ongoing' => 1], []);
if (null == $schoolYear) {
$data = ['code' => 400, 'msg' => "Aucune année scolaire activé !)", 'request' => $request->request];
$jsonContent = $serializer->serialize($data, 'json');
$response = new Response($jsonContent, 200, $this->headers);
return $response;
}
$establishment = $user->getEstablishment();
$schoolTeacher = $schoolTeacherRepository->findOneBy(['salary' => $user->getRhSalary(), 'schoolYear' => $schoolYear, 'is_disabled' => 0], []);
if (null == $schoolTeacher) {
$data = ['code' => 400, 'msg' => "Enseignant introuvable", 'request' => $request->request];
$jsonContent = $serializer->serialize($data, 'json');
$response = new Response($jsonContent, 200, $this->headers);
return $response;
}
$userData = [
'token' => $user->getToken(),
'_token_expire_at' => (time() + 604800),
'_time' => time(),
'last_name' => $user->getRhSalary()->getLastName(),
'first_name' => $user->getRhSalary()->getFirstName().' / '.$schoolYear->getCode(),
'image' => 'rh/salaries/'.$user->getRhSalary()->getImage()
];
try {
$entityManager->flush();
} catch (\Throwable $th) {
$data = ['code' => 500, 'msg' => $th->getMessage()];
$jsonContent = $serializer->serialize($data, 'json');
$response = new Response($jsonContent, 200, $this->headers);
return $response;
}
$data = ['code' => 200, 'msg' => "Access Granted", 'user' => $userData];
$jsonContent = $serializer->serialize($data, 'json');
$response = new Response($jsonContent, 200, $this->headers);
return $response;
}
/**
* @Route("/logout", name="online_api_v1_callsheet_logout")
*/
public function logout(Request $request, UserRepository $userRepository): Response
{
$token = $request->headers->get('token');
$entityManager = $this->getDoctrine()->getManager();
$encoders = [new JsonEncoder()];
$normalizer = [new ObjectNormalizer()];
$serializer = new Serializer($normalizer, $encoders);
$user = $userRepository->findOneBy(['token' => $token], []);
if (null == $user) {
$data = ['code' => 403, 'msg' => "Access denied"];
$jsonContent = $serializer->serialize($data, 'json');
$response = new Response($jsonContent, 200, $this->headers);
return $response;
}
$user->setToken(md5('-1'));
try {
$entityManager->flush();
} catch (\Throwable $th) {}
$data = ['code' => 200, 'msg' => "logout", 'token' => '-1'];
$jsonContent = $serializer->serialize($data, 'json');
$response = new Response($jsonContent, 200, $this->headers);
return $response;
}
/**
* @Route("/index", name="online_api_v1_callsheet_index")
*/
public function index(Request $request, UserRepository $userRepository, SchoolTeacherRepository $schoolTeacherRepository, SchoolYearRepository $schoolYearRepository, SchoolTeacherCallSheetRepository $schoolTeacherCallSheetRepository): Response
{
$token = $request->headers->get('token');
$encoders = [new JsonEncoder()];
$normalizer = [new ObjectNormalizer()];
$serializer = new Serializer($normalizer, $encoders);
$user = $userRepository->findOneBy(['token' => $token], []);
if (null == $user) {
$data = ['code' => 403, 'msg' => "Access denied"];
$jsonContent = $serializer->serialize($data, 'json');
$response = new Response($jsonContent, 200, $this->headers);
return $response;
}
if (!$user->isTokenValid()) {
$data = ['code' => 403, 'msg' => "Token Invalid", 'time' => time(), 'exp' => ($user->getLastAuthTime())];
$jsonContent = $serializer->serialize($data, 'json');
$response = new Response($jsonContent, 200, $this->headers);
return $response;
}
$schoolYear = $schoolYearRepository->findOneBy(['is_ongoing' => 1], []);
$establishment = $user->getEstablishment();
$schoolTeacher = $schoolTeacherRepository->findOneBy(['salary' => $user->getRhSalary(), 'schoolYear' => $schoolYear, 'is_disabled' => 0], []);
if (null == $schoolTeacher) {
$data = ['code' => 403, 'msg' => "Veuillez vous connecter avec un compte enseignant", 'request' => $request->request];
$jsonContent = $serializer->serialize($data, 'json');
$response = new Response($jsonContent, 200, $this->headers);
return $response;
}
$school_teacher_call_sheets = $schoolTeacherCallSheetRepository->createQueryBuilder('entity')
->innerJoin('entity.establishment', 'establishment')
->addSelect('establishment')
->andWhere('establishment.establishmentGroup = :establishmentGroup')
->setParameter('establishmentGroup', $establishment->getEstablishmentGroup())
->andWhere('entity.schoolYear = :schoolYear')
->setParameter('schoolYear', $schoolYear)
->andWhere('entity.schoolTeacher = :schoolTeacher')
->setParameter('schoolTeacher', $schoolTeacher)
->orderBy('entity.id', 'DESC')
->getQuery()
->getResult();
$call_sheets = new ArrayCollection();
foreach ($school_teacher_call_sheets as $key => $school_teacher_call_sheet) {
if ($school_teacher_call_sheet->getCreateDate()->format('Y-m-d') == date('Y-m-d')) {
$call_sheets->add([
'id' => $school_teacher_call_sheet->getId(),
'createDate' => $school_teacher_call_sheet->getCreateDate()->format('d/m/Y'),
'classroom' => $school_teacher_call_sheet->getSettingClassroom() ? $school_teacher_call_sheet->getSettingClassroom()->getLabel() : '',
'matter' => $school_teacher_call_sheet->getSchoolMatter() ? $school_teacher_call_sheet->getSchoolMatter()->getLabel() : '',
'timeTable' => $school_teacher_call_sheet->getSettingTimeTable() ? $school_teacher_call_sheet->getSettingTimeTable()->getLabel() : '',
'day' => $school_teacher_call_sheet->getDay(),
'isValidate' => $school_teacher_call_sheet->getIsValidated(),
'_call_link' => $this->generateUrl('online_api_v1_callsheet_call', ['id' => $school_teacher_call_sheet->getId()])
]);
}
}
$data = [
'code' => 200,
'help' => "Liste des fiches: _call_link permet d'afficher une fiche d'appel (liste des élèves à appeler), _cours_link permet d'afficher les plages horaire sur lesquelles ont peut créer une fiche d'appel.",
'_cours_link' => $this->generateUrl('online_api_v1_callsheet_cours'),
'callSheets' => $call_sheets
];
$jsonContent = $serializer->serialize($data, 'json');
$response = new Response($jsonContent, 200, $this->headers);
return $response;
}
/**
* @Route("/cours", name="online_api_v1_callsheet_cours")
*/
public function cours(Request $request, UserRepository $userRepository, SchoolTeacherRepository $schoolTeacherRepository, SchoolYearRepository $schoolYearRepository, SchoolWorkingTimeHourLessonRepository $schoolWorkingTimeHourLessonRepository): Response
{
$token = $request->headers->get('token');
$encoders = [new JsonEncoder()];
$normalizer = [new ObjectNormalizer()];
$serializer = new Serializer($normalizer, $encoders);
$user = $userRepository->findOneBy(['token' => $token], []);
if (null == $user) {
$data = ['code' => 403, 'msg' => "Access denied"];
$jsonContent = $serializer->serialize($data, 'json');
$response = new Response($jsonContent, 200, $this->headers);
return $response;
}
if (!$user->isTokenValid()) {
$data = ['code' => 403, 'msg' => "Token Invalid", 'time' => time(), 'exp' => ($user->getLastAuthTime())];
$jsonContent = $serializer->serialize($data, 'json');
$response = new Response($jsonContent, 200, $this->headers);
return $response;
}
$schoolYear = $schoolYearRepository->findOneBy(['is_ongoing' => 1], []);
$establishment = $user->getEstablishment();
$schoolTeacher = $schoolTeacherRepository->findOneBy(['salary' => $user->getRhSalary(), 'schoolYear' => $schoolYear, 'is_disabled' => 0], []);
if (null == $schoolTeacher) {
$data = ['code' => 403, 'msg' => "Veuillez vous connecter avec un compte enseignant", 'request' => $request->request];
$jsonContent = $serializer->serialize($data, 'json');
$response = new Response($jsonContent, 200, $this->headers);
return $response;
}
$schoolWorkingTimeHourLessons = $schoolWorkingTimeHourLessonRepository->createQueryBuilder('entity')
->innerJoin('entity.establishment', 'establishment')
->addSelect('establishment')
->andWhere('establishment.establishmentGroup = :establishmentGroup')
->setParameter('establishmentGroup', $establishment->getEstablishmentGroup())
/*->andWhere('entity.establishment = :establishment')
->setParameter('establishment', $establishment)*/
->andWhere('entity.schoolYear = :schoolYear')
->setParameter('schoolYear', $schoolYear)
->andWhere('entity.schoolTeacher = :schoolTeacher')
->setParameter('schoolTeacher', $schoolTeacher)
->andWhere('entity.day = :day')
->setParameter('day', DateIntervalManage::FRENCH_DAY[date('D')])
->innerJoin('entity.settingTimeTable', 'settingTimeTable')
->addSelect('settingTimeTable')
->andWhere('settingTimeTable.start <= :start')
->setParameter('start', date('H:i'))
->orderBy('settingTimeTable.endh', 'DESC')
->getQuery()
->getResult();
if (count($schoolWorkingTimeHourLessons) <= 0) {
$data = ['code' => 400, 'msg' => "Aucune page horaire correspondante trouvé dans votre emploie du temps", 'request' => $request->request];
$jsonContent = $serializer->serialize($data, 'json');
$response = new Response($jsonContent, 200, $this->headers);
return $response;
}
$working_time_hour_lessons = new ArrayCollection();
foreach ($schoolWorkingTimeHourLessons as $key => $schoolWorkingTimeHourLesson) {
$working_time_hour_lessons->add([
'id' => $schoolWorkingTimeHourLesson->getId(),
'classroom' => $schoolWorkingTimeHourLesson->getSettingClassroom() ? $schoolWorkingTimeHourLesson->getSettingClassroom()->getLabel() : '',
'matter' => $schoolWorkingTimeHourLesson->getSchoolMatter() ? $schoolWorkingTimeHourLesson->getSchoolMatter()->getLabel() : '',
'timeTable' => $schoolWorkingTimeHourLesson->getSettingTimeTable() ? $schoolWorkingTimeHourLesson->getSettingTimeTable()->getLabel() : '',
'room' => $schoolWorkingTimeHourLesson->getSettingRoom() ? $schoolWorkingTimeHourLesson->getSettingRoom()->getLabel() : '',
'day' => $schoolWorkingTimeHourLesson->getDay(),
'_day' => DateIntervalManage::FRENCH_DAY[date('D')],
'_create_link' => $this->generateUrl('online_api_v1_callsheet_create', ['id' => $schoolWorkingTimeHourLesson->getId()]),
]);
}
$data = [
'code' => 200,
'msg' => "success",
'workingTimeHourLessons' => $working_time_hour_lessons,
'help' => "l'url _create_link, permet de crée une nouvelle fiche d'appel et rediriger vers cette fiche",
];
$jsonContent = $serializer->serialize($data, 'json');
$response = new Response($jsonContent, 200, $this->headers);
return $response;
}
/**
* @Route("/create/cours/{id}", name="online_api_v1_callsheet_create")
*/
public function create(Request $request, SchoolWorkingTimeHourLesson $schoolWorkingTimeHourLesson, UserRepository $userRepository, SchoolTeacherRepository $schoolTeacherRepository, SchoolYearRepository $schoolYearRepository, SchoolTeacherCallSheetRepository $schoolTeacherCallSheetRepository, SchoolWorkingTimeHourLessonRepository $schoolWorkingTimeHourLessonRepository): Response
{
$token = $request->headers->get('token');
$encoders = [new JsonEncoder()];
$normalizer = [new ObjectNormalizer()];
$serializer = new Serializer($normalizer, $encoders);
$user = $userRepository->findOneBy(['token' => $token], []);
if (null == $user) {
$data = ['code' => 403, 'msg' => "Access denied"];
$jsonContent = $serializer->serialize($data, 'json');
$response = new Response($jsonContent, 200, $this->headers);
return $response;
}
if (!$user->isTokenValid()) {
$data = ['code' => 403, 'msg' => "Token Invalid", 'time' => time(), 'exp' => ($user->getLastAuthTime())];
$jsonContent = $serializer->serialize($data, 'json');
$response = new Response($jsonContent, 200, $this->headers);
return $response;
}
$schoolYear = $schoolYearRepository->findOneBy(['is_ongoing' => 1], []);
$establishment = $user->getEstablishment();
$schoolTeacher = $schoolTeacherRepository->findOneBy(['salary' => $user->getRhSalary(), 'schoolYear' => $schoolYear, 'is_disabled' => 0], []);
if (null == $schoolTeacher) {
$data = ['code' => 403, 'msg' => "Veuillez vous connecter avec un compte enseignant", 'request' => $request->request];
$jsonContent = $serializer->serialize($data, 'json');
$response = new Response($jsonContent, 200, $this->headers);
return $response;
}
if ($schoolWorkingTimeHourLesson->getSchoolTeacher() != $schoolTeacher) {
$data = ['code' => 403, 'msg' => "Veuillez vous connecter avec au compte enseignant", 'request' => $request->request];
$jsonContent = $serializer->serialize($data, 'json');
$response = new Response($jsonContent, 200, $this->headers);
return $response;
}
$createDate = new DateTimeImmutable();
$schoolTeacherCallSheet = $schoolTeacherCallSheetRepository->findOneBy([
'establishment' => $schoolWorkingTimeHourLesson->getEstablishment(),
'schoolYear' => $schoolWorkingTimeHourLesson->getSchoolYear(),
'schoolTeacher' => $schoolWorkingTimeHourLesson->getSchoolTeacher(),
'schoolWorkingTime' => $schoolWorkingTimeHourLesson->getSchoolWorkingTime(),
'settingClassroom' => $schoolWorkingTimeHourLesson->getSettingClassroom(),
'settingTimeTable' => $schoolWorkingTimeHourLesson->getSettingTimeTable(),
'create_date' => $createDate,
'day' => $schoolWorkingTimeHourLesson->getDay(),
], []);
if (null != $schoolTeacherCallSheet) {
$data = ['code' => 400, 'msg' => "Cette fiche existe déjà.", 'request' => $request->request];
$jsonContent = $serializer->serialize($data, 'json');
$response = new Response($jsonContent, 200, $this->headers);
return $response;
}
if ($schoolWorkingTimeHourLesson->getSettingTimeTable() != null) {
if ($schoolWorkingTimeHourLesson->getSettingTimeTable()->getEndh() < date('H:i')) {
$data = ['code' => 400, 'msg' => "Impossible, le cours est terminé.", 'request' => $request->request];
$jsonContent = $serializer->serialize($data, 'json');
$response = new Response($jsonContent, 200, $this->headers);
return $response;
}
}
$entityManager = $this->getDoctrine()->getManager();
$schoolTeacherCallSheet = new SchoolTeacherCallSheet();
$schoolTeacherCallSheet->setCreatedBy($user->getId());
$schoolTeacherCallSheet->setEstablishment($schoolWorkingTimeHourLesson->getEstablishment());
$schoolTeacherCallSheet->setSchoolYear($schoolWorkingTimeHourLesson->getSchoolYear());
$schoolTeacherCallSheet->setSchoolMatter($schoolWorkingTimeHourLesson->getSchoolMatter());
$schoolTeacherCallSheet->setSchoolTeacher($schoolWorkingTimeHourLesson->getSchoolTeacher());
$schoolTeacherCallSheet->setSchoolWorkingTime($schoolWorkingTimeHourLesson->getSchoolWorkingTime());
$schoolTeacherCallSheet->setSettingClassroom($schoolWorkingTimeHourLesson->getSettingClassroom());
$schoolTeacherCallSheet->setSettingTimeTable($schoolWorkingTimeHourLesson->getSettingTimeTable());
$schoolTeacherCallSheet->setDay($schoolWorkingTimeHourLesson->getDay());
$schoolTeacherCallSheet->setCreateDate(new DateTimeImmutable());
$schoolTeacherCallSheet->setCreateTime(date('H:i'));
$entityManager->persist($schoolTeacherCallSheet);
if($schoolWorkingTimeHourLesson->getSchoolMatter()->getLv2() == 'AUCUN') {
if($schoolWorkingTimeHourLesson->getSchoolMatter()->getArtOrMusique() == null || $schoolWorkingTimeHourLesson->getSchoolMatter()->getArtOrMusique() == '') {
/* --- pas une langue vivante 2 --- */
foreach ($schoolWorkingTimeHourLesson->getSettingClassroom()->getRegistereds($schoolWorkingTimeHourLesson->getSchoolYear()) as $key => $registrationStudentRegistration) {
$schoolTeacherCallSheetLine = new SchoolTeacherCallSheetLine();
$schoolTeacherCallSheetLine->setEstablishment($schoolWorkingTimeHourLesson->getEstablishment());
$schoolTeacherCallSheetLine->setSchoolYear($schoolWorkingTimeHourLesson->getSchoolYear());
$schoolTeacherCallSheetLine->setRegistrationStudentRegistration($registrationStudentRegistration);
$schoolTeacherCallSheetLine->setCreateDate(new DateTimeImmutable());
$schoolTeacherCallSheetLine->setCreateTime($schoolTeacherCallSheet->getCreateTime());
$schoolTeacherCallSheetLine->setDay($schoolTeacherCallSheet->getDay());
$schoolTeacherCallSheetLine->setSchoolTeacherCallSheet($schoolTeacherCallSheet);
$entityManager->persist($schoolTeacherCallSheetLine);
}
}else {
foreach ($schoolWorkingTimeHourLesson->getSettingClassroom()->getRegistereds($schoolWorkingTimeHourLesson->getSchoolYear()) as $key => $registrationStudentRegistration) {
if ($registrationStudentRegistration->getStudent()->getArtOrMusique() == $schoolWorkingTimeHourLesson->getSchoolMatter()->getArtOrMusique()) {
$schoolTeacherCallSheetLine = new SchoolTeacherCallSheetLine();
$schoolTeacherCallSheetLine->setCreatedBy($user->getId());
$schoolTeacherCallSheetLine->setEstablishment($schoolWorkingTimeHourLesson->getEstablishment());
$schoolTeacherCallSheetLine->setSchoolYear($schoolWorkingTimeHourLesson->getSchoolYear());
$schoolTeacherCallSheetLine->setRegistrationStudentRegistration($registrationStudentRegistration);
$schoolTeacherCallSheetLine->setCreateDate(new DateTimeImmutable());
$schoolTeacherCallSheetLine->setCreateTime($schoolTeacherCallSheet->getCreateTime());
$schoolTeacherCallSheetLine->setDay($schoolTeacherCallSheet->getDay());
$schoolTeacherCallSheetLine->setSchoolTeacherCallSheet($schoolTeacherCallSheet);
$entityManager->persist($schoolTeacherCallSheetLine);
}
}
}
}else {
/* --- est une langue vivante 2 --- */
foreach ($schoolWorkingTimeHourLesson->getSettingClassroom()->getRegistereds($schoolWorkingTimeHourLesson->getSchoolYear()) as $key => $registrationStudentRegistration) {
if ($registrationStudentRegistration->getStudent()->getLv2() == $schoolWorkingTimeHourLesson->getSchoolMatter()->getLv2()) {
$schoolTeacherCallSheetLine = new SchoolTeacherCallSheetLine();
$schoolTeacherCallSheetLine->setCreatedBy($user->getId());
$schoolTeacherCallSheetLine->setEstablishment($schoolWorkingTimeHourLesson->getEstablishment());
$schoolTeacherCallSheetLine->setSchoolYear($schoolWorkingTimeHourLesson->getSchoolYear());
$schoolTeacherCallSheetLine->setRegistrationStudentRegistration($registrationStudentRegistration);
$schoolTeacherCallSheetLine->setCreateDate(new DateTimeImmutable());
$schoolTeacherCallSheetLine->setCreateTime($schoolTeacherCallSheet->getCreateTime());
$schoolTeacherCallSheetLine->setDay($schoolTeacherCallSheet->getDay());
$schoolTeacherCallSheetLine->setSchoolTeacherCallSheet($schoolTeacherCallSheet);
$entityManager->persist($schoolTeacherCallSheetLine);
}
}
}
try {
$entityManager->flush();
$data = [
'code' => 200,
'_call_link' => $this->generateUrl('online_api_v1_callsheet_call', ['id' => $schoolTeacherCallSheet->getId()]),
'id' => $schoolTeacherCallSheet->getId(),
'createDate' => $schoolTeacherCallSheet->getCreateDate()->format('d/m/Y'),
'classroom' => $schoolWorkingTimeHourLesson->getSettingClassroom() ? $schoolWorkingTimeHourLesson->getSettingClassroom()->getLabel() : '',
'matter' => $schoolWorkingTimeHourLesson->getSchoolMatter() ? $schoolWorkingTimeHourLesson->getSchoolMatter()->getLabel() : '',
'timeTable' => $schoolWorkingTimeHourLesson->getSettingTimeTable() ? $schoolWorkingTimeHourLesson->getSettingTimeTable()->getLabel() : '',
'day' => $schoolWorkingTimeHourLesson->getDay(),
'help' => "L'utilisateur doit être redirigé vers _call_url qui affiche la liste des elève à appeler",
'request' => $request->request
];
$jsonContent = $serializer->serialize($data, 'json');
$response = new Response($jsonContent, 200, $this->headers);
return $response;
} catch (\Throwable $th) {
$data = ['code' => 500, 'msg' => $th->getMessage(), 'request' => $request->request];
$jsonContent = $serializer->serialize($data, 'json');
$response = new Response($jsonContent, 500, $this->headers);
return $response;
}
}
/**
* @Route("/call/{id}", name="online_api_v1_callsheet_call")
*/
public function call(Request $request, UserRepository $userRepository, SchoolTeacherRepository $schoolTeacherRepository, SchoolTeacherCallSheet $schoolTeacherCallSheet, SchoolTeacherCallSheetLineRepository $schoolTeacherCallSheetLineRepository, SchoolYearRepository $schoolYearRepository): Response
{
$token = $request->headers->get('token');
$encoders = [new JsonEncoder()];
$normalizer = [new ObjectNormalizer()];
$serializer = new Serializer($normalizer, $encoders);
$user = $userRepository->findOneBy(['token' => $token], []);
if (null == $user) {
$data = ['code' => 403, 'msg' => "Access denied"];
$jsonContent = $serializer->serialize($data, 'json');
$response = new Response($jsonContent, 200, $this->headers);
return $response;
}
if (!$user->isTokenValid()) {
$data = ['code' => 403, 'msg' => "Token Invalid", 'time' => time(), 'exp' => ($user->getLastAuthTime())];
$jsonContent = $serializer->serialize($data, 'json');
$response = new Response($jsonContent, 200, $this->headers);
return $response;
}
$schoolYear = $schoolYearRepository->findOneBy(['is_ongoing' => 1], []);
$establishment = $user->getEstablishment();
$schoolTeacher = $schoolTeacherRepository->findOneBy(['salary' => $user->getRhSalary(), 'schoolYear' => $schoolYear, 'is_disabled' => 0], []);
if (null == $schoolTeacher) {
$data = ['code' => 403, 'msg' => "Veuillez vous connecter avec un compte enseignant", 'request' => $request->request];
$jsonContent = $serializer->serialize($data, 'json');
$response = new Response($jsonContent, 403, $this->headers);
return $response;
}
$schoolTeacherCallSheetLines = new ArrayCollection();
$callSheetLines = $schoolTeacherCallSheetLineRepository->createQueryBuilder('entity')
->innerJoin('entity.registrationStudentRegistration', 'registrationStudentRegistration')
->addSelect('registrationStudentRegistration')
->innerJoin('registrationStudentRegistration.student', 'student')
->addSelect('student')
->andWhere('entity.schoolTeacherCallSheet = :callSheet')
->setParameter('callSheet', $schoolTeacherCallSheet)
->orderBy('student.last_name', 'ASC')
->getQuery()
->getResult();
foreach ($callSheetLines as $key => $schoolTeacherCallSheetLine) {
$msg = 'Accepté(e)';
if ($schoolTeacherCallSheetLine->getRegistrationStudentRegistration()->getAmountDueAt($schoolTeacherCallSheet->getCreateDate()) > $schoolTeacherCallSheet->getEstablishment()->getRecoveryPutOutAmount()) {
$msg = 'Non Accepté(e)';
}
$schoolTeacherCallSheetLines->add([
'id' => $schoolTeacherCallSheetLine->getId(),
'code' => $schoolTeacherCallSheetLine->getRegistrationStudentRegistration()->getStudent()->getCode(),
'registrationNumber' => $schoolTeacherCallSheetLine->getRegistrationStudentRegistration()->getStudent()->getRegistrationNumber().' ('.$msg.')',
'name' => $schoolTeacherCallSheetLine->getRegistrationStudentRegistration()->getStudent()->getName(),
'amountDue' => $schoolTeacherCallSheetLine->getRegistrationStudentRegistration()->getAmountDueAt(new DateTimeImmutable()) >= $schoolTeacherCallSheetLine->getRegistrationStudentRegistration()->getEstablishment()->getRecoveryPutOutAmount() ? $schoolTeacherCallSheetLine->getRegistrationStudentRegistration()->getAmountDueAt(new DateTimeImmutable()) : 0,
'isPresent' => $schoolTeacherCallSheetLine->getIsPresente(),
'isAbsent' => $schoolTeacherCallSheetLine->getIsAbsent(),
'_set_to_present_link' => $this->generateUrl('online_api_v1_callsheet_set_to_present', ['id' => $schoolTeacherCallSheetLine->getId()]),
'_set_to_absent_link' => $this->generateUrl('online_api_v1_callsheet_set_to_absent', ['id' => $schoolTeacherCallSheetLine->getId()]),
]);
}
$data = [
'code' => 200,
'_validate_link' => $this->generateUrl('online_api_v1_callsheet_validate', ['id' => $schoolTeacherCallSheet->getId()]),
'_cancel_link' => $this->generateUrl('online_api_v1_callsheet_cancel', ['id' => $schoolTeacherCallSheet->getId()]),
'id' => $schoolTeacherCallSheet->getId(),
'help' => "_set_to_present_link permet de marquer un élève présent, _set_to_absent_link permet de marquer un élève absent",
'schoolTeacherCallSheetLines' => $schoolTeacherCallSheetLines,
'request' => $request->request
];
$jsonContent = $serializer->serialize($data, 'json');
$response = new Response($jsonContent, 200, $this->headers);
return $response;
}
/**
* @Route("/validate/{id}", name="online_api_v1_callsheet_validate")
*/
public function validate(Request $request, UserRepository $userRepository, SchoolTeacherRepository $schoolTeacherRepository, SchoolTeacherCallSheet $schoolTeacherCallSheet, SchoolYearRepository $schoolYearRepository, SMSSender $smsSender): Response
{
$token = $request->headers->get('token');
$encoders = [new JsonEncoder()];
$normalizer = [new ObjectNormalizer()];
$serializer = new Serializer($normalizer, $encoders);
$user = $userRepository->findOneBy(['token' => $token], []);
if (null == $user) {
$data = ['code' => 403, 'msg' => "Access denied"];
$jsonContent = $serializer->serialize($data, 'json');
$response = new Response($jsonContent, 200, $this->headers);
return $response;
}
if (!$user->isTokenValid()) {
$data = ['code' => 403, 'msg' => "Token Invalid", 'time' => time(), 'exp' => ($user->getLastAuthTime())];
$jsonContent = $serializer->serialize($data, 'json');
$response = new Response($jsonContent, 200, $this->headers);
return $response;
}
$schoolYear = $schoolYearRepository->findOneBy(['is_ongoing' => 1], []);
$establishment = $user->getEstablishment();
$schoolTeacher = $schoolTeacherRepository->findOneBy(['salary' => $user->getRhSalary(), 'schoolYear' => $schoolYear, 'is_disabled' => 0], []);
if (null == $schoolTeacher) {
$data = ['code' => 403, 'msg' => "Veuillez vous connecter avec un compte enseignant", 'request' => $request->request];
$jsonContent = $serializer->serialize($data, 'json');
$response = new Response($jsonContent, 403, $this->headers);
return $response;
}
if ($schoolTeacherCallSheet->getStatus() == SchoolTeacherCallSheet::STATUS_REJETE) {
$data = ['code' => 400, 'msg' => "Impossible: La fiche a été rejetée, veuillez contacter votre responsable", 'request' => $request->request];
$jsonContent = $serializer->serialize($data, 'json');
$response = new Response($jsonContent, 400, $this->headers);
return $response;
}
foreach ($schoolTeacherCallSheet->getSchoolTeacherCallSheetLines() as $key => $schoolTeacherCallSheetLine) {
if (!$schoolTeacherCallSheetLine->getIsAbsent() && !$schoolTeacherCallSheetLine->getIsPresente()) {
$data = ['code' => 400, 'msg' => "Impossible: Tous les élèves n'ont pas été appelés", 'request' => $request->request];
$jsonContent = $serializer->serialize($data, 'json');
$response = new Response($jsonContent, 400, $this->headers);
return $response;
}
}
$entityManager = $this->getDoctrine()->getManager();
if ($establishment->getIsSendAbsenceSms()){
$sms = new OrangeSDK(CommunicationMessage::SENDER_ID);
foreach ($schoolTeacherCallSheet->getSchoolTeacherCallSheetLines() as $key => $schoolTeacherCallSheetLine) {
if ($schoolTeacherCallSheetLine->getIsAbsent()) {
$message = "";
$contacts = [];
$contacts[] = '225'.str_replace(' ', '',trim($schoolTeacherCallSheetLine->getRegistrationStudentRegistration()->getStudent()->getNotificationPhoneNumber()));
$contact = '225'.str_replace(' ', '',trim($schoolTeacherCallSheetLine->getRegistrationStudentRegistration()->getStudent()->getNotificationPhoneNumber()));
$message = $schoolTeacherCallSheetLine->getRegistrationStudentRegistration()->getStudent()->getName()." A ETE ABSENT ";
$message = $message . " de ".$schoolTeacherCallSheet->getSettingTimeTable()->getLabel() ;
$message = $message . " AU COURS DE " . $schoolTeacherCallSheet->getSchoolMatter()->getLabel();
$message = $message . " CE " . $schoolTeacherCallSheet->getCreateDate()->format('d-m-Y');
if ($establishment->getSmsGateway() == 'OCI') {
$oci_response = $sms->message($message)
->as($establishment->getOciSmsSender())
->from($establishment->getOciSmsPhone())
->to(intval($contact));
try {
$oci_response->send();
} catch (\Throwable $th) {
$this->addFlash('warning', $th->getMessage());
}
$communicationMessage = new CommunicationMessage();
$communicationMessage->setCode($contact.$schoolTeacherCallSheetLine->getId());
$communicationMessage->setContacts($contacts);
$communicationMessage->setContent($message);
$communicationMessage->setEstablishment($establishment);
$communicationMessage->setType($smsSender::UNICODE_CHARSET);
$entityManager->persist($communicationMessage);
}else {
$response = $smsSender->sendSmsByEstablishment($establishment, $message, $contacts, $smsSender::UNICODE_CHARSET);
$responses = explode(':', $response);
$code = trim($responses[1]);
$communicationMessage = new CommunicationMessage();
$communicationMessage->setCode($code);
$communicationMessage->setContacts($contacts);
$communicationMessage->setContent($message);
$communicationMessage->setEstablishment($establishment);
$communicationMessage->setType($smsSender::UNICODE_CHARSET);
$entityManager->persist($communicationMessage);
}
}
}
}
$schoolTeacherCallSheet->setStatus(SchoolTeacherCallSheet::STATUS_VALIDE);
$schoolTeacherCallSheet->setIsValidated(true);
try {
$entityManager->flush();
$data = ['code' => 200, 'msg' => "Validation effectué", 'request' => $request->request];
$jsonContent = $serializer->serialize($data, 'json');
$response = new Response($jsonContent, 200, $this->headers);
return $response;
} catch (\Throwable $th) {
$data = ['code' => 500, 'msg' => $th->getMessage(), 'request' => $request->request];
$jsonContent = $serializer->serialize($data, 'json');
$response = new Response($jsonContent, 500, $this->headers);
return $response;
}
}
/**
* @Route("/cancel/{id}", name="online_api_v1_callsheet_cancel")
*/
public function cancel(Request $request, UserRepository $userRepository, SchoolTeacherRepository $schoolTeacherRepository, SchoolTeacherCallSheet $schoolTeacherCallSheet, SchoolYearRepository $schoolYearRepository): Response
{
$token = $request->headers->get('token');
$encoders = [new JsonEncoder()];
$normalizer = [new ObjectNormalizer()];
$serializer = new Serializer($normalizer, $encoders);
if ($schoolTeacherCallSheet->getIsValidated()) {
$data = ['code' => 400, 'msg' => "Impossible, la fiche est déjà validée"];
$jsonContent = $serializer->serialize($data, 'json');
$response = new Response($jsonContent, 400, $this->headers);
return $response;
}
$user = $userRepository->findOneBy(['token' => $token], []);
if (null == $user) {
$data = ['code' => 403, 'msg' => "Access denied"];
$jsonContent = $serializer->serialize($data, 'json');
$response = new Response($jsonContent, 200, $this->headers);
return $response;
}
if (!$user->isTokenValid()) {
$data = ['code' => 403, 'msg' => "Token Invalid", 'time' => time(), 'exp' => ($user->getLastAuthTime())];
$jsonContent = $serializer->serialize($data, 'json');
$response = new Response($jsonContent, 200, $this->headers);
return $response;
}
$schoolYear = $schoolYearRepository->findOneBy(['is_ongoing' => 1], []);
$establishment = $user->getEstablishment();
$schoolTeacher = $schoolTeacherRepository->findOneBy(['salary' => $user->getRhSalary(), 'schoolYear' => $schoolYear, 'is_disabled' => 0], []);
if (null == $schoolTeacher) {
$data = ['code' => 403, 'msg' => "Veuillez vous connecter avec un compte enseignant", 'request' => $request->request];
$jsonContent = $serializer->serialize($data, 'json');
$response = new Response($jsonContent, 403, $this->headers);
return $response;
}
$entityManager = $this->getDoctrine()->getManager();
$schoolTeacherCallSheet->setIsValidated(false);
try {
$entityManager->flush();
$data = ['code' => 200, 'msg' => "Annulation effectué", 'request' => $request->request];
$jsonContent = $serializer->serialize($data, 'json');
$response = new Response($jsonContent, 200, $this->headers);
return $response;
} catch (\Throwable $th) {
$data = ['code' => 500, 'msg' => $th->getMessage(), 'request' => $request->request];
$jsonContent = $serializer->serialize($data, 'json');
$response = new Response($jsonContent, 500, $this->headers);
return $response;
}
}
/**
* @Route("/set-to-present/sheetline/{id}", name="online_api_v1_callsheet_set_to_present")
*/
public function setToPresent(Request $request, UserRepository $userRepository, SchoolTeacherRepository $schoolTeacherRepository, SchoolTeacherCallSheetLine $schoolTeacherCallSheetLine, SchoolYearRepository $schoolYearRepository): Response
{
$token = $request->headers->get('token');
$encoders = [new JsonEncoder()];
$normalizer = [new ObjectNormalizer()];
$serializer = new Serializer($normalizer, $encoders);
if ($schoolTeacherCallSheetLine->getSchoolTeacherCallSheet()->getIsValidated()) {
$data = ['code' => 400, 'msg' => "Impossible, la fiche est déjà validée"];
$jsonContent = $serializer->serialize($data, 'json');
$response = new Response($jsonContent, 400, $this->headers);
return $response;
}
$user = $userRepository->findOneBy(['token' => $token], []);
if (null == $user) {
$data = ['code' => 403, 'msg' => "Access denied"];
$jsonContent = $serializer->serialize($data, 'json');
$response = new Response($jsonContent, 200, $this->headers);
return $response;
}
if (!$user->isTokenValid()) {
$data = ['code' => 403, 'msg' => "Token Invalid", 'time' => time(), 'exp' => ($user->getLastAuthTime())];
$jsonContent = $serializer->serialize($data, 'json');
$response = new Response($jsonContent, 200, $this->headers);
return $response;
}
$schoolYear = $schoolYearRepository->findOneBy(['is_ongoing' => 1], []);
$establishment = $user->getEstablishment();
$schoolTeacher = $schoolTeacherRepository->findOneBy(['salary' => $user->getRhSalary(), 'schoolYear' => $schoolYear, 'is_disabled' => 0], []);
if (null == $schoolTeacher) {
$data = ['code' => 403, 'msg' => "Veuillez vous connecter avec un compte enseignant", 'request' => $request->request];
$jsonContent = $serializer->serialize($data, 'json');
$response = new Response($jsonContent, 403, $this->headers);
return $response;
}
$entityManager = $this->getDoctrine()->getManager();
$schoolTeacherCallSheetLine->setIsPresente(true);
$schoolTeacherCallSheetLine->setIsAbsent(false);
try {
$entityManager->flush();
$data = [
'code' => 200,
'msg' => "Présent(e)",
'id' => $schoolTeacherCallSheetLine->getId(),
'tr' => "#tr-".$schoolTeacherCallSheetLine->getId(),
'td' => "#td-".$schoolTeacherCallSheetLine->getId(),
'btnPresent' => "#btn-present-".$schoolTeacherCallSheetLine->getId(),
'isCanBeSaved' => $schoolTeacherCallSheetLine->getSchoolTeacherCallSheet()->isCanBeSaved()
];
$jsonContent = $serializer->serialize($data, 'json');
$response = new Response($jsonContent, 200, $this->headers);
return $response;
} catch (\Throwable $th) {
$data = ['code' => 500, 'msg' => $th->getMessage(), 'request' => $request->request];
$jsonContent = $serializer->serialize($data, 'json');
$response = new Response($jsonContent, 500, $this->headers);
return $response;
}
}
/**
* @Route("/set-to-absent/sheetline/{id}", name="online_api_v1_callsheet_set_to_absent")
*/
public function setToAbsent(Request $request, UserRepository $userRepository, SchoolTeacherRepository $schoolTeacherRepository, SchoolTeacherCallSheetLine $schoolTeacherCallSheetLine, SchoolYearRepository $schoolYearRepository): Response
{
$token = $request->headers->get('token');
$encoders = [new JsonEncoder()];
$normalizer = [new ObjectNormalizer()];
$serializer = new Serializer($normalizer, $encoders);
if ($schoolTeacherCallSheetLine->getSchoolTeacherCallSheet()->getIsValidated()) {
$data = ['code' => 400, 'msg' => "Impossible, la fiche est déjà validée"];
$jsonContent = $serializer->serialize($data, 'json');
$response = new Response($jsonContent, 400, $this->headers);
return $response;
}
$user = $userRepository->findOneBy(['token' => $token], []);
if (null == $user) {
$data = ['code' => 403, 'msg' => "Access denied"];
$jsonContent = $serializer->serialize($data, 'json');
$response = new Response($jsonContent, 200, $this->headers);
return $response;
}
if (!$user->isTokenValid()) {
$data = ['code' => 403, 'msg' => "Token Invalid", 'time' => time(), 'exp' => ($user->getLastAuthTime())];
$jsonContent = $serializer->serialize($data, 'json');
$response = new Response($jsonContent, 200, $this->headers);
return $response;
}
$schoolYear = $schoolYearRepository->findOneBy(['is_ongoing' => 1], []);
$establishment = $user->getEstablishment();
$schoolTeacher = $schoolTeacherRepository->findOneBy(['salary' => $user->getRhSalary(), 'schoolYear' => $schoolYear], []);
if (null == $schoolTeacher) {
$data = ['code' => 403, 'msg' => "Veuillez vous connecter avec un compte enseignant", 'request' => $request->request];
$jsonContent = $serializer->serialize($data, 'json');
$response = new Response($jsonContent, 403, $this->headers);
return $response;
}
$entityManager = $this->getDoctrine()->getManager();
$schoolTeacherCallSheetLine->setIsPresente(false);
$schoolTeacherCallSheetLine->setIsAbsent(true);
try {
$entityManager->flush();
$data = [
'code' => 200,
'msg' => "Absent(e)",
'id' => $schoolTeacherCallSheetLine->getId(),
'tr' => "#tr-".$schoolTeacherCallSheetLine->getId(),
'td' => "#td-".$schoolTeacherCallSheetLine->getId(),
'btnAbsent' => "#btn-absent-".$schoolTeacherCallSheetLine->getId(),
'isCanBeSaved' => $schoolTeacherCallSheetLine->getSchoolTeacherCallSheet()->isCanBeSaved()
];
$jsonContent = $serializer->serialize($data, 'json');
$response = new Response($jsonContent, 200, $this->headers);
return $response;
} catch (\Throwable $th) {
$data = ['code' => 500, 'msg' => $th->getMessage(), 'request' => $request->request];
$jsonContent = $serializer->serialize($data, 'json');
$response = new Response($jsonContent, 500, $this->headers);
return $response;
}
}
/**
* @Route("/set-all-topresent/{id}", name="online_api_v1_callsheet_set_all_topresent")
*/
public function set_all_topresent(Request $request, UserRepository $userRepository, SchoolTeacherRepository $schoolTeacherRepository, SchoolTeacherCallSheet $schoolTeacherCallSheet, SchoolYearRepository $schoolYearRepository): Response
{
$token = $request->headers->get('token');
$encoders = [new JsonEncoder()];
$normalizer = [new ObjectNormalizer()];
$serializer = new Serializer($normalizer, $encoders);
$user = $userRepository->findOneBy(['token' => $token], []);
if (null == $user) {
$data = ['code' => 403, 'msg' => "Access denied"];
$jsonContent = $serializer->serialize($data, 'json');
$response = new Response($jsonContent, 200, $this->headers);
return $response;
}
if (!$user->isTokenValid()) {
$data = ['code' => 403, 'msg' => "Token Invalid", 'time' => time(), 'exp' => ($user->getLastAuthTime())];
$jsonContent = $serializer->serialize($data, 'json');
$response = new Response($jsonContent, 200, $this->headers);
return $response;
}
$schoolYear = $schoolYearRepository->findOneBy(['is_ongoing' => 1], []);
$establishment = $user->getEstablishment();
$schoolTeacher = $schoolTeacherRepository->findOneBy(['salary' => $user->getRhSalary(), 'schoolYear' => $schoolYear], []);
if (null == $schoolTeacher) {
$data = ['code' => 403, 'msg' => "Veuillez vous connecter avec un compte enseignant", 'request' => $request->request];
$jsonContent = $serializer->serialize($data, 'json');
$response = new Response($jsonContent, 403, $this->headers);
return $response;
}
foreach ($schoolTeacherCallSheet->getSchoolTeacherCallSheetLines() as $key => $schoolTeacherCallSheetLine) {
$schoolTeacherCallSheetLine->setIsPresente(true);
$schoolTeacherCallSheetLine->setIsAbsent(false);
}
$entityManager = $this->getDoctrine()->getManager();
try {
$entityManager->flush();
$data = ['code' => 200, 'msg' => "Traitement effectué avec succès", 'request' => $request->request];
$jsonContent = $serializer->serialize($data, 'json');
$response = new Response($jsonContent, 200, $this->headers);
return $response;
} catch (\Throwable $th) {
$data = ['code' => 500, 'msg' => $th->getMessage(), 'request' => $request->request];
$jsonContent = $serializer->serialize($data, 'json');
$response = new Response($jsonContent, 500, $this->headers);
return $response;
}
}
/**
* @Route("/call/callsheet/{id}", name="online_api_v1_call_callsheet")
*/
public function call_callsheet(Request $request, UserRepository $userRepository, SchoolTeacherRepository $schoolTeacherRepository, SchoolTeacherCallSheet $schoolTeacherCallSheet, SchoolTeacherCallSheetLineRepository $schoolTeacherCallSheetLineRepository, SchoolYearRepository $schoolYearRepository): Response
{
$token = $request->headers->get('token');
$encoders = [new JsonEncoder()];
$normalizer = [new ObjectNormalizer()];
$serializer = new Serializer($normalizer, $encoders);
if ($schoolTeacherCallSheet->getIsValidated()) {
$data = ['code' => 400, 'msg' => "Impossible, la fiche est déjà validée"];
$jsonContent = $serializer->serialize($data, 'json');
$response = new Response($jsonContent, 400, $this->headers);
return $response;
}
$user = $userRepository->findOneBy(['token' => $token], []);
if (null == $user) {
$data = ['code' => 403, 'msg' => "Access denied"];
$jsonContent = $serializer->serialize($data, 'json');
$response = new Response($jsonContent, 200, $this->headers);
return $response;
}
if (!$user->isTokenValid()) {
$data = ['code' => 403, 'msg' => "Token Invalid", 'time' => time(), 'exp' => ($user->getLastAuthTime())];
$jsonContent = $serializer->serialize($data, 'json');
$response = new Response($jsonContent, 200, $this->headers);
return $response;
}
$schoolYear = $schoolYearRepository->findOneBy(['is_ongoing' => 1], []);
$establishment = $user->getEstablishment();
$schoolTeacher = $schoolTeacherRepository->findOneBy(['salary' => $user->getRhSalary(), 'schoolYear' => $schoolYear], []);
if (null == $schoolTeacher) {
$data = ['code' => 403, 'msg' => "Veuillez vous connecter avec un compte enseignant", 'request' => $request->request];
$jsonContent = $serializer->serialize($data, 'json');
$response = new Response($jsonContent, 403, $this->headers);
return $response;
}
$content = $request->getContent();
$contentJson = json_decode($content, true);
$call_sheet_lines = json_decode($contentJson['callSheetLines']);
for ($i=0; $i < count($call_sheet_lines); $i++) {
$schoolTeacherCallSheetLine = $schoolTeacherCallSheetLineRepository->findOneBy(['id' => $call_sheet_lines[$i]->id], []);
if(null != $schoolTeacherCallSheetLine){
$schoolTeacherCallSheetLine->setIsPresente($call_sheet_lines[$i]->isPresent);
$schoolTeacherCallSheetLine->setIsAbsent($call_sheet_lines[$i]->isAbsent);
if (!$schoolTeacherCallSheetLine->getIsAbsent() && !$schoolTeacherCallSheetLine->getIsPresente()) {
$data = ['code' => 400, 'msg' => "Impossible: Tous les élèves n'ont pas été appelés"];
$jsonContent = $serializer->serialize($data, 'json');
$response = new Response($jsonContent, 400, $this->headers);
return $response;
}
}
}
$entityManager = $this->getDoctrine()->getManager();
try {
$entityManager->flush();
$data = [
'code' => 200,
'msg' => "Effectué",
'_redirect' => $this->generateUrl('online_api_v1_callsheet_call', ['id' => $schoolTeacherCallSheet->getId()])
];
$jsonContent = $serializer->serialize($data, 'json');
$response = new Response($jsonContent, 200, $this->headers);
return $response;
} catch (\Throwable $th) {
$data = ['code' => 500, 'msg' => $th->getMessage(), 'request' => $request->request];
$jsonContent = $serializer->serialize($data, 'json');
$response = new Response($jsonContent, 500, $this->headers);
return $response;
}
}
}