mv: All Controllers

* Move all controllers to sub-directories for organization
This commit is contained in:
Ryan Prather 2025-01-28 20:43:23 -05:00
parent fc9ebbd327
commit 13aaaae34c
17 changed files with 412 additions and 159 deletions

View File

@ -1,9 +1,9 @@
<?php <?php
namespace App\Controller; namespace App\Controller\Admin;
use App\Entity\Supervision; use App\Entity\Staff\Supervision;
use App\Entity\User; use App\Entity\System\User;
use App\Factory\MessageFactory; use App\Factory\MessageFactory;
use App\Form\EditUserFormType; use App\Form\EditUserFormType;
use App\Form\SupervisorFormType; use App\Form\SupervisorFormType;
@ -11,7 +11,6 @@ use App\Form\UserFormType;
use App\Libs\Breadcrumb; use App\Libs\Breadcrumb;
use App\Libs\NavList; use App\Libs\NavList;
use App\Libs\Libs; use App\Libs\Libs;
use App\Libs\PageParameters;
use App\Repository\UserRepository; use App\Repository\UserRepository;
use DateTime; use DateTime;
use DateTimeZone; use DateTimeZone;

View File

@ -1,17 +1,15 @@
<?php <?php
namespace App\Controller; namespace App\Controller\Case;
use App\Entity\CaseDocument; use App\Entity\Case\CaseLocation;
use App\Entity\CaseLocation; use App\Entity\Company\CompanyDocument;
use App\Entity\CompanyDocument; use App\Entity\Case\Member;
use App\Entity\Location; use App\Entity\Case\MemberCase;
use App\Entity\Member; use App\Entity\System\Location;
use App\Entity\MemberCase; use App\Entity\System\ReferralSource;
use App\Entity\MemberDocument; use App\Entity\System\User;
use App\Entity\ReferralSource; use App\Entity\System\UserCase;
use App\Entity\User;
use App\Entity\UserCase;
use App\Factory\MessageFactory; use App\Factory\MessageFactory;
use App\Form\CaseDocumentFormType; use App\Form\CaseDocumentFormType;
use App\Form\LocationFormType; use App\Form\LocationFormType;
@ -24,7 +22,6 @@ use Doctrine\ORM\EntityManagerInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
use Symfony\Component\Routing\Attribute\Route; use Symfony\Component\Routing\Attribute\Route;
use Symfony\Component\Security\Core\Exception\AccessDeniedException; use Symfony\Component\Security\Core\Exception\AccessDeniedException;
use Symfony\Component\Security\Http\Attribute\CurrentUser; use Symfony\Component\Security\Http\Attribute\CurrentUser;

View File

@ -0,0 +1,31 @@
<?php
namespace App\Controller\Case;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\HttpFoundation\Response;
class GeoapifyController extends AbstractController
{
#[Route('/api/autocomplete-address/{searchText}', name: 'app_api_autocomplete_address')]
public function autocompleteAddress(string $searchText): Response
{
$params = [
'text' => $searchText,
'format' => 'json',
'apiKey' => $_ENV['GEOAPIFY_API_KEY']
];
$url = "https://api.geoapify.com/v1/autocomplete?".http_build_query($params);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
$result = curl_exec($ch);
curl_close($ch);
return $this->json($result);
}
}

View File

@ -1,11 +1,11 @@
<?php <?php
namespace App\Controller; namespace App\Controller\Case;
use App\Entity\CaseItinerary; use App\Entity\Case\CaseItinerary;
use App\Entity\MemberCase; use App\Entity\Case\MemberCase;;
use App\Entity\User; use App\Entity\System\User;
use App\Entity\UserCase; use App\Entity\System\UserCase;
use App\Libs\Breadcrumb; use App\Libs\Breadcrumb;
use App\Libs\Libs; use App\Libs\Libs;
use App\Libs\NavList; use App\Libs\NavList;

View File

@ -1,14 +1,13 @@
<?php <?php
namespace App\Controller; namespace App\Controller\Case;
use App\Entity\CompanyDocument; use App\Entity\Company\CompanyDocument;
use App\Entity\Member; use App\Entity\Case\Member;
use App\Entity\MemberCase; use App\Entity\Case\MemberCase;;
use App\Entity\MemberDocument; use App\Entity\Case\MemberDocument;
use App\Entity\Messages; use App\Entity\System\User;
use App\Entity\User; use App\Entity\System\UserCase;
use App\Entity\UserCase;
use App\Form\MemberFormType; use App\Form\MemberFormType;
use App\Libs\Breadcrumb; use App\Libs\Breadcrumb;
use App\Libs\Libs; use App\Libs\Libs;

View File

@ -1,26 +1,24 @@
<?php <?php
namespace App\Controller; namespace App\Controller\Case;
use App\Entity\Member; use App\Entity\Case\Member;
use App\Entity\MemberCase; use App\Entity\Case\MemberCase;;
use App\Entity\Referral; use App\Entity\Case\Referral;
use App\Entity\StandardNote; use App\Entity\Case\StandardNote;
use App\Entity\StandardNoteMember; use App\Entity\Case\StandardNoteMember;
use App\Entity\User; use App\Entity\System\User;
use App\Entity\UserCase; use App\Entity\System\UserCase;
use App\Entity\VisitNote; use App\Entity\Case\VisitNote;
use App\Entity\VisitNoteMembers; use App\Entity\Case\VisitNoteMembers;
use App\Enums\NoteLocation; use App\Enums\Case\NoteLocation;
use App\Enums\NoteMethod; use App\Enums\Case\NoteMethod;
use App\Enums\ReferralServiceType; use App\Enums\Case\ReferralServiceType;
use App\Form\StandardNoteFormType; use App\Form\StandardNoteFormType;
use App\Form\VisitNoteFormType; use App\Form\VisitNoteFormType;
use App\Libs\Breadcrumb; use App\Libs\Breadcrumb;
use App\Libs\Libs; use App\Libs\Libs;
use App\Libs\NavList; use App\Libs\NavList;
use DateTime;
use DateTimeZone;
use Doctrine\ORM\EntityManagerInterface; use Doctrine\ORM\EntityManagerInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Request;

View File

@ -1,12 +1,11 @@
<?php <?php
namespace App\Controller; namespace App\Controller\Case;
use App\Entity\MemberCase; use App\Entity\Case\MemberCase;;
use App\Entity\Messages; use App\Entity\Case\Referral;
use App\Entity\Referral; use App\Entity\System\User;
use App\Entity\User; use App\Entity\System\UserCase;
use App\Entity\UserCase;
use App\Factory\MessageFactory; use App\Factory\MessageFactory;
use App\Form\ReferralFormType; use App\Form\ReferralFormType;
use App\Libs\Breadcrumb; use App\Libs\Breadcrumb;

View File

@ -1,10 +1,10 @@
<?php <?php
namespace App\Controller; namespace App\Controller\Company;
use App\Entity\Company; use App\Entity\Company\Company;
use App\Entity\CompanyDocument; use App\Entity\Company\CompanyDocument;
use App\Entity\User; use App\Entity\System\User;
use App\Form\CompanyDocumentFormType; use App\Form\CompanyDocumentFormType;
use App\Form\InternalCompanyFormType; use App\Form\InternalCompanyFormType;
use App\Libs\Breadcrumb; use App\Libs\Breadcrumb;

View File

@ -1,16 +1,17 @@
<?php <?php
namespace App\Controller; namespace App\Controller\Company;
use App\Entity\CompanyDocument; use App\Entity\Company\CompanyDocument;
use App\Entity\Member; use App\Entity\Case\Member;
use App\Entity\MemberDocument; use App\Entity\Case\MemberDocument;
use App\Entity\User; use App\Entity\System\User;
use App\Libs\Breadcrumb; use App\Libs\Breadcrumb;
use App\Libs\NavList; use App\Libs\NavList;
use App\Libs\Libs; use App\Libs\Libs;
use Doctrine\ORM\EntityManagerInterface; use Doctrine\ORM\EntityManagerInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
use Symfony\Component\Routing\Attribute\Route; use Symfony\Component\Routing\Attribute\Route;
@ -49,12 +50,14 @@ class DocumentController extends AbstractController
} }
#[Route('/member/{memberId}/document/{docId}/sign', name: 'app_member_sign_case_doc')] #[Route('/member/{memberId}/document/{docId}/sign', name: 'app_member_sign_case_doc')]
public function signCaseDocument(string $memberId, string $docId, #[CurrentUser()] User $user): Response public function signCaseDocument(string $memberId, string $docId, #[CurrentUser()] User $user, Request $request): Response
{ {
/** @var Member $member */ /** @var Member $member */
$member = $this->entityManager->getRepository(Member::class)->find($memberId); $member = $this->entityManager->getRepository(Member::class)->find($memberId);
/** @var CompanyDocument $doc */
$doc = $this->entityManager->getRepository(CompanyDocument::class)->find($docId); $doc = $this->entityManager->getRepository(CompanyDocument::class)->find($docId);
/** @var MemberDocument $memDoc */
$memDoc = $this->entityManager->getRepository(MemberDocument::class)->findOneBy([ $memDoc = $this->entityManager->getRepository(MemberDocument::class)->findOneBy([
'document' => $doc, 'document' => $doc,
'client' => $member, 'client' => $member,
@ -65,6 +68,10 @@ class DocumentController extends AbstractController
throw new NotFoundHttpException('Document not found'); throw new NotFoundHttpException('Document not found');
} }
//$form = $this->createForm(MemberDocument::class);
/** @todo add form data */
//$form->add();
return $this->render( return $this->render(
'internal/cases/members/documents/sign-member-doc.html.twig', [ 'internal/cases/members/documents/sign-member-doc.html.twig', [
'doc' => $memDoc, 'doc' => $memDoc,

View File

@ -1,10 +1,9 @@
<?php <?php
namespace App\Controller; namespace App\Controller\Resources;
use App\Entity\CommunityResource; use App\Entity\Resources\CommunityResource;
use App\Entity\Messages; use App\Entity\System\User;
use App\Entity\User;
use App\Form\ResourceFormType; use App\Form\ResourceFormType;
use App\Libs\Breadcrumb; use App\Libs\Breadcrumb;
use App\Libs\Libs; use App\Libs\Libs;

View File

@ -1,13 +1,12 @@
<?php <?php
namespace App\Controller; namespace App\Controller\Staff;
use App\Entity\MemberCase; use App\Entity\Case\MemberCase;;
use App\Entity\Messages; use App\Entity\Staff\StaffNote;
use App\Entity\StaffNote; use App\Entity\Staff\Supervision;
use App\Entity\Supervision; use App\Entity\System\User;
use App\Entity\User; use App\Entity\System\UserCase;
use App\Entity\UserCase;
use App\Factory\MessageFactory; use App\Factory\MessageFactory;
use App\Form\StaffNoteFormType; use App\Form\StaffNoteFormType;
use App\Form\SupervisorStaffNoteFormType; use App\Form\SupervisorStaffNoteFormType;
@ -20,6 +19,7 @@ use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route; use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\Security\Http\Attribute\CurrentUser; use Symfony\Component\Security\Http\Attribute\CurrentUser;
use Symfony\Component\Translation\Exception\NotFoundResourceException;
class StaffController extends AbstractController class StaffController extends AbstractController
{ {
@ -82,7 +82,14 @@ class StaffController extends AbstractController
$this->navLinks['staff_notes'] = NavList::PRESENT_LINK; $this->navLinks['staff_notes'] = NavList::PRESENT_LINK;
foreach ($ucs as $uc) { foreach ($ucs as $uc) {
$cases[] = $uc->getMemberCase(); $case = $uc->getMemberCase();
$lastNote = $this->entityManager->getRepository(StaffNote::class)->findOneBy(['memberCase' => $case], ['date' => 'DESC']);
if ($lastNote) {
$case->emptyStaffNotes();
$case->addStaffNote($lastNote);
}
$cases[] = $case;
} }
return $this->render( return $this->render(
@ -109,15 +116,26 @@ class StaffController extends AbstractController
if (!$this->isGranted('IS_AUTHENTICATED_FULLY')) { if (!$this->isGranted('IS_AUTHENTICATED_FULLY')) {
return $this->redirectToRoute('app_login'); return $this->redirectToRoute('app_login');
} }
$this->msgs = Libs::getMessages($user, $this->entityManager);
$staff = $this->entityManager->getRepository(User::class)->find($staffId); $staff = $this->entityManager->getRepository(User::class)->find($staffId);
$sup = $this->entityManager->getRepository(Supervision::class)->findOneBy(['worker' => $staff, 'supervisor' => $user]);
if (!$sup) {
throw new NotFoundResourceException("It does not appear you are the supervisor to this case worker");
}
$ucs = $this->entityManager->getRepository(UserCase::class)->findBy(['user' => $staff]); $ucs = $this->entityManager->getRepository(UserCase::class)->findBy(['user' => $staff]);
$cases = []; $cases = [];
foreach ($ucs as $case) { foreach ($ucs as $uc) {
/** @var UserCase $case */ /** @var MemberCase $case */
$cases[] = $case->getMemberCase(); $case = $uc->getMemberCase();
$lastNote = $this->entityManager->getRepository(StaffNote::class)->findOneBy(['memberCase' => $case], ['date' => 'DESC']);
if ($lastNote) {
$case->emptyStaffNotes();
$case->addStaffNote($lastNote);
}
$cases[] = $case;
} }
return $this->render( return $this->render(
@ -131,7 +149,7 @@ class StaffController extends AbstractController
new Breadcrumb($this->generateUrl('app_staff_dashboard'), 'Staff Dashboard'), new Breadcrumb($this->generateUrl('app_staff_dashboard'), 'Staff Dashboard'),
new Breadcrumb('', 'Staff Cases') new Breadcrumb('', 'Staff Cases')
], ],
'notifications' => $this->msgs, 'notifications' => Libs::getMessages($user, $this->entityManager),
] ]
) )
); );

View File

@ -0,0 +1,268 @@
<?php
namespace App\Controller\System;
use App\Entity\Case\CaseItinerary;
use App\Entity\Case\CaseLocation;
use App\Entity\Resources\CommunityResource;
use App\Entity\Case\MemberCase;;
use App\Entity\Case\Referral;
use App\Entity\Case\StandardNote;
use App\Entity\Case\StandardNoteMember;
use App\Entity\System\Location;
use App\Entity\System\User;
use App\Entity\System\UserCase;
use App\Entity\Case\VisitNote;
use App\Entity\Case\VisitNoteMembers;
use App\Libs\Libs;
use DateTime;
use DateTimeZone;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\Session\Session;
use Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\Security\Http\Attribute\CurrentUser;
class AjaxController extends AbstractController
{
public function __construct(
private EntityManagerInterface $entityManager,
) {
}
#[Route('/api/itinerary/{id}/add', name: 'ajax_itinerary_add')]
public function addItinerary(string $id, Request $request): Response
{
$itinerary = $this->entityManager->getRepository(UserCase::class)->find($id);
$data = json_decode($request->getContent());
$location = new Location();
//$location->setItinerary($itinerary)
;
return $this->json($location);
}
#[Route('/api/filter-address-by-case/{caseId}', name: 'ajax_filter_address_by_case')]
public function filterAddressByCase(string $caseId, Request $request): Response
{
$case = $this->entityManager->getRepository(MemberCase::class)->find($caseId);
$addresses = $this->entityManager->getRepository(Location::class)->getLocationsByCase($case);
return $this->json($addresses);
}
#[Route('/api/case/{caseId}/user/{userId}', name: 'ajax_case_user_level_check')]
public function checkUserCaseLevel(string $caseId, string $userId, #[CurrentUser()] User $admin) : Response
{
$ret = true;
$user = $this->entityManager->getRepository(User::class)->find($userId);
$case = $this->entityManager->getRepository(MemberCase::class)->find($caseId);
if (!Libs::checkPermissions($user, $case, $this->entityManager)) {
throw new AccessDeniedHttpException ('You do not have permission to access this resource.');
}
$res = UserCase::checkLevel($admin, $case);
if (!$res) {
$ret = [
'userLevel' => ucwords(str_replace('_', ' ', strtolower($user->getLevel()->name))),
'caseLevel' => ucwords(str_replace('_', ' ', strtolower($case->getLevel()->name))),
];
}
return $this->json($ret);
}
#[Route('/api/filter-cases-by-user', name: 'ajax_filter_cases_by_user')]
public function filterCasesByUser(Request $request): Response
{
/** @var User $user */
$user = $this->entityManager->getRepository(User::class)->find($request->query->get('userId'));
/** @var UserCase[] $ucs */
$ucs = $this->entityManager->getRepository(UserCase::class)->findBy(['user' => $user]);
$ret = [];
foreach ($ucs as $uc) {
$ret[] = $uc->getMemberCase();
}
return $this->json($ret);
}
#[Route('/api/filter-resource-by-county', name: 'app_api_filter_resource_by_county')]
public function filterResourceByCounty(Request $request): Response
{
$data = json_decode($request->getContent(), true);
$county = $data['county'];
if ($county) {
$resources = $this->entityManager->getRepository(CommunityResource::class)->findBy(['county' => $county]);
} else {
$resources = $this->entityManager->getRepository(CommunityResource::class)->findAll();
}
return $this->json($resources);
}
#[Route('/api/get-case-locations/{caseId}', name: 'get_case_locations')]
public function createItinerary(string $caseId): Response
{
$case = $this->entityManager->getRepository(MemberCase::class)->find($caseId);
$cls = $this->entityManager->getRepository(CaseLocation::class)->getCaseLocations($case);
$crs = $this->entityManager->getRepository(CommunityResource::class)->findAll();
$locations = [];
foreach ($cls as $cl) {
/** @var CaseLocation $cl */
$locations[] = $cl->getLocation();
}
foreach ($crs as $cr) {
$locations[] = $cr->toLocation();
}
return $this->json($locations);
}
#[Route('/api/add-location-to-itinerary', name: 'add_location_to_itinerary')]
public function addLocationToItinerary(Request $request, Session $session): Response
{
$case = $this->entityManager->getRepository(MemberCase::class)->find($request->getPayload()->get('caseId'));
$origin = $this->entityManager->getRepository(Location::class)->find($request->getPayload()->get('origin'));
$destination = $this->entityManager->getRepository(Location::class)->find($request->getPayload()->get('destination'));
$departure = $request->getPayload()->get('departure');
$caseMileage = (bool) $request->getPayload()->get('caseMileage');
$date = new DateTime($request->getPayload()->get('date'), new DateTimeZone($_ENV['COMPANY_TIMEZONE']));
$route = Libs::getRouteDistance($origin, $destination);
if (!$route) {
return $this->json(['success' => false, 'message' => 'No route found']);
}
$ci = new CaseItinerary();
$ci->setMemberCase($case)
->setDate($date)
->setCaseMileage($caseMileage)
->setOriginLocation($origin)
->setDestLocation($destination)
->setDeparture(new \DateTimeImmutable($departure))
->setDistance($route->getDistance())
->setDuration($route->getDuration())
->setGpsRoute($route->getGeometry())
;
$this->entityManager->persist($ci);
$this->entityManager->flush();
$session->getFlashBag()->add(
'success',
'Location added to itinerary'
);
return $this->json(['success' => true, 'message' => 'Location added to itinerary']);
}
#[Route('/api/filter-itinerary-by-case', name: 'ajax_filter_itinerary_by_case')]
public function filterItineraryByCase(Request $request, #[CurrentUser()] ?User $user): Response
{
$case = null;
$startDate = null;
$endDate = null;
//dd($request->getPayload());
if ($request->getPayload()->get('caseId')) {
$caseId = $request->getPayload()->get('caseId');
$case = $this->entityManager->getRepository(MemberCase::class)->find($caseId);
}
if ($request->getPayload()->get('startDate')) {
$startDate = new DateTime($request->getPayload()->get('startDate'), new DateTimeZone($_ENV['COMPANY_TIMEZONE']));
}
if ($request->getPayload()->get('endDate')) {
$endDate = new DateTime($request->getPayload()->get('endDate'), new DateTimeZone($_ENV['COMPANY_TIMEZONE']));
}
$itineraries = $this->entityManager->getRepository(CaseItinerary::class)->getRecentTravel($user, [
'case' => $case,
'from' => $startDate,
'to' => $endDate,
]);
$ret = [];
foreach ($itineraries as $itinerary) {
/** @var CaseItinerary $itinerary */
$ret[] = [
'id' => $itinerary->getId()->toString(),
'date' => $itinerary->getDate()->format('F j, Y'),
'origin' => $itinerary->getOriginLocation(),
'destination' => $itinerary->getDestLocation(),
'distance' => $itinerary->getDistance(),
'duration' => $itinerary->getDuration()->format("%h:%i'%s''"),
'case' => $itinerary->getMemberCase()->getCaseName(),
];
}
return $this->json($ret);
}
#[Route('/api/filter-notes', name: 'api_filter_notes')]
public function filterNotes(#[CurrentUser()] User $user, Request $request): Response
{
$startDate = null;
$endDate = null;
$referral = null;
$case = null;
if ($request->getPayload()->get('startDate')) {
$startDate = new DateTime($request->getPayload()->get('startDate'), new DateTimeZone($_ENV['COMPANY_TIMEZONE']));
}
if ($request->getPayload()->get('endDate')) {
$endDate = new DateTime($request->getPayload()->get('endDate'), new DateTimeZone($_ENV['COMPANY_TIMEZONE']));
}
if ($request->getPayload()->get('referral')) {
$referral = $this->entityManager->getRepository(Referral::class)->find($request->getPayload()->get('referral'));
}
if ($request->getPayload()->get('case')) {
$case = $this->entityManager->getRepository(MemberCase::class)->find($request->getPayload()->get('case'));
}
$params = [
'startDate' => $startDate,
'endDate' => $endDate,
'referral' => $referral,
'case' => $case,
];
$notes = array_merge(
$this->entityManager->getRepository(VisitNote::class)->filterNotes($user, $params),
$this->entityManager->getRepository(StandardNote::class)->filterNotes($user, $params),
);
foreach ($notes as $idx => $note) {
/** @var VisitNote|StandardNote $note */
/** @var VisitNoteMember[]|StandardNoteMember[] $members */
if ($note instanceof VisitNote) {
$members = $this->entityManager->getRepository(VisitNoteMembers::class)->findBy(['note' => $note]);
} elseif ($note instanceof StandardNote) {
$members = $this->entityManager->getRepository(StandardNoteMember::class)->findBy(['note' => $note]);
} else {
continue;
}
$notes[$idx]->setMembers($members);
}
return new Response(json_encode($notes, 0, 3));
}
}

View File

@ -1,10 +1,10 @@
<?php <?php
namespace App\Controller; namespace App\Controller\System;
use App\Entity\CaseItinerary; use App\Entity\System\User;
use App\Entity\User;
use App\Libs\Breadcrumb; use App\Libs\Breadcrumb;
use App\Libs\Dashboard;
use App\Libs\Libs; use App\Libs\Libs;
use App\Libs\NavList; use App\Libs\NavList;
use DateInterval; use DateInterval;
@ -56,59 +56,11 @@ class DefaultController extends AbstractController
return $this->redirectToRoute('app_profile'); return $this->redirectToRoute('app_profile');
} }
if($_SERVER['HTTP_REFERER'] == "{$_SERVER['HTTP_X_FORWARDED_PROTO']}://{$_SERVER['HTTP_HOST']}/") { if(isset($_SERVER['HTTP_REFERER']) && $_SERVER['HTTP_REFERER'] == "{$_SERVER['HTTP_X_FORWARDED_PROTO']}://{$_SERVER['HTTP_HOST']}/") {
$this->entityManager->getRepository(User::class)->updateLastLogin($user); $this->entityManager->getRepository(User::class)->updateLastLogin($user);
} }
$ytdtravel = $this->entityManager->getRepository(CaseItinerary::class)->getYTDTravel($user); $dashboard = new Dashboard($this->entityManager, $user);
$last30days = $this->entityManager->getRepository(CaseItinerary::class)->getTravelLast30Days($user);
$ytdMiles = 0;
$milesTravelled30Days = 0;
$caseMileageYTD = 0;
$caseMileage30Days = 0;
$totalTimeTravelledYTD = new DateInterval('PT0S');
$totalTimeTravelled30Days = new DateInterval('PT0S');
if ($ytdtravel) {
$timeTravelled = new DateTime('00:00:00');
$timeTravelYTDStart = new DateTime('00:00:00');
foreach ($ytdtravel as $travel) {
/** @var CaseItinerary $travel */
$ytdMiles += $travel->getDistance();
$timeTravelled->add($travel->getDuration());
if ($travel->isCaseMileage()) {
$caseMileageYTD += $travel->getDistance();
}
}
$totalTimeTravelledYTD = $timeTravelled->diff($timeTravelYTDStart);
}
if ($last30days) {
$timeTravelled30Days = new DateTime('00:00:00');
$timeTravel30DaysStart = new DateTime('00:00:00');
foreach ($last30days as $travel) {
/** @var CaseItinerary $travel */
$milesTravelled30Days += $travel->getDistance();
$timeTravelled30Days->add($travel->getDuration());
if ($travel->isCaseMileage()) {
$caseMileage30Days += $travel->getDistance();
}
}
$totalTimeTravelled30Days = $timeTravelled30Days->diff($timeTravel30DaysStart);
}
$activeCases = 0;
$totalCases = 0;
foreach ($user->getUserCases() as $uc) {
$totalCases++;
if (!$uc->getMemberCase()->getCloseDate()) {
$activeCases++;
}
}
$this->navLinks['user_dashboard'] = NavList::PRESENT_LINK; $this->navLinks['user_dashboard'] = NavList::PRESENT_LINK;
@ -116,19 +68,12 @@ class DefaultController extends AbstractController
'internal/dashboard.html.twig', 'internal/dashboard.html.twig',
array_merge( array_merge(
$this->navLinks, $this->navLinks,
$dashboard->toArray(),
[ [
'breadcrumbs' => [ 'breadcrumbs' => [
new Breadcrumb('', 'Dashboard') new Breadcrumb('', 'Dashboard')
], ],
'notifications' => Libs::getMessages($user, $this->entityManager), 'notifications' => Libs::getMessages($user, $this->entityManager),
'milesTravelledYTD' => $ytdMiles,
'milesTravelled30Days' => $milesTravelled30Days,
'totalTimeTravelledYTD' => $totalTimeTravelledYTD,
'totalTimeTravelled30Days' => $totalTimeTravelled30Days,
'activeCases' => $activeCases,
'totalCases' => $totalCases,
'caseMileageYTD' => $caseMileageYTD,
'caseMileage30Days' => $caseMileage30Days,
] ]
) )
); );

View File

@ -2,11 +2,10 @@
namespace App\Controller; namespace App\Controller;
use App\Entity\Messages; use App\Entity\System\Messages;
use App\Entity\Supervision; use App\Entity\Staff\Supervision;
use App\Entity\User; use App\Entity\System\User;
use App\Enums\MessageType; use App\Enums\System\MessageType;
use App\Libs\Libs;
use Doctrine\ORM\EntityManagerInterface; use Doctrine\ORM\EntityManagerInterface;
use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpFoundation\Response;

View File

@ -1,10 +1,9 @@
<?php <?php
namespace App\Controller; namespace App\Controller\System;
use App\Entity\Messages; use App\Entity\System\ReferralSource;
use App\Entity\ReferralSource; use App\Entity\System\User;
use App\Entity\User;
use App\Form\ReferralSourceFormType; use App\Form\ReferralSourceFormType;
use App\Libs\Breadcrumb; use App\Libs\Breadcrumb;
use App\Libs\Libs; use App\Libs\Libs;

View File

@ -1,12 +1,11 @@
<?php <?php
namespace App\Controller; namespace App\Controller\System;
use App\DataTransferObject\CompanyDetailsDto; use App\DataTransferObject\CompanyDetailsDto;
use App\Entity\User; use App\Entity\System\User;
use App\Enums\CaseLevel; use App\Enums\Case\CaseLevel;
use App\Enums\JobType; use App\Enums\System\RateType;
use App\Enums\RateType;
use App\Factory\CompanyFactory; use App\Factory\CompanyFactory;
use App\Form\CompanyFormType; use App\Form\CompanyFormType;
use App\Form\RegistrationFormType; use App\Form\RegistrationFormType;
@ -80,11 +79,7 @@ class RegistrationController extends AbstractController
) )
); );
$user->setCaseWorker(true) $user->setRateType(RateType::FIXED)
->setCaseManager(true)
->setTherapist(true)
->setSu(true)
->setRateType(RateType::FIXED)
->setRate('0.00') ->setRate('0.00')
->setRoles(['ROLE_ADMIN']) ->setRoles(['ROLE_ADMIN'])
->setLevel(CaseLevel::ADMIN); ->setLevel(CaseLevel::ADMIN);

View File

@ -1,6 +1,6 @@
<?php <?php
namespace App\Controller; namespace App\Controller\System;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpFoundation\Response;