Compare commits
76 Commits
74e811e950
...
master
Author | SHA1 | Date | |
---|---|---|---|
c9cf8d7e0a | |||
b828333222 | |||
607ca79c4d | |||
0ebd90a03b | |||
24784bb1bb | |||
e3380bab2f | |||
2cd4c68baf | |||
52f835bbda | |||
680b7ab9bd | |||
4f6a80eade | |||
53d9350cb8 | |||
428304e5af | |||
c4d1a33272 | |||
4fd42970ac | |||
1fd72d95e0 | |||
74ad66496e | |||
8851c4f6e8 | |||
51ea4e2311 | |||
4859aa23b8 | |||
e601727514 | |||
b54e2a51f9 | |||
d51c67db3d | |||
1cfc4c7355 | |||
8e85405426 | |||
9887889ecb | |||
593958cc68 | |||
528827868b | |||
af6ebbb1b2 | |||
e08e23d647 | |||
bcc32bf445 | |||
ee2fce4c41 | |||
13aaaae34c | |||
fc9ebbd327 | |||
4cddccdf6e | |||
3d786f1f16 | |||
e5f09bd8cc | |||
77d90ed691 | |||
0d69b51ff9 | |||
df29fd0d99 | |||
09ae2756c2 | |||
520409b0b4 | |||
fe622ef794 | |||
0844b3fc58 | |||
6468e77445 | |||
2e41c1ed83 | |||
6ecb76a829 | |||
1fa3843b50 | |||
e376dadb4b | |||
b990ea55cb | |||
67d83a1f98 | |||
79db6b2ec9 | |||
0c5fa617ad | |||
6effcba396 | |||
43e6811928 | |||
705d7330b0 | |||
7bc73345b0 | |||
610cccc191 | |||
a47a5e8adb | |||
81838608b3 | |||
d39942eced | |||
cdacfd918a | |||
922852f211 | |||
224a5cd243 | |||
6d8fbd5bb8 | |||
82ee30a724 | |||
e13dc0bf66 | |||
844209d3e3 | |||
001a674f6f | |||
caeb15f05b | |||
2af4b8e04e | |||
c04e255476 | |||
2e77baae1b | |||
d74e10803c | |||
3d67d74242 | |||
c2608a17cf | |||
1cb6bedb5c
|
5
.gitmessage
Normal file
5
.gitmessage
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
{commit-type}: {module}
|
||||||
|
|
||||||
|
{description}
|
||||||
|
### Changes
|
||||||
|
* {change1}
|
@ -17,7 +17,6 @@ export function addLocationToItinerary() {
|
|||||||
let origin = document.getElementById('origin').value;
|
let origin = document.getElementById('origin').value;
|
||||||
let destination = document.getElementById('destination').value;
|
let destination = document.getElementById('destination').value;
|
||||||
let departure = document.getElementById('departure').value;
|
let departure = document.getElementById('departure').value;
|
||||||
let arrival = document.getElementById('arrival').value;
|
|
||||||
let caseMileage = document.getElementById('case-mileage').checked;
|
let caseMileage = document.getElementById('case-mileage').checked;
|
||||||
let caseId = document.getElementById('case-filter').value;
|
let caseId = document.getElementById('case-filter').value;
|
||||||
|
|
||||||
@ -32,7 +31,6 @@ export function addLocationToItinerary() {
|
|||||||
origin: origin,
|
origin: origin,
|
||||||
destination: destination,
|
destination: destination,
|
||||||
departure: departure,
|
departure: departure,
|
||||||
arrival: arrival,
|
|
||||||
caseMileage: caseMileage
|
caseMileage: caseMileage
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
@ -28,10 +28,11 @@ export function filterNotes()
|
|||||||
noteList.innerHTML = '';
|
noteList.innerHTML = '';
|
||||||
|
|
||||||
data.forEach(i => {
|
data.forEach(i => {
|
||||||
|
let duration = (parseInt(i.duration) / 60).toFixed(2);
|
||||||
noteList.innerHTML += `
|
noteList.innerHTML += `
|
||||||
<tr>
|
<tr>
|
||||||
<td>${i.date}<br/>
|
<td>${i.date}<br/>
|
||||||
${i.startTime}-${i.endTime} (${i.duration})</td>
|
${i.startTime}-${i.endTime} (${duration})</td>
|
||||||
<td class='text-center'>${i.location}</td>
|
<td class='text-center'>${i.location}</td>
|
||||||
<td class='text-center'>${i.method}</td>
|
<td class='text-center'>${i.method}</td>
|
||||||
<td'>${i.members}</td>
|
<td'>${i.members}</td>
|
||||||
@ -44,3 +45,47 @@ export function filterNotes()
|
|||||||
})
|
})
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function calcTime(precision = 15) {
|
||||||
|
if (!document.getElementById('note_form_startTime').value || !document.getElementById('note_form_endTime').value) {
|
||||||
|
console.log('ending');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
let st = document.getElementById('note_form_startTime').value.split(':');
|
||||||
|
let et = document.getElementById('note_form_endTime').value.split(':');
|
||||||
|
|
||||||
|
let sd = new Date();
|
||||||
|
let ed = new Date();
|
||||||
|
|
||||||
|
sd.setHours(st[0]);
|
||||||
|
sd.setMinutes(st[1]);
|
||||||
|
sd.setSeconds(0);
|
||||||
|
ed.setHours(et[0]);
|
||||||
|
ed.setMinutes(et[1]);
|
||||||
|
ed.setSeconds(0);
|
||||||
|
|
||||||
|
let timediff = (ed.getTime() - sd.getTime()) / 1000;
|
||||||
|
let increments = (timediff / 60) / precision;
|
||||||
|
|
||||||
|
if (isFloat(increments)) {
|
||||||
|
let mod = (timediff / 60) % precision;
|
||||||
|
if (mod >= (precision / 2)) {
|
||||||
|
increments++;
|
||||||
|
}
|
||||||
|
increments = parseInt(increments);
|
||||||
|
}
|
||||||
|
|
||||||
|
document.getElementById('case-mins').value = (increments * precision)+' minutes';
|
||||||
|
document.getElementById('case-hours').value = ((increments * precision) / 60)+' hours';
|
||||||
|
}
|
||||||
|
|
||||||
|
export function autosaveNote()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
export function checkNotes() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@ -102,8 +102,12 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
|
"ext-dom": "*",
|
||||||
|
"ext-simplexml": "*",
|
||||||
|
"ext-xml": "*",
|
||||||
"doctrine/doctrine-fixtures-bundle": "^4.0",
|
"doctrine/doctrine-fixtures-bundle": "^4.0",
|
||||||
"fakerphp/faker": "^1.24",
|
"fakerphp/faker": "^1.24",
|
||||||
|
"phpstan/phpstan": "^2.1",
|
||||||
"phpunit/phpunit": "^9.5",
|
"phpunit/phpunit": "^9.5",
|
||||||
"symfony/browser-kit": "7.2.*",
|
"symfony/browser-kit": "7.2.*",
|
||||||
"symfony/css-selector": "7.2.*",
|
"symfony/css-selector": "7.2.*",
|
||||||
|
@ -7,7 +7,7 @@ security:
|
|||||||
# used to reload user from session & other features (e.g. switch_user)
|
# used to reload user from session & other features (e.g. switch_user)
|
||||||
app_user_provider:
|
app_user_provider:
|
||||||
entity:
|
entity:
|
||||||
class: App\Entity\User
|
class: App\Entity\System\User
|
||||||
property: username
|
property: username
|
||||||
# used to reload user from session & other features (e.g. switch_user)
|
# used to reload user from session & other features (e.g. switch_user)
|
||||||
firewalls:
|
firewalls:
|
||||||
@ -15,11 +15,19 @@ security:
|
|||||||
pattern: ^/uploads/user_images/
|
pattern: ^/uploads/user_images/
|
||||||
security: false
|
security: false
|
||||||
dev:
|
dev:
|
||||||
pattern: ^/(_(profiler|wdt)|css|images|js)/
|
pattern:
|
||||||
|
- ^/_profiler
|
||||||
|
- ^/_wdt
|
||||||
|
- ^/css
|
||||||
|
- ^/images
|
||||||
|
- ^/js
|
||||||
|
- ^/uploads
|
||||||
|
- ^/favicon.ico
|
||||||
security: false
|
security: false
|
||||||
main:
|
main:
|
||||||
lazy: true
|
lazy: true
|
||||||
provider: app_user_provider
|
provider: app_user_provider
|
||||||
|
user_checker: App\Security\UserChecker
|
||||||
form_login:
|
form_login:
|
||||||
login_path: app_login
|
login_path: app_login
|
||||||
check_path: app_login
|
check_path: app_login
|
||||||
|
@ -3,6 +3,8 @@ twig:
|
|||||||
globals:
|
globals:
|
||||||
mileage_rate: '%env(MILEAGE_RATE)%'
|
mileage_rate: '%env(MILEAGE_RATE)%'
|
||||||
company_timezone: '%env(COMPANY_TIMEZONE)%'
|
company_timezone: '%env(COMPANY_TIMEZONE)%'
|
||||||
|
company_image_path: '%env(COMPANY_IMAGE_PATH)%'
|
||||||
|
user_image_path: '%env(USER_IMAGE_PATH)%'
|
||||||
|
|
||||||
when@test:
|
when@test:
|
||||||
twig:
|
twig:
|
||||||
|
@ -88,4 +88,7 @@ return [
|
|||||||
'tinymce' => [
|
'tinymce' => [
|
||||||
'version' => '7.6.0',
|
'version' => '7.6.0',
|
||||||
],
|
],
|
||||||
|
'moment' => [
|
||||||
|
'version' => '2.30.1',
|
||||||
|
],
|
||||||
];
|
];
|
||||||
|
@ -2,6 +2,16 @@
|
|||||||
|
|
||||||
use App\Kernel;
|
use App\Kernel;
|
||||||
|
|
||||||
|
if (preg_match("/theme\//", $_SERVER['REQUEST_URI'])) {
|
||||||
|
print file_get_contents(dirname(__FILE__).$_SERVER['REQUEST_URI']);
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') {
|
||||||
|
$_SERVER['HTTPS'] = 'on';
|
||||||
|
$_SERVER['SERVER_PORT'] = 443;
|
||||||
|
}
|
||||||
|
|
||||||
require_once dirname(__DIR__).'/vendor/autoload_runtime.php';
|
require_once dirname(__DIR__).'/vendor/autoload_runtime.php';
|
||||||
|
|
||||||
return function (array $context) {
|
return function (array $context) {
|
||||||
|
@ -1,13 +1,10 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Controller;
|
namespace App\Controller\Admin;
|
||||||
|
|
||||||
use App\Entity\CompanyDocument;
|
use App\Entity\Staff\Supervision;
|
||||||
use App\Entity\Messages;
|
use App\Entity\System\User;
|
||||||
use App\Entity\Supervision;
|
|
||||||
use App\Entity\User;
|
|
||||||
use App\Factory\MessageFactory;
|
use App\Factory\MessageFactory;
|
||||||
use App\Form\CompanyDocumentFormType;
|
|
||||||
use App\Form\EditUserFormType;
|
use App\Form\EditUserFormType;
|
||||||
use App\Form\SupervisorFormType;
|
use App\Form\SupervisorFormType;
|
||||||
use App\Form\UserFormType;
|
use App\Form\UserFormType;
|
||||||
@ -30,12 +27,10 @@ use Symfony\Component\String\Slugger\SluggerInterface;
|
|||||||
#[IsGranted('ROLE_ADMIN')]
|
#[IsGranted('ROLE_ADMIN')]
|
||||||
class AdminController extends AbstractController
|
class AdminController extends AbstractController
|
||||||
{
|
{
|
||||||
private array $msgs;
|
|
||||||
|
|
||||||
public function __construct(
|
public function __construct(
|
||||||
private readonly EntityManagerInterface $entityManager,
|
private readonly EntityManagerInterface $entityManager,
|
||||||
private readonly UserPasswordHasherInterface $userPasswordHasher,
|
private readonly UserPasswordHasherInterface $userPasswordHasher,
|
||||||
private array $navLinks = []
|
private array $navLinks = [],
|
||||||
) {
|
) {
|
||||||
$this->navLinks = NavList::LIST;
|
$this->navLinks = NavList::LIST;
|
||||||
}
|
}
|
||||||
@ -45,7 +40,6 @@ class AdminController extends AbstractController
|
|||||||
{
|
{
|
||||||
$this->denyAccessUnlessGranted('ROLE_ADMIN');
|
$this->denyAccessUnlessGranted('ROLE_ADMIN');
|
||||||
$this->navLinks['admin_dashboard'] = NavList::PRESENT_LINK;
|
$this->navLinks['admin_dashboard'] = NavList::PRESENT_LINK;
|
||||||
$this->msgs = Libs::getMessages($user, $this->entityManager);
|
|
||||||
|
|
||||||
return $this->render(
|
return $this->render(
|
||||||
'internal/admin/admin-dashboard.html.twig',
|
'internal/admin/admin-dashboard.html.twig',
|
||||||
@ -55,7 +49,7 @@ class AdminController extends AbstractController
|
|||||||
'breadcrumbs' => [
|
'breadcrumbs' => [
|
||||||
new Breadcrumb($this->generateUrl('app_admin_dashboard'), 'Admin Dashboard')
|
new Breadcrumb($this->generateUrl('app_admin_dashboard'), 'Admin Dashboard')
|
||||||
],
|
],
|
||||||
'notifications' => $this->msgs,
|
'notifications' => Libs::getMessages($user, $this->entityManager),
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
@ -65,7 +59,6 @@ class AdminController extends AbstractController
|
|||||||
public function listUsers(#[CurrentUser()] User $user): Response
|
public function listUsers(#[CurrentUser()] User $user): Response
|
||||||
{
|
{
|
||||||
$this->denyAccessUnlessGranted('ROLE_ADMIN');
|
$this->denyAccessUnlessGranted('ROLE_ADMIN');
|
||||||
$this->msgs = Libs::getMessages($user, $this->entityManager);
|
|
||||||
|
|
||||||
/** @var UserRepository $repo */
|
/** @var UserRepository $repo */
|
||||||
$repo = $this->entityManager->getRepository(User::class);
|
$repo = $this->entityManager->getRepository(User::class);
|
||||||
@ -89,7 +82,7 @@ class AdminController extends AbstractController
|
|||||||
new Breadcrumb($this->generateUrl('app_list_users'), 'List Users')
|
new Breadcrumb($this->generateUrl('app_list_users'), 'List Users')
|
||||||
],
|
],
|
||||||
'users' => $users,
|
'users' => $users,
|
||||||
'notifications' => $this->msgs,
|
'notifications' => Libs::getMessages($user, $this->entityManager),
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
@ -102,7 +95,6 @@ class AdminController extends AbstractController
|
|||||||
SluggerInterface $slugger
|
SluggerInterface $slugger
|
||||||
): Response {
|
): Response {
|
||||||
$this->denyAccessUnlessGranted('ROLE_ADMIN');
|
$this->denyAccessUnlessGranted('ROLE_ADMIN');
|
||||||
$this->msgs = Libs::getMessages($admin, $this->entityManager);
|
|
||||||
|
|
||||||
$user = new User();
|
$user = new User();
|
||||||
$form = $this->createForm(UserFormType::class, $user);
|
$form = $this->createForm(UserFormType::class, $user);
|
||||||
@ -143,7 +135,8 @@ class AdminController extends AbstractController
|
|||||||
->setRate($form->get('rate')->getData())
|
->setRate($form->get('rate')->getData())
|
||||||
->setLevel($form->get('level')->getData())
|
->setLevel($form->get('level')->getData())
|
||||||
->setCompany($admin->getCompany())
|
->setCompany($admin->getCompany())
|
||||||
->setPasswordChanged(new DateTime('now', new DateTimeZone($_ENV['COMPANY_TIMEZONE'])))
|
->setActive(true)
|
||||||
|
->setPasswordChanged(new DateTime('1970-01-01 00:00:00', new DateTimeZone($_ENV['COMPANY_TIMEZONE'])))
|
||||||
;
|
;
|
||||||
|
|
||||||
if ($form->get('imageName')->getData()) {
|
if ($form->get('imageName')->getData()) {
|
||||||
@ -183,7 +176,7 @@ class AdminController extends AbstractController
|
|||||||
new Breadcrumb($this->generateUrl('app_add_user'), 'Add User')
|
new Breadcrumb($this->generateUrl('app_add_user'), 'Add User')
|
||||||
],
|
],
|
||||||
'form' => $form,
|
'form' => $form,
|
||||||
'notifications' => $this->msgs,
|
'notifications' => Libs::getMessages($admin, $this->entityManager),
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
@ -194,7 +187,6 @@ class AdminController extends AbstractController
|
|||||||
{
|
{
|
||||||
/** @var UserRepository $userRepo */
|
/** @var UserRepository $userRepo */
|
||||||
$userRepo = $this->entityManager->getRepository(User::class);
|
$userRepo = $this->entityManager->getRepository(User::class);
|
||||||
$this->msgs = Libs::getMessages($admin, $this->entityManager);
|
|
||||||
|
|
||||||
/** @var User $user */
|
/** @var User $user */
|
||||||
$user = $userRepo->find($id);
|
$user = $userRepo->find($id);
|
||||||
@ -205,15 +197,31 @@ class AdminController extends AbstractController
|
|||||||
$this->navLinks['user_list'] = NavList::PRESENT_LINK;
|
$this->navLinks['user_list'] = NavList::PRESENT_LINK;
|
||||||
|
|
||||||
if ($form->isSubmitted() && $form->isValid()) {
|
if ($form->isSubmitted() && $form->isValid()) {
|
||||||
|
$roles = ['ROLE_USER'];
|
||||||
|
if ($form->get('caseWorker')->getData()) {
|
||||||
|
$roles[] = 'ROLE_CASE_WORKER';
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($form->get('caseManager')->getData()) {
|
||||||
|
$roles[] = 'ROLE_CASE_MANAGER';
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($form->get('therapist')->getData()) {
|
||||||
|
$roles[] = 'ROLE_THERAPIST';
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($form->get('su')->getData()) {
|
||||||
|
$roles[] = 'ROLE_ADMIN';
|
||||||
|
}
|
||||||
|
|
||||||
$user->setName($form->get('name')->getData())
|
$user->setName($form->get('name')->getData())
|
||||||
->setEmail($form->get('email')->getData())
|
->setEmail($form->get('email')->getData())
|
||||||
->setCaseWorker($form->get('caseWorker')->getData())
|
->setRoles($roles)
|
||||||
->setCaseManager($form->get('caseManager')->getData())
|
->setActive((bool) $form->get('active')->getData())
|
||||||
->setTherapist($form->get('therapist')->getData())
|
|
||||||
->setSu($form->get('su')->getData())
|
|
||||||
->setRateType($form->get('rateType')->getData())
|
->setRateType($form->get('rateType')->getData())
|
||||||
->setRate($form->get('rate')->getData())
|
->setRate($form->get('rate')->getData())
|
||||||
->setLevel($form->get('level')->getData());
|
->setLevel($form->get('level')->getData())
|
||||||
|
;
|
||||||
|
|
||||||
$this->entityManager->flush();
|
$this->entityManager->flush();
|
||||||
|
|
||||||
@ -231,7 +239,7 @@ class AdminController extends AbstractController
|
|||||||
],
|
],
|
||||||
'data' => $user,
|
'data' => $user,
|
||||||
'form' => $form,
|
'form' => $form,
|
||||||
'notifications' => $this->msgs,
|
'notifications' => Libs::getMessages($admin, $this->entityManager),
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
@ -242,31 +250,35 @@ class AdminController extends AbstractController
|
|||||||
{
|
{
|
||||||
/** @var UserRepository $userRepo */
|
/** @var UserRepository $userRepo */
|
||||||
$userRepo = $this->entityManager->getRepository(User::class);
|
$userRepo = $this->entityManager->getRepository(User::class);
|
||||||
$this->msgs = Libs::getMessages($admin, $this->entityManager);
|
|
||||||
|
|
||||||
/** @var User $user */
|
/** @var User $user */
|
||||||
$user = $userRepo->find($id);
|
$user = $userRepo->find($id);
|
||||||
$prevSup = $this->entityManager->getRepository(Supervision::class)->findBy(['worker' => $user]);
|
$prevSup = $this->entityManager->getRepository(Supervision::class)->findOneBy(['worker' => $user]);
|
||||||
|
|
||||||
$form = $this->createForm(SupervisorFormType::class);
|
$form = $this->createForm(SupervisorFormType::class);
|
||||||
$form->handleRequest($request);
|
$form->handleRequest($request);
|
||||||
|
|
||||||
if ($form->isSubmitted() && $form->isValid()) {
|
if ($form->isSubmitted() && $form->isValid()) {
|
||||||
|
/** @var User $supervisor */
|
||||||
$supervisor = $form->get('supervisor')->getData();
|
$supervisor = $form->get('supervisor')->getData();
|
||||||
|
if ($prevSup) {
|
||||||
if (count($prevSup) > 0) {
|
$prevSup->setSupervisor($supervisor);
|
||||||
$this->entityManager->remove($prevSup[0]);
|
$this->entityManager->persist($prevSup);
|
||||||
$this->entityManager->flush();
|
$this->entityManager->flush();
|
||||||
}
|
$this->addFlash('success', "Supervisor updated for {$user->getName()}");
|
||||||
|
} else {
|
||||||
|
$sup = new Supervision();
|
||||||
|
$sup->setWorker($user);
|
||||||
|
$sup->setSupervisor($supervisor);
|
||||||
|
|
||||||
$sup = new Supervision();
|
$this->entityManager->persist($sup);
|
||||||
$sup->setSupervisor($supervisor);
|
$this->entityManager->flush();
|
||||||
$sup->setWorker($user);
|
$this->addFlash('success', "Supervisor assigned to {$user->getName()}");
|
||||||
|
}
|
||||||
|
|
||||||
$supMsg = MessageFactory::createUser($admin, $supervisor, 'New Case Worker', "You've been assigned a new case worker, {$user->getName()}");
|
$supMsg = MessageFactory::createUser($admin, $supervisor, 'New Case Worker', "You've been assigned a new case worker, {$user->getName()}");
|
||||||
$userMsg = MessageFactory::createUser($admin, $user, 'New Staff Supervisor', "You've been assigned a new staff supervisor {$supervisor->getName()}");
|
$userMsg = MessageFactory::createUser($admin, $user, 'New Staff Supervisor', "You've been assigned a new staff supervisor {$supervisor->getName()}");
|
||||||
|
|
||||||
$this->entityManager->persist($sup);
|
|
||||||
$this->entityManager->persist($userMsg);
|
$this->entityManager->persist($userMsg);
|
||||||
$this->entityManager->persist($supMsg);
|
$this->entityManager->persist($supMsg);
|
||||||
$this->entityManager->flush();
|
$this->entityManager->flush();
|
||||||
@ -286,7 +298,7 @@ class AdminController extends AbstractController
|
|||||||
'user' => $user,
|
'user' => $user,
|
||||||
'form' => $form,
|
'form' => $form,
|
||||||
'supervisors' => $userRepo->getCaseManagers($admin->getCompany()),
|
'supervisors' => $userRepo->getCaseManagers($admin->getCompany()),
|
||||||
'notifications' => $this->msgs,
|
'notifications' => Libs::getMessages($admin, $this->entityManager),
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
);
|
);
|
@ -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\Messages;
|
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;
|
||||||
@ -25,17 +23,11 @@ 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\Routing\Attribute\Route;
|
use Symfony\Component\Routing\Attribute\Route;
|
||||||
|
use Symfony\Component\Security\Core\Exception\AccessDeniedException;
|
||||||
use Symfony\Component\Security\Http\Attribute\CurrentUser;
|
use Symfony\Component\Security\Http\Attribute\CurrentUser;
|
||||||
|
|
||||||
class CaseController extends AbstractController
|
class CaseController extends AbstractController
|
||||||
{
|
{
|
||||||
/**
|
|
||||||
* Variable to store unread notification messages
|
|
||||||
*
|
|
||||||
* @var array
|
|
||||||
*/
|
|
||||||
private array $msgs;
|
|
||||||
|
|
||||||
public function __construct(
|
public function __construct(
|
||||||
private EntityManagerInterface $entityManager,
|
private EntityManagerInterface $entityManager,
|
||||||
private array $navLinks = []
|
private array $navLinks = []
|
||||||
@ -47,11 +39,14 @@ class CaseController extends AbstractController
|
|||||||
#[Route('/my-cases', name: 'app_my_cases')]
|
#[Route('/my-cases', name: 'app_my_cases')]
|
||||||
public function myCases(#[CurrentUser()] User $user, Request $request): Response
|
public function myCases(#[CurrentUser()] User $user, Request $request): Response
|
||||||
{
|
{
|
||||||
|
if (!$this->isGranted('IS_AUTHENTICATED_FULLY')) {
|
||||||
|
return $this->redirectToRoute('app_login');
|
||||||
|
}
|
||||||
|
|
||||||
$this->navLinks['my_cases'] = NavList::PRESENT_LINK;
|
$this->navLinks['my_cases'] = NavList::PRESENT_LINK;
|
||||||
$this->navLinks['case_list'] = 'nav-link text-dark';
|
$this->navLinks['case_list'] = NavList::DEFAULT;
|
||||||
|
|
||||||
$ucs = $this->entityManager->getRepository(UserCase::class)->findBy(['user' => $user]);
|
$ucs = $this->entityManager->getRepository(UserCase::class)->findBy(['user' => $user]);
|
||||||
$this->msgs = Libs::getMessages($user, $this->entityManager);
|
|
||||||
|
|
||||||
$cases = [];
|
$cases = [];
|
||||||
foreach ($ucs as $uc) {
|
foreach ($ucs as $uc) {
|
||||||
@ -67,11 +62,11 @@ class CaseController extends AbstractController
|
|||||||
'breadcrumbs' => [
|
'breadcrumbs' => [
|
||||||
(
|
(
|
||||||
strpos($request->server->get('HTTP_REFERER'), 'list-cases') !== false
|
strpos($request->server->get('HTTP_REFERER'), 'list-cases') !== false
|
||||||
? new Breadcrumb($this->generateUrl('app_list_cases'), 'List Cases')
|
? new Breadcrumb($this->generateUrl('app_list_cases'), 'Cases')
|
||||||
: new Breadcrumb($this->generateUrl('app_my_cases'), 'My Cases')
|
: new Breadcrumb($this->generateUrl('app_my_cases'), 'My Cases')
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
'notifications' => $this->msgs,
|
'notifications' => Libs::getMessages($user, $this->entityManager),
|
||||||
'cases' => $cases,
|
'cases' => $cases,
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
@ -85,7 +80,6 @@ class CaseController extends AbstractController
|
|||||||
|
|
||||||
$cases = $this->entityManager->getRepository(MemberCase::class)->findAll();
|
$cases = $this->entityManager->getRepository(MemberCase::class)->findAll();
|
||||||
$workers = $this->entityManager->getRepository(User::class)->getCaseWorkers();
|
$workers = $this->entityManager->getRepository(User::class)->getCaseWorkers();
|
||||||
$this->msgs = Libs::getMessages($user, $this->entityManager);
|
|
||||||
|
|
||||||
return $this->render(
|
return $this->render(
|
||||||
'internal/admin/cases/list-cases.html.twig',
|
'internal/admin/cases/list-cases.html.twig',
|
||||||
@ -95,7 +89,7 @@ class CaseController extends AbstractController
|
|||||||
'breadcrumbs' => [
|
'breadcrumbs' => [
|
||||||
new Breadcrumb($this->generateUrl('app_list_cases'), 'List Cases')
|
new Breadcrumb($this->generateUrl('app_list_cases'), 'List Cases')
|
||||||
],
|
],
|
||||||
'notifications' => $this->msgs,
|
'notifications' => Libs::getMessages($user, $this->entityManager),
|
||||||
'cases' => $cases,
|
'cases' => $cases,
|
||||||
'workers' => $workers,
|
'workers' => $workers,
|
||||||
]
|
]
|
||||||
@ -111,11 +105,13 @@ class CaseController extends AbstractController
|
|||||||
}
|
}
|
||||||
|
|
||||||
$case = $this->entityManager->getRepository(MemberCase::class)->find($caseId);
|
$case = $this->entityManager->getRepository(MemberCase::class)->find($caseId);
|
||||||
$caseDocs = $this->entityManager->getRepository(CaseDocument::class)->getDocumentsByCase($case);
|
|
||||||
$compDocs = $this->entityManager->getRepository(CompanyDocument::class)->findBy(['company' => $user->getCompany()]);
|
|
||||||
$sources = $this->entityManager->getRepository(ReferralSource::class)->findAll();
|
|
||||||
|
|
||||||
$this->msgs = $this->entityManager->getRepository(Messages::class)->getUnreadMessages($this->getUser());
|
/** @todo validate user has access to case, check for admin, case manager of case worker */
|
||||||
|
if (!Libs::checkPermissions($user, $case, $this->entityManager)) {
|
||||||
|
throw new AccessDeniedException();
|
||||||
|
}
|
||||||
|
|
||||||
|
$sources = $this->entityManager->getRepository(ReferralSource::class)->findAll();
|
||||||
|
|
||||||
return $this->render(
|
return $this->render(
|
||||||
'internal/cases/view-case.html.twig',
|
'internal/cases/view-case.html.twig',
|
||||||
@ -123,14 +119,12 @@ class CaseController extends AbstractController
|
|||||||
$this->navLinks,
|
$this->navLinks,
|
||||||
[
|
[
|
||||||
'case' => $case,
|
'case' => $case,
|
||||||
'caseDocs' => $caseDocs,
|
|
||||||
'compDocs' => $compDocs,
|
|
||||||
'sources' => $sources,
|
'sources' => $sources,
|
||||||
'breadcrumbs' => [
|
'breadcrumbs' => [
|
||||||
new Breadcrumb($this->generateUrl('app_list_cases'), 'List Cases'),
|
new Breadcrumb($this->generateUrl('app_list_cases'), 'Cases'),
|
||||||
new Breadcrumb($this->generateUrl('app_view_case', ['caseId' => $case->getId()]), 'View Case')
|
new Breadcrumb($this->generateUrl('app_view_case', ['caseId' => $case->getId()]), 'View Case')
|
||||||
],
|
],
|
||||||
'notifications' => $this->msgs,
|
'notifications' => Libs::getMessages($user, $this->entityManager),
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
@ -140,11 +134,9 @@ class CaseController extends AbstractController
|
|||||||
public function addCase(Request $request, #[CurrentUser()] User $admin): Response
|
public function addCase(Request $request, #[CurrentUser()] User $admin): Response
|
||||||
{
|
{
|
||||||
$this->denyAccessUnlessGranted('ROLE_ADMIN');
|
$this->denyAccessUnlessGranted('ROLE_ADMIN');
|
||||||
$this->msgs = $this->entityManager->getRepository(Messages::class)->getUnreadMessages($admin);
|
|
||||||
|
|
||||||
$companyDocs = $this->entityManager->getRepository(CompanyDocument::class)->findBy(['company' => $admin->getCompany()]);
|
|
||||||
$case = new MemberCase();
|
$case = new MemberCase();
|
||||||
$form = $this->createForm(MemberCaseFormType::class, $case, ['docs' => $companyDocs]);
|
$form = $this->createForm(MemberCaseFormType::class);
|
||||||
|
|
||||||
$form->handleRequest($request);
|
$form->handleRequest($request);
|
||||||
|
|
||||||
@ -169,10 +161,9 @@ class CaseController extends AbstractController
|
|||||||
new Breadcrumb($this->generateUrl('app_list_cases'), 'List Cases'),
|
new Breadcrumb($this->generateUrl('app_list_cases'), 'List Cases'),
|
||||||
new Breadcrumb($this->generateUrl('app_add_case'), 'Add Case')
|
new Breadcrumb($this->generateUrl('app_add_case'), 'Add Case')
|
||||||
],
|
],
|
||||||
'notifications' => $this->msgs,
|
'notifications' => Libs::getMessages($admin, $this->entityManager),
|
||||||
'form' => $form,
|
'form' => $form,
|
||||||
'sources' => $this->entityManager->getRepository(ReferralSource::class)->retrieveOrderedList(),
|
'sources' => $this->entityManager->getRepository(ReferralSource::class)->retrieveOrderedList(),
|
||||||
'docs' => $companyDocs,
|
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
@ -182,7 +173,6 @@ class CaseController extends AbstractController
|
|||||||
public function editCase(Request $request, #[CurrentUser()] User $admin, string $id): Response
|
public function editCase(Request $request, #[CurrentUser()] User $admin, string $id): Response
|
||||||
{
|
{
|
||||||
$this->denyAccessUnlessGranted('ROLE_ADMIN');
|
$this->denyAccessUnlessGranted('ROLE_ADMIN');
|
||||||
$this->msgs = $this->entityManager->getRepository(Messages::class)->getUnreadMessages($admin);
|
|
||||||
|
|
||||||
$case = $this->entityManager->getRepository(MemberCase::class)->find($id);
|
$case = $this->entityManager->getRepository(MemberCase::class)->find($id);
|
||||||
$form = $this->createForm(MemberCaseFormType::class, $case);
|
$form = $this->createForm(MemberCaseFormType::class, $case);
|
||||||
@ -208,7 +198,7 @@ class CaseController extends AbstractController
|
|||||||
new Breadcrumb($this->generateUrl('app_list_cases'), 'List Cases'),
|
new Breadcrumb($this->generateUrl('app_list_cases'), 'List Cases'),
|
||||||
new Breadcrumb($this->generateUrl('app_edit_case', ['id' => $id]), 'Edit Case')
|
new Breadcrumb($this->generateUrl('app_edit_case', ['id' => $id]), 'Edit Case')
|
||||||
],
|
],
|
||||||
'notifications' => $this->msgs,
|
'notifications' => Libs::getMessages($admin, $this->entityManager),
|
||||||
'form' => $form,
|
'form' => $form,
|
||||||
'case' => $case,
|
'case' => $case,
|
||||||
'sources' => $this->entityManager->getRepository(ReferralSource::class)->retrieveOrderedList(),
|
'sources' => $this->entityManager->getRepository(ReferralSource::class)->retrieveOrderedList(),
|
||||||
@ -221,7 +211,6 @@ class CaseController extends AbstractController
|
|||||||
public function assignCase(string $id, Request $request, #[CurrentUser()] User $admin): Response
|
public function assignCase(string $id, Request $request, #[CurrentUser()] User $admin): Response
|
||||||
{
|
{
|
||||||
$this->denyAccessUnlessGranted('ROLE_ADMIN');
|
$this->denyAccessUnlessGranted('ROLE_ADMIN');
|
||||||
$this->msgs = $this->entityManager->getRepository(Messages::class)->getUnreadMessages($admin);
|
|
||||||
|
|
||||||
$caseWorkers = $this->entityManager->getRepository(User::class)->getCaseWorkers();
|
$caseWorkers = $this->entityManager->getRepository(User::class)->getCaseWorkers();
|
||||||
$case = $this->entityManager->getRepository(MemberCase::class)->find($id);
|
$case = $this->entityManager->getRepository(MemberCase::class)->find($id);
|
||||||
@ -242,7 +231,11 @@ class CaseController extends AbstractController
|
|||||||
$this->entityManager->flush();
|
$this->entityManager->flush();
|
||||||
}
|
}
|
||||||
|
|
||||||
$msg = MessageFactory::createNewCase($admin, $user);
|
$msg = MessageFactory::createNewCase(
|
||||||
|
$admin,
|
||||||
|
$user,
|
||||||
|
$this->generateUrl('app_view_case', ['caseId' => $case->getId()->toString()])
|
||||||
|
);
|
||||||
|
|
||||||
$this->entityManager->persist($uc);
|
$this->entityManager->persist($uc);
|
||||||
$this->entityManager->persist($msg);
|
$this->entityManager->persist($msg);
|
||||||
@ -263,7 +256,7 @@ class CaseController extends AbstractController
|
|||||||
new Breadcrumb($this->generateUrl('app_list_cases'), 'List Cases'),
|
new Breadcrumb($this->generateUrl('app_list_cases'), 'List Cases'),
|
||||||
new Breadcrumb($this->generateUrl('app_assign_case', ['id' => $id]), 'Assign User')
|
new Breadcrumb($this->generateUrl('app_assign_case', ['id' => $id]), 'Assign User')
|
||||||
],
|
],
|
||||||
'notifications' => $this->msgs,
|
'notifications' => Libs::getMessages($admin, $this->entityManager),
|
||||||
'case' => $case,
|
'case' => $case,
|
||||||
'form' => $form,
|
'form' => $form,
|
||||||
'id' => $id,
|
'id' => $id,
|
||||||
@ -281,7 +274,6 @@ class CaseController extends AbstractController
|
|||||||
$this->navLinks['case_list'] = 'nav-link text-dark';
|
$this->navLinks['case_list'] = 'nav-link text-dark';
|
||||||
|
|
||||||
$addresses = $this->entityManager->getRepository(Location::class)->getUserLocations($user);
|
$addresses = $this->entityManager->getRepository(Location::class)->getUserLocations($user);
|
||||||
$this->msgs = Libs::getMessages($user, $this->entityManager);
|
|
||||||
|
|
||||||
$ucs = $this->entityManager->getRepository(UserCase::class)->findBy(['user' => $user]);
|
$ucs = $this->entityManager->getRepository(UserCase::class)->findBy(['user' => $user]);
|
||||||
$cases = [];
|
$cases = [];
|
||||||
@ -300,7 +292,7 @@ class CaseController extends AbstractController
|
|||||||
new Breadcrumb($this->generateUrl('app_my_cases'), 'My Cases'),
|
new Breadcrumb($this->generateUrl('app_my_cases'), 'My Cases'),
|
||||||
new Breadcrumb($this->generateUrl('app_list_case_addresses'), 'List Case Addresses')
|
new Breadcrumb($this->generateUrl('app_list_case_addresses'), 'List Case Addresses')
|
||||||
],
|
],
|
||||||
'notifications' => $this->msgs,
|
'notifications' => Libs::getMessages($user, $this->entityManager),
|
||||||
'addresses' => $addresses,
|
'addresses' => $addresses,
|
||||||
'cases' => $cases,
|
'cases' => $cases,
|
||||||
]
|
]
|
||||||
@ -314,8 +306,6 @@ class CaseController extends AbstractController
|
|||||||
$this->navLinks['case_itinerary'] = NavList::PRESENT_LINK;
|
$this->navLinks['case_itinerary'] = NavList::PRESENT_LINK;
|
||||||
$this->navLinks['case_list'] = 'nav-link text-dark';
|
$this->navLinks['case_list'] = 'nav-link text-dark';
|
||||||
|
|
||||||
$this->msgs = Libs::getMessages($user, $this->entityManager);
|
|
||||||
|
|
||||||
$ucs = $this->entityManager->getRepository(UserCase::class)->findBy(['user' => $user]);
|
$ucs = $this->entityManager->getRepository(UserCase::class)->findBy(['user' => $user]);
|
||||||
|
|
||||||
$cases = [];
|
$cases = [];
|
||||||
@ -365,7 +355,7 @@ class CaseController extends AbstractController
|
|||||||
new Breadcrumb($this->generateUrl('app_list_case_addresses'), 'List Addresses'),
|
new Breadcrumb($this->generateUrl('app_list_case_addresses'), 'List Addresses'),
|
||||||
new Breadcrumb($this->generateUrl('app_case_add_address'), 'Add Case Address')
|
new Breadcrumb($this->generateUrl('app_case_add_address'), 'Add Case Address')
|
||||||
],
|
],
|
||||||
'notifications' => $this->msgs,
|
'notifications' => Libs::getMessages($user, $this->entityManager),
|
||||||
'form' => $form,
|
'form' => $form,
|
||||||
'cases' => $cases,
|
'cases' => $cases,
|
||||||
]
|
]
|
||||||
@ -374,13 +364,11 @@ class CaseController extends AbstractController
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[Route('/addresses/edit/{id}', name: 'app_case_edit_address')]
|
#[Route('/addresses/edit/{id}', name: 'app_case_edit_address')]
|
||||||
public function editCaseAddress(Request $request, string $id): Response
|
public function editCaseAddress(Request $request, string $id, #[CurrentUser()] User $user): Response
|
||||||
{
|
{
|
||||||
$this->navLinks['case_itinerary'] = NavList::PRESENT_LINK;
|
$this->navLinks['case_itinerary'] = NavList::PRESENT_LINK;
|
||||||
$this->navLinks['case_list'] = 'nav-link text-dark';
|
$this->navLinks['case_list'] = 'nav-link text-dark';
|
||||||
|
|
||||||
$this->msgs = $this->entityManager->getRepository(Messages::class)->getUnreadMessages($this->getUser());
|
|
||||||
|
|
||||||
$ucs = $this->entityManager->getRepository(UserCase::class)->findBy(['user' => $this->getUser()]);
|
$ucs = $this->entityManager->getRepository(UserCase::class)->findBy(['user' => $this->getUser()]);
|
||||||
$lcs = $this->entityManager->getRepository(CaseLocation::class)->findBy(['location' => $id]);
|
$lcs = $this->entityManager->getRepository(CaseLocation::class)->findBy(['location' => $id]);
|
||||||
|
|
||||||
@ -424,104 +412,9 @@ class CaseController extends AbstractController
|
|||||||
'cases' => $cases,
|
'cases' => $cases,
|
||||||
'inCases' => $inCases,
|
'inCases' => $inCases,
|
||||||
'form' => $form,
|
'form' => $form,
|
||||||
'notifications' => $this->msgs,
|
'notifications' => Libs::getMessages($user, $this->entityManager),
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[Route('/assign-case-doc/{caseId}/{memberId}', name: 'app_assign_case_documents')]
|
|
||||||
public function assignCaseDocument(string $caseId, string $memberId, Request $request, #[CurrentUser()] User $user): Response
|
|
||||||
{
|
|
||||||
$this->msgs = Libs::getMessages($user, $this->entityManager);
|
|
||||||
$case = $this->entityManager->getRepository(MemberCase::class)->find($caseId);
|
|
||||||
$member = $this->entityManager->getRepository(Member::class)->find($memberId);
|
|
||||||
$companyDocs = $this->entityManager->getRepository(CompanyDocument::class)->findBy(['company' => $user->getCompany()]);
|
|
||||||
|
|
||||||
$form = $this->createForm(CaseDocumentFormType::class, null, ['docs' => $companyDocs]);
|
|
||||||
|
|
||||||
$form->handleRequest($request);
|
|
||||||
|
|
||||||
if ($form->isSubmitted() && $form->isValid()) {
|
|
||||||
$docs = $form['document']->getData();
|
|
||||||
dd($docs);
|
|
||||||
|
|
||||||
$this->entityManager->persist($cd);
|
|
||||||
$this->entityManager->flush();
|
|
||||||
|
|
||||||
$this->redirectToRoute('app_case_members', ['id' => $caseId]);
|
|
||||||
}
|
|
||||||
|
|
||||||
return $this->render(
|
|
||||||
'internal/cases/members/assign-document.html.twig',
|
|
||||||
array_merge(
|
|
||||||
$this->navLinks,
|
|
||||||
[
|
|
||||||
'notifications' => $this->msgs,
|
|
||||||
'breadcrumbs' => [
|
|
||||||
new Breadcrumb($this->generateUrl('app_dashboard'), 'Dashboard'),
|
|
||||||
new Breadcrumb($this->generateUrl('app_list_cases'), 'List Cases'),
|
|
||||||
new Breadcrumb($this->generateUrl('app_case_members', ['id' => $caseId]), 'Case Members')
|
|
||||||
],
|
|
||||||
'form' => $form,
|
|
||||||
'case' => $case,
|
|
||||||
'member' => $member,
|
|
||||||
'docs' => $companyDocs,
|
|
||||||
]
|
|
||||||
)
|
|
||||||
);
|
|
||||||
|
|
||||||
return new Response();
|
|
||||||
}
|
|
||||||
|
|
||||||
#[Route('/sign-case-doc/{caseId}/{docId}/{memberId}', name: 'app_display_case_document')]
|
|
||||||
public function displayCaseDocument(string $caseId, string $docId, Request $request, #[CurrentUser()] User $user): Response
|
|
||||||
{
|
|
||||||
return new Response();
|
|
||||||
}
|
|
||||||
|
|
||||||
#[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) : Response
|
|
||||||
{
|
|
||||||
$ret = true;
|
|
||||||
|
|
||||||
$user = $this->entityManager->getRepository(User::class)->find($userId);
|
|
||||||
$case = $this->entityManager->getRepository(MemberCase::class)->find($caseId);
|
|
||||||
|
|
||||||
$res = UserCase::checkLevel($user, $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);
|
|
||||||
}
|
|
||||||
}
|
}
|
31
src/Controller/Case/GeoapifyController.php
Normal file
31
src/Controller/Case/GeoapifyController.php
Normal 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);
|
||||||
|
}
|
||||||
|
}
|
@ -1,14 +1,11 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Controller;
|
namespace App\Controller\Case;
|
||||||
|
|
||||||
use App\Entity\CaseItinerary;
|
use App\Entity\Case\CaseItinerary;
|
||||||
use App\Entity\CaseLocation;
|
use App\Entity\Case\MemberCase;;
|
||||||
use App\Entity\Location;
|
use App\Entity\System\User;
|
||||||
use App\Entity\MemberCase;
|
use App\Entity\System\UserCase;
|
||||||
use App\Entity\Messages;
|
|
||||||
use App\Entity\User;
|
|
||||||
use App\Entity\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;
|
||||||
@ -18,7 +15,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\HttpFoundation\Session\Session;
|
|
||||||
use Symfony\Component\Routing\Attribute\Route;
|
use Symfony\Component\Routing\Attribute\Route;
|
||||||
use Symfony\Component\Security\Http\Attribute\CurrentUser;
|
use Symfony\Component\Security\Http\Attribute\CurrentUser;
|
||||||
use Symfony\UX\Map\InfoWindow;
|
use Symfony\UX\Map\InfoWindow;
|
||||||
@ -29,8 +25,6 @@ use Symfony\UX\Map\Polyline;
|
|||||||
|
|
||||||
class ItineraryController extends AbstractController
|
class ItineraryController extends AbstractController
|
||||||
{
|
{
|
||||||
private array $msgs = [];
|
|
||||||
|
|
||||||
public function __construct(
|
public function __construct(
|
||||||
private EntityManagerInterface $entityManager,
|
private EntityManagerInterface $entityManager,
|
||||||
private array $navLinks = []
|
private array $navLinks = []
|
||||||
@ -43,8 +37,6 @@ class ItineraryController extends AbstractController
|
|||||||
{
|
{
|
||||||
$this->navLinks['case_itinerary'] = NavList::PRESENT_LINK;
|
$this->navLinks['case_itinerary'] = NavList::PRESENT_LINK;
|
||||||
|
|
||||||
$this->msgs = Libs::getMessages($user, $this->entityManager);
|
|
||||||
|
|
||||||
$itineraries = $this->entityManager->getRepository(CaseItinerary::class)->getRecentTravel(
|
$itineraries = $this->entityManager->getRepository(CaseItinerary::class)->getRecentTravel(
|
||||||
$user
|
$user
|
||||||
);
|
);
|
||||||
@ -64,7 +56,7 @@ class ItineraryController extends AbstractController
|
|||||||
'breadcrumbs' => [
|
'breadcrumbs' => [
|
||||||
new Breadcrumb($this->generateUrl('app_dashboard'), 'Dashboard'),
|
new Breadcrumb($this->generateUrl('app_dashboard'), 'Dashboard'),
|
||||||
],
|
],
|
||||||
'notifications' => $this->msgs,
|
'notifications' => Libs::getMessages($user, $this->entityManager),
|
||||||
'itineraries' => $itineraries,
|
'itineraries' => $itineraries,
|
||||||
'cases' => $cases
|
'cases' => $cases
|
||||||
]
|
]
|
||||||
@ -94,8 +86,6 @@ class ItineraryController extends AbstractController
|
|||||||
:
|
:
|
||||||
null);
|
null);
|
||||||
|
|
||||||
$this->msgs = Libs::getMessages($user, $this->entityManager);
|
|
||||||
|
|
||||||
$itineraries = $this->entityManager->getRepository(CaseItinerary::class)->getRecentTravel($user, [
|
$itineraries = $this->entityManager->getRepository(CaseItinerary::class)->getRecentTravel($user, [
|
||||||
'case' => $case,
|
'case' => $case,
|
||||||
'from' => $startDate,
|
'from' => $startDate,
|
||||||
@ -160,7 +150,7 @@ class ItineraryController extends AbstractController
|
|||||||
new Breadcrumb($this->generateUrl('app_my_cases'), 'My Cases'),
|
new Breadcrumb($this->generateUrl('app_my_cases'), 'My Cases'),
|
||||||
new Breadcrumb($this->generateUrl('app_report_itinerary'), 'Itinerary Report'),
|
new Breadcrumb($this->generateUrl('app_report_itinerary'), 'Itinerary Report'),
|
||||||
],
|
],
|
||||||
'notifications' => $this->msgs,
|
'notifications' => Libs::getMessages($user, $this->entityManager),
|
||||||
'map' => $map,
|
'map' => $map,
|
||||||
'total_distance' => $total_distance,
|
'total_distance' => $total_distance,
|
||||||
'total_duration' => $di->format("%H:%i'%s''"),
|
'total_duration' => $di->format("%H:%i'%s''"),
|
||||||
@ -168,105 +158,4 @@ class ItineraryController extends AbstractController
|
|||||||
)
|
)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[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);
|
|
||||||
|
|
||||||
$locations = [];
|
|
||||||
foreach ($cls as $cl) {
|
|
||||||
/** @var CaseLocation $cl */
|
|
||||||
$locations[] = $cl->getLocation();
|
|
||||||
}
|
|
||||||
|
|
||||||
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');
|
|
||||||
$arrival = $request->getPayload()->get('arrival');
|
|
||||||
$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))
|
|
||||||
->setArrival(new \DateTimeImmutable($arrival))
|
|
||||||
->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);
|
|
||||||
}
|
|
||||||
}
|
}
|
@ -1,11 +1,13 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Controller;
|
namespace App\Controller\Case;
|
||||||
|
|
||||||
use App\Entity\Member;
|
use App\Entity\Company\CompanyDocument;
|
||||||
use App\Entity\User;
|
use App\Entity\Case\Member;
|
||||||
use App\Entity\MemberCase;
|
use App\Entity\Case\MemberCase;;
|
||||||
use App\Entity\Messages;
|
use App\Entity\Case\MemberDocument;
|
||||||
|
use App\Entity\System\User;
|
||||||
|
use App\Entity\System\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;
|
||||||
@ -19,13 +21,6 @@ use Symfony\Component\Security\Http\Attribute\CurrentUser;
|
|||||||
|
|
||||||
class MemberController extends AbstractController
|
class MemberController extends AbstractController
|
||||||
{
|
{
|
||||||
/**
|
|
||||||
* Variable to store unread notification messages
|
|
||||||
*
|
|
||||||
* @var array
|
|
||||||
*/
|
|
||||||
private array $msgs;
|
|
||||||
|
|
||||||
public function __construct(
|
public function __construct(
|
||||||
private EntityManagerInterface $entityManager,
|
private EntityManagerInterface $entityManager,
|
||||||
private array $navLinks = [],
|
private array $navLinks = [],
|
||||||
@ -37,8 +32,6 @@ class MemberController extends AbstractController
|
|||||||
#[Route('/list-members/{id}', name: 'app_case_members')]
|
#[Route('/list-members/{id}', name: 'app_case_members')]
|
||||||
public function listMembers(Request $request, #[CurrentUser()] User $user, string $id): Response
|
public function listMembers(Request $request, #[CurrentUser()] User $user, string $id): Response
|
||||||
{
|
{
|
||||||
$this->msgs = Libs::getMessages($user, $this->entityManager);
|
|
||||||
|
|
||||||
$case = $this->entityManager->getRepository(MemberCase::class)->find($id);
|
$case = $this->entityManager->getRepository(MemberCase::class)->find($id);
|
||||||
$members = $this->entityManager->getRepository(Member::class)->getCaseMembersByName($case);
|
$members = $this->entityManager->getRepository(Member::class)->getCaseMembersByName($case);
|
||||||
|
|
||||||
@ -51,7 +44,7 @@ class MemberController extends AbstractController
|
|||||||
new Breadcrumb($this->generateUrl('app_list_cases'), 'List Cases'),
|
new Breadcrumb($this->generateUrl('app_list_cases'), 'List Cases'),
|
||||||
new Breadcrumb($this->generateUrl('app_case_members', ['id' => $id]), 'List Members'),
|
new Breadcrumb($this->generateUrl('app_case_members', ['id' => $id]), 'List Members'),
|
||||||
],
|
],
|
||||||
'notifications' => $this->msgs,
|
'notifications' => Libs::getMessages($user, $this->entityManager),
|
||||||
'case' => $case,
|
'case' => $case,
|
||||||
'members' => $members,
|
'members' => $members,
|
||||||
]
|
]
|
||||||
@ -62,49 +55,50 @@ class MemberController extends AbstractController
|
|||||||
#[Route('/add-member/{id}', name: 'app_case_add_member')]
|
#[Route('/add-member/{id}', name: 'app_case_add_member')]
|
||||||
public function addMember(Request $request, #[CurrentUser()] User $user, string $id): Response
|
public function addMember(Request $request, #[CurrentUser()] User $user, string $id): Response
|
||||||
{
|
{
|
||||||
$this->msgs = Libs::getMessages($user, $this->entityManager);
|
|
||||||
|
|
||||||
/** @var MemberCase $case */
|
/** @var MemberCase $case */
|
||||||
$case = $this->entityManager->getRepository(MemberCase::class)->find($id);
|
$case = $this->entityManager->getRepository(MemberCase::class)->find($id);
|
||||||
|
/** @var UserCase $userCase */
|
||||||
|
$userCase = $this->entityManager->getRepository(UserCase::class)->findOneBy(['memberCase' => $case]);
|
||||||
|
/** @var User $caseWorker */
|
||||||
|
$caseWorker = $userCase->getUser();
|
||||||
|
|
||||||
|
/** @var array $docs<int, CompanyDocuments> */
|
||||||
|
$docs = $this->entityManager->getRepository(CompanyDocument::class)->findBy(['company' => $user->getCompany()], ['title' => 'ASC']);
|
||||||
|
|
||||||
$member = new Member();
|
$member = new Member();
|
||||||
$form = $this->createForm(MemberFormType::class, $member);
|
$form = $this->createForm(MemberFormType::class, $member, ['docs' => $docs]);
|
||||||
|
|
||||||
$form->handleRequest($request);
|
$form->handleRequest($request);
|
||||||
|
|
||||||
if ($form->isSubmitted() && $form->isValid()) {
|
if ($form->isSubmitted() && $form->isValid()) {
|
||||||
|
$member = $form->getData();
|
||||||
$member->setCaseId($case)
|
$member->setCaseId($case)
|
||||||
->setFirstName($form->get('firstName')->getData())
|
->setChild(($form->get('isChild') ? true : false))
|
||||||
->setLastName($form->get('lastName')->getData())
|
->setParent(($form->get('isParent') ? true : false))
|
||||||
->setDob($form->get('dob')->getData())
|
->setAdultChild(($form->get('isAdultChild') ? true : false))
|
||||||
->setGender($form->get('gender')->getData())
|
->setLegalGuardian(($form->get('isLegalGuardian') ? true : false))
|
||||||
->setRace($form->get('race')->getData())
|
->setParentsLiveTogether(($form->get('parentsLiveTogether') ? true : false))
|
||||||
->setLanguage($form->get('language')->getData())
|
->setDcsApproved(($form->get('dcsApproved') ? true : false))
|
||||||
->setPersonalId($form->get('personalId')->getData())
|
|
||||||
->setEmergencyContact($form->get('emergencyContact')->getData())
|
|
||||||
->setEmail($form->get('email')->getData())
|
|
||||||
->setAddress($form->get('address')->getData())
|
|
||||||
->setCity($form->get('city')->getData())
|
|
||||||
->setState($form->get('state')->getData())
|
|
||||||
->setZip($form->get('zip')->getData())
|
|
||||||
->setPhone($form->get('phone')->getData())
|
|
||||||
->setRelationship($form->get('relationship')->getData())
|
|
||||||
->setDayPhone($form->get('dayPhone')->getData())
|
|
||||||
->setEveningPhone($form->get('eveningPhone')->getData())
|
|
||||||
->setCellPhone($form->get('cellPhone')->getData())
|
|
||||||
->setSchool($form->get('school')->getData())
|
|
||||||
->setMaritalStatus($form->get('maritalStatus')->getData())
|
|
||||||
->setChild($form->get('isChild')->getData())
|
|
||||||
->setParent($form->get('isParent')->getData())
|
|
||||||
->setAdultChild($form->get('isAdultChild')->getData())
|
|
||||||
->setLegalGuardian($form->get('isLegalGuardian')->getData())
|
|
||||||
->setParentsLiveTogether($form->get('parentsLiveTogether')->getData())
|
|
||||||
->setDcsApproved($form->get('dcsApproved')->getData())
|
|
||||||
;
|
;
|
||||||
|
|
||||||
$this->entityManager->persist($member);
|
$this->entityManager->persist($member);
|
||||||
$this->entityManager->flush();
|
$this->entityManager->flush();
|
||||||
|
|
||||||
|
$selectedDocs = $form->get('docs');
|
||||||
|
foreach ($selectedDocs->getData() as $doc) {
|
||||||
|
$dbDoc = $this->entityManager->getRepository(CompanyDocument::class)->find($doc);
|
||||||
|
if (!$dbDoc) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
$md = new MemberDocument();
|
||||||
|
$md->setClient($member)
|
||||||
|
->setDocument($dbDoc)
|
||||||
|
->setCaseWorker($caseWorker)
|
||||||
|
;
|
||||||
|
$this->entityManager->persist($md);
|
||||||
|
$this->entityManager->flush();
|
||||||
|
}
|
||||||
|
|
||||||
$this->addFlash(
|
$this->addFlash(
|
||||||
'success',
|
'success',
|
||||||
'Member added successfully'
|
'Member added successfully'
|
||||||
@ -123,9 +117,10 @@ class MemberController extends AbstractController
|
|||||||
new Breadcrumb($this->generateUrl('app_case_members', ['id' => $id]), 'List Members'),
|
new Breadcrumb($this->generateUrl('app_case_members', ['id' => $id]), 'List Members'),
|
||||||
new Breadcrumb($this->generateUrl('app_case_add_member', ['id' => $id]), 'Add Member'),
|
new Breadcrumb($this->generateUrl('app_case_add_member', ['id' => $id]), 'Add Member'),
|
||||||
],
|
],
|
||||||
'notifications' => $this->msgs,
|
'notifications' => Libs::getMessages($user, $this->entityManager),
|
||||||
'case' => $case,
|
'case' => $case,
|
||||||
'form' => $form->createView(),
|
'form' => $form->createView(),
|
||||||
|
'docs' => $docs,
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
@ -134,42 +129,54 @@ class MemberController extends AbstractController
|
|||||||
#[Route('/case/{caseId}/edit-member/{memberId}', name: 'app_case_edit_member')]
|
#[Route('/case/{caseId}/edit-member/{memberId}', name: 'app_case_edit_member')]
|
||||||
public function editMember(Request $request, #[CurrentUser()] User $user, string $caseId, string $memberId): Response
|
public function editMember(Request $request, #[CurrentUser()] User $user, string $caseId, string $memberId): Response
|
||||||
{
|
{
|
||||||
$this->msgs = Libs::getMessages($user, $this->entityManager);
|
/** @var Member $member */
|
||||||
|
|
||||||
$member = $this->entityManager->getRepository(Member::class)->find($memberId);
|
$member = $this->entityManager->getRepository(Member::class)->find($memberId);
|
||||||
|
/** @var MemberCase $case */
|
||||||
|
$case = $this->entityManager->getRepository(MemberCase::class)->find($caseId);
|
||||||
|
|
||||||
$form = $this->createForm(MemberFormType::class, $member);
|
/** @var array<int, CompanyDocuments> $docs */
|
||||||
|
$docs = $this->entityManager->getRepository(CompanyDocument::class)->findBy(['company' => $user->getCompany()], ['title' => 'ASC']);
|
||||||
|
/** @var array<int, MemberDocument> $memberDocs */
|
||||||
|
$memberDocs = $this->entityManager->getRepository(MemberDocument::class)->findBy(['client' => $member]);
|
||||||
|
$memberDbDocs = [];
|
||||||
|
foreach($memberDocs as $md) {
|
||||||
|
$memberDbDocs[] = $md->getDocument()->getId()->toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach ($docs as $idx => $d) {
|
||||||
|
if (in_array($d->getId()->toString(), $memberDbDocs)) {
|
||||||
|
$docs[$idx]->setSelected();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$form = $this->createForm(MemberFormType::class, $member, ['docs' => $docs]);
|
||||||
$form->handleRequest($request);
|
$form->handleRequest($request);
|
||||||
|
|
||||||
if ($form->isSubmitted() && $form->isValid()) {
|
if ($form->isSubmitted() && $form->isValid()) {
|
||||||
$member->setFirstName($form->get('firstName')->getData())
|
$member = $form->getData();
|
||||||
->setLastName($form->get('lastName')->getData())
|
$member->setChild(($form->get('isChild') ? true : false))
|
||||||
->setDob($form->get('dob')->getData())
|
->setParent(($form->get('isParent') ? true : false))
|
||||||
->setGender($form->get('gender')->getData())
|
->setAdultChild(($form->get('isAdultChild') ? true : false))
|
||||||
->setRace($form->get('race')->getData())
|
->setLegalGuardian(($form->get('isLegalGuardian') ? true : false))
|
||||||
->setLanguage($form->get('language')->getData())
|
->setParentsLiveTogether(($form->get('parentsLiveTogether') ? true : false))
|
||||||
->setPersonalId($form->get('personalId')->getData())
|
->setDcsApproved(($form->get('dcsApproved') ? true : false))
|
||||||
->setEmergencyContact($form->get('emergencyContact')->getData())
|
|
||||||
->setEmail($form->get('email')->getData())
|
|
||||||
->setAddress($form->get('address')->getData())
|
|
||||||
->setCity($form->get('city')->getData())
|
|
||||||
->setState($form->get('state')->getData())
|
|
||||||
->setZip($form->get('zip')->getData())
|
|
||||||
->setPhone($form->get('phone')->getData())
|
|
||||||
->setRelationship($form->get('relationship')->getData())
|
|
||||||
->setDayPhone($form->get('dayPhone')->getData())
|
|
||||||
->setEveningPhone($form->get('eveningPhone')->getData())
|
|
||||||
->setCellPhone($form->get('cellPhone')->getData())
|
|
||||||
->setSchool($form->get('school')->getData())
|
|
||||||
->setMaritalStatus($form->get('maritalStatus')->getData())
|
|
||||||
->setChild($form->get('isChild')->getData())
|
|
||||||
->setParent($form->get('isParent')->getData())
|
|
||||||
->setAdultChild($form->get('isAdultChild')->getData())
|
|
||||||
->setLegalGuardian($form->get('isLegalGuardian')->getData())
|
|
||||||
->setParentsLiveTogether($form->get('parentsLiveTogether')->getData())
|
|
||||||
->setDcsApproved($form->get('dcsApproved')->getData())
|
|
||||||
;
|
;
|
||||||
|
|
||||||
|
$this->entityManager->getRepository(MemberDocument::class)->removeUnsigned($member);
|
||||||
|
|
||||||
|
$selectedDocs = $form->get('docs')->getData();
|
||||||
|
|
||||||
|
foreach ($selectedDocs as $d) {
|
||||||
|
$md = new MemberDocument();
|
||||||
|
$md->setClient($member)
|
||||||
|
->setCaseWorker($user)
|
||||||
|
->setDocument($d)
|
||||||
|
;
|
||||||
|
|
||||||
|
$this->entityManager->persist($md);
|
||||||
|
$this->entityManager->flush();
|
||||||
|
}
|
||||||
|
|
||||||
$this->entityManager->flush();
|
$this->entityManager->flush();
|
||||||
|
|
||||||
$this->addFlash(
|
$this->addFlash(
|
||||||
@ -186,14 +193,16 @@ class MemberController extends AbstractController
|
|||||||
$this->navLinks,
|
$this->navLinks,
|
||||||
[
|
[
|
||||||
'breadcrumbs' => [
|
'breadcrumbs' => [
|
||||||
new Breadcrumb($this->generateUrl('app_list_cases'), 'List Cases'),
|
new Breadcrumb($this->generateUrl('app_list_cases'), 'Cases'),
|
||||||
new Breadcrumb($this->generateUrl('app_case_members', ['id' => $caseId]), 'List Members'),
|
new Breadcrumb($this->generateUrl('app_case_members', ['id' => $caseId]), 'Members'),
|
||||||
new Breadcrumb($this->generateUrl('app_case_edit_member', ['caseId' => $caseId, 'memberId' => $memberId]), 'Edit Member'),
|
new Breadcrumb($this->generateUrl('app_case_edit_member', ['caseId' => $caseId, 'memberId' => $memberId]), 'Edit Member'),
|
||||||
],
|
],
|
||||||
'notifications' => $this->msgs,
|
'notifications' => Libs::getMessages($user, $this->entityManager),
|
||||||
'member' => $member,
|
'member' => $member,
|
||||||
'form' => $form->createView(),
|
'form' => $form->createView(),
|
||||||
'caseId' => $caseId,
|
'caseId' => $caseId,
|
||||||
|
'docs' => $docs,
|
||||||
|
'selectedDocs' => $memberDbDocs,
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
);
|
);
|
@ -1,27 +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\Messages;
|
use App\Entity\Case\Referral;
|
||||||
use App\Entity\Referral;
|
use App\Entity\Case\StandardNote;
|
||||||
use App\Entity\StandardNote;
|
use App\Entity\Case\StandardNoteMember;
|
||||||
use App\Entity\StandardNoteMember;
|
use App\Entity\System\User;
|
||||||
use App\Entity\User;
|
use App\Entity\System\UserCase;
|
||||||
use App\Entity\UserCase;
|
use App\Entity\Case\VisitNote;
|
||||||
use App\Entity\VisitNote;
|
use App\Entity\Case\VisitNoteMembers;
|
||||||
use App\Entity\VisitNoteMembers;
|
use App\Enums\Case\NoteLocation;
|
||||||
use App\Enums\NoteLocation;
|
use App\Enums\Case\NoteMethod;
|
||||||
use App\Enums\NoteMethod;
|
use App\Enums\Case\ReferralServiceType;
|
||||||
use App\Enums\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;
|
||||||
@ -31,13 +28,6 @@ use Symfony\Component\Security\Http\Attribute\CurrentUser;
|
|||||||
|
|
||||||
class NoteController extends AbstractController
|
class NoteController extends AbstractController
|
||||||
{
|
{
|
||||||
/**
|
|
||||||
* Variable to store unread notification messages
|
|
||||||
*
|
|
||||||
* @var array
|
|
||||||
*/
|
|
||||||
private array $msgs;
|
|
||||||
|
|
||||||
public function __construct(
|
public function __construct(
|
||||||
private EntityManagerInterface $entityManager,
|
private EntityManagerInterface $entityManager,
|
||||||
private array $navLinks = [],
|
private array $navLinks = [],
|
||||||
@ -49,8 +39,6 @@ class NoteController extends AbstractController
|
|||||||
#[Route('/list-notes/{caseId?null}', name: 'app_list_notes')]
|
#[Route('/list-notes/{caseId?null}', name: 'app_list_notes')]
|
||||||
public function listNotes(string $caseId = null, #[CurrentUser()] User $user, Request $request): Response
|
public function listNotes(string $caseId = null, #[CurrentUser()] User $user, Request $request): Response
|
||||||
{
|
{
|
||||||
$this->msgs = Libs::getMessages($user, $this->entityManager);
|
|
||||||
|
|
||||||
/** @var UserCase[] $cases */
|
/** @var UserCase[] $cases */
|
||||||
$cases = $this->entityManager->getRepository(UserCase::class)->findBy(['user' => $user]);
|
$cases = $this->entityManager->getRepository(UserCase::class)->findBy(['user' => $user]);
|
||||||
$caseNotes = null;
|
$caseNotes = null;
|
||||||
@ -78,7 +66,7 @@ class NoteController extends AbstractController
|
|||||||
'breadcrumbs' => [
|
'breadcrumbs' => [
|
||||||
new Breadcrumb($this->generateUrl('app_list_notes'), 'List Notes')
|
new Breadcrumb($this->generateUrl('app_list_notes'), 'List Notes')
|
||||||
],
|
],
|
||||||
'notifications' => $this->msgs,
|
'notifications' => Libs::getMessages($user, $this->entityManager),
|
||||||
'cases' => $cases,
|
'cases' => $cases,
|
||||||
'caseNotes' => $caseNotes,
|
'caseNotes' => $caseNotes,
|
||||||
'case' => $case,
|
'case' => $case,
|
||||||
@ -90,12 +78,15 @@ class NoteController extends AbstractController
|
|||||||
#[Route('/add-note/{referralId}', name: 'app_add_note')]
|
#[Route('/add-note/{referralId}', name: 'app_add_note')]
|
||||||
public function addNote(#[CurrentUser()] User $user, Request $request, ?string $referralId = null): Response
|
public function addNote(#[CurrentUser()] User $user, Request $request, ?string $referralId = null): Response
|
||||||
{
|
{
|
||||||
|
if (substr($referralId, 0, 4) == 'case') {
|
||||||
|
throw $this->createNotFoundException('Select Referral from dropdown');
|
||||||
|
}
|
||||||
|
|
||||||
/** @var Referral $referral */
|
/** @var Referral $referral */
|
||||||
$referral = $this->entityManager->getRepository(Referral::class)->find($referralId);
|
$referral = $this->entityManager->getRepository(Referral::class)->find($referralId);
|
||||||
$this->entityManager->getRepository(Referral::class)->populateNotes($referral);
|
$this->entityManager->getRepository(Referral::class)->populateNotes($referral);
|
||||||
$this->msgs = Libs::getMessages($user, $this->entityManager);
|
|
||||||
|
|
||||||
$members = $this->entityManager->getRepository(Member::class)->findBy(['caseId' => $referral->getMemberCase()]);
|
$members = $this->entityManager->getRepository(Member::class)->findBy(['memberCase' => $referral->getMemberCase()]);
|
||||||
$defaultMethod = NoteMethod::BILLABLE;
|
$defaultMethod = NoteMethod::BILLABLE;
|
||||||
$defaultLocation = NoteLocation::COMMUNITY_OUTING;
|
$defaultLocation = NoteLocation::COMMUNITY_OUTING;
|
||||||
$form = $this->createForm(StandardNoteFormType::class, null, ['members' => $members]);
|
$form = $this->createForm(StandardNoteFormType::class, null, ['members' => $members]);
|
||||||
@ -124,6 +115,27 @@ class NoteController extends AbstractController
|
|||||||
$this->entityManager->persist($note);
|
$this->entityManager->persist($note);
|
||||||
$this->entityManager->flush();
|
$this->entityManager->flush();
|
||||||
|
|
||||||
|
if ($form->get('members')->getData()) {
|
||||||
|
foreach ($form->get('members')->getData() as $mem) {
|
||||||
|
if ($referral->getServiceCode() == ReferralServiceType::VS_THBB) {
|
||||||
|
$nm = new VisitNoteMembers();
|
||||||
|
$nm->setVisitNote($note)
|
||||||
|
->setPerson($mem)
|
||||||
|
;
|
||||||
|
} else {
|
||||||
|
$nm = new StandardNoteMember();
|
||||||
|
$nm->setStandardNote($note)
|
||||||
|
->setPerson($mem)
|
||||||
|
;
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->entityManager->persist($nm);
|
||||||
|
$this->entityManager->flush();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->addFlash('success', 'Note added successfully');
|
||||||
|
|
||||||
return $this->redirectToRoute('app_list_notes');
|
return $this->redirectToRoute('app_list_notes');
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -135,9 +147,10 @@ class NoteController extends AbstractController
|
|||||||
'breadcrumbs' => [
|
'breadcrumbs' => [
|
||||||
new Breadcrumb($this->generateUrl('app_list_notes'), 'List Notes')
|
new Breadcrumb($this->generateUrl('app_list_notes'), 'List Notes')
|
||||||
],
|
],
|
||||||
'notifications' => $this->msgs,
|
'notifications' => Libs::getMessages($user, $this->entityManager),
|
||||||
'referral' => $referral,
|
'referral' => $referral,
|
||||||
'form' => $form,
|
'form' => $form,
|
||||||
|
'members' => $members,
|
||||||
'default_method' => $defaultMethod,
|
'default_method' => $defaultMethod,
|
||||||
'default_location' => $defaultLocation,
|
'default_location' => $defaultLocation,
|
||||||
]
|
]
|
||||||
@ -148,19 +161,25 @@ class NoteController extends AbstractController
|
|||||||
#[Route('/edit-note/{noteType}/{noteId}', name: 'app_edit_note')]
|
#[Route('/edit-note/{noteType}/{noteId}', name: 'app_edit_note')]
|
||||||
public function editNote(string $noteId, string $noteType, #[CurrentUser()] User $user, Request $request): Response
|
public function editNote(string $noteId, string $noteType, #[CurrentUser()] User $user, Request $request): Response
|
||||||
{
|
{
|
||||||
$this->msgs = Libs::getMessages($user, $this->entityManager);
|
|
||||||
|
|
||||||
$form = null;
|
$form = null;
|
||||||
|
$members = [];
|
||||||
|
|
||||||
/** @var VisitNote|StandardNote $note */
|
/** @var VisitNote|StandardNote $note */
|
||||||
if ($noteType == 'visit') {
|
if ($noteType == 'visit') {
|
||||||
|
/** @var VisitNote $note */
|
||||||
$note = $this->entityManager->getRepository(VisitNote::class)->find($noteId);
|
$note = $this->entityManager->getRepository(VisitNote::class)->find($noteId);
|
||||||
$members = $this->entityManager->getRepository(Member::class)->findBy(['memberCase' => $note->getReferral()->getMemberCase()]);
|
$members = $this->entityManager->getRepository(Member::class)->getMembersByCaseAndNote($note->getReferral()->getMemberCase(), $note);
|
||||||
$form = $this->createForm(VisitNoteFormType::class, $note, ['members' => $members]);
|
|
||||||
|
$form = $this->createForm(VisitNoteFormType::class, $note, [
|
||||||
|
'members' => $members,
|
||||||
|
//'members' => $this->entityManager->getRepository(Member::class)->findBy(['memberCase' => $note->getReferral()->getMemberCase()])
|
||||||
|
]);
|
||||||
} elseif ($noteType == 'standard') {
|
} elseif ($noteType == 'standard') {
|
||||||
$note = $this->entityManager->getRepository(StandardNote::class)->find($noteId);
|
$note = $this->entityManager->getRepository(StandardNote::class)->find($noteId);
|
||||||
$members = $this->entityManager->getRepository(Member::class)->findBy(['memberCase' => $note->getReferral()->getMemberCase()]);
|
|
||||||
$form = $this->createForm(StandardNoteFormType::class, $note, ['members' => $members]);
|
$form = $this->createForm(StandardNoteFormType::class, $note, [
|
||||||
|
'members' => $members,
|
||||||
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
return $this->render(
|
return $this->render(
|
||||||
@ -171,67 +190,14 @@ class NoteController extends AbstractController
|
|||||||
'breadcrumbs' => [
|
'breadcrumbs' => [
|
||||||
new Breadcrumb($this->generateUrl('app_list_notes'), 'List Notes')
|
new Breadcrumb($this->generateUrl('app_list_notes'), 'List Notes')
|
||||||
],
|
],
|
||||||
'notifications' => $this->msgs,
|
'notifications' => Libs::getMessages($user, $this->entityManager),
|
||||||
'note' => $note,
|
'note' => $note,
|
||||||
'referral' => $note->getReferral(),
|
'referral' => $note->getReferral(),
|
||||||
'form' => $form,
|
'form' => $form,
|
||||||
'noteType' => $noteType
|
'noteType' => $noteType,
|
||||||
|
'members' => $members,
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[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));
|
|
||||||
}
|
|
||||||
}
|
}
|
@ -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;
|
||||||
@ -121,7 +120,6 @@ class ReferralController extends AbstractController
|
|||||||
public function editReferral(Request $request, #[CurrentUser()] User $user, string $caseId, string $referralId): Response
|
public function editReferral(Request $request, #[CurrentUser()] User $user, string $caseId, string $referralId): Response
|
||||||
{
|
{
|
||||||
$this->denyAccessUnlessGranted(['ROLE_ADMIN', 'ROLE_CASE_MANAGER']);
|
$this->denyAccessUnlessGranted(['ROLE_ADMIN', 'ROLE_CASE_MANAGER']);
|
||||||
$this->msgs = Libs::getMessages($user, $this->entityManager);
|
|
||||||
|
|
||||||
$referral = $this->entityManager->getRepository(Referral::class)->find($referralId);
|
$referral = $this->entityManager->getRepository(Referral::class)->find($referralId);
|
||||||
$case = $this->entityManager->getRepository(MemberCase::class)->find($caseId);
|
$case = $this->entityManager->getRepository(MemberCase::class)->find($caseId);
|
||||||
@ -152,7 +150,7 @@ class ReferralController extends AbstractController
|
|||||||
new Breadcrumb($this->generateUrl('app_list_referrals', ['id' => $case->getId()]), 'Referrals'),
|
new Breadcrumb($this->generateUrl('app_list_referrals', ['id' => $case->getId()]), 'Referrals'),
|
||||||
new Breadcrumb($this->generateUrl('app_case_edit_referral', ['caseId' => $case->getId(), 'referralId' => $referral->getId()]), 'Edit Referral'),
|
new Breadcrumb($this->generateUrl('app_case_edit_referral', ['caseId' => $case->getId(), 'referralId' => $referral->getId()]), 'Edit Referral'),
|
||||||
],
|
],
|
||||||
'notifications' => $this->msgs,
|
'notifications' => Libs::getMessages($user, $this->entityManager),
|
||||||
'case' => $case,
|
'case' => $case,
|
||||||
'form' => $form,
|
'form' => $form,
|
||||||
'referral' => $referral,
|
'referral' => $referral,
|
@ -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;
|
||||||
@ -14,18 +14,17 @@ use DateTime;
|
|||||||
use DateTimeZone;
|
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\ExpressionLanguage\Expression;
|
||||||
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\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\Security\Http\Attribute\IsGranted;
|
use Symfony\Component\Security\Http\Attribute\IsGranted;
|
||||||
use Symfony\Component\String\Slugger\SluggerInterface;
|
use Symfony\Component\String\Slugger\SluggerInterface;
|
||||||
|
|
||||||
#[IsGranted('ROLE_ADMIN')]
|
|
||||||
class CompanyController extends AbstractController
|
class CompanyController extends AbstractController
|
||||||
{
|
{
|
||||||
private array $msgs;
|
|
||||||
|
|
||||||
public function __construct(
|
public function __construct(
|
||||||
private EntityManagerInterface $entityManager,
|
private EntityManagerInterface $entityManager,
|
||||||
private array $navLinks = []
|
private array $navLinks = []
|
||||||
@ -34,13 +33,13 @@ class CompanyController extends AbstractController
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[Route('/company', name: 'app_company')]
|
#[Route('/company', name: 'app_company')]
|
||||||
|
#[IsGranted(new Expression('is_granted("ROLE_ADMIN")'))]
|
||||||
public function editCompanyInfo(
|
public function editCompanyInfo(
|
||||||
#[CurrentUser()] User $user,
|
#[CurrentUser()] User $user,
|
||||||
Request $request,
|
Request $request,
|
||||||
SluggerInterface $slugger
|
SluggerInterface $slugger
|
||||||
): Response {
|
): Response {
|
||||||
$this->navLinks['company_nav'] = NavList::PRESENT_LINK;
|
$this->navLinks['company_nav'] = NavList::PRESENT_LINK;
|
||||||
$this->msgs = Libs::getMessages($user, $this->entityManager);
|
|
||||||
$company = $user->getCompany();
|
$company = $user->getCompany();
|
||||||
|
|
||||||
$form = $this->createForm(InternalCompanyFormType::class, $company);
|
$form = $this->createForm(InternalCompanyFormType::class, $company);
|
||||||
@ -78,18 +77,64 @@ class CompanyController extends AbstractController
|
|||||||
'breadcrumbs' => [
|
'breadcrumbs' => [
|
||||||
new Breadcrumb($this->generateUrl('app_admin_dashboard'), "Admin Dashboard"),
|
new Breadcrumb($this->generateUrl('app_admin_dashboard'), "Admin Dashboard"),
|
||||||
],
|
],
|
||||||
'msgs' => $this->msgs,
|
'msgs' => Libs::getMessages($user, $this->entityManager),
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[Route('/company/directory', name: 'app_company_directory')]
|
||||||
|
public function companyDirectory(#[CurrentUser()] User $user): Response
|
||||||
|
{
|
||||||
|
$this->navLinks['company_nav'] = NavList::PRESENT_LINK;
|
||||||
|
$users = $this->entityManager->getRepository(User::class)->findBy(['company' => $user->getCompany()], ['name' => 'ASC']);
|
||||||
|
|
||||||
|
return $this->render(
|
||||||
|
'internal/admin/company/directory.html.twig',
|
||||||
|
array_merge(
|
||||||
|
$this->navLinks,
|
||||||
|
[
|
||||||
|
'breadcrumbs' => [
|
||||||
|
new Breadcrumb(
|
||||||
|
($this->isGranted('ROLE_ADMIN') ? $this->generateUrl('app_admin_dashboard') : $this->generateUrl('app_dashboard')),
|
||||||
|
($this->isGranted('ROLE_ADMIN') ? "Admin Dashboard" : "Dashboard")
|
||||||
|
),
|
||||||
|
],
|
||||||
|
'users' => $users,
|
||||||
|
'notifications' => Libs::getMessages($user, $this->entityManager),
|
||||||
|
]
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[Route('/user/download-vcard/{id}', name: 'app_download_user_vcard')]
|
||||||
|
public function downloadUserVcard(#[CurrentUser()] User $user, string $id): Response
|
||||||
|
{
|
||||||
|
$coworker = $this->entityManager->getRepository(User::class)->find($id);
|
||||||
|
if (!$coworker) {
|
||||||
|
throw new NotFoundHttpException('Coworker not found');
|
||||||
|
}
|
||||||
|
if ($coworker->getCompany() !== $user->getCompany()) {
|
||||||
|
throw new NotFoundHttpException('Coworker not found');
|
||||||
|
}
|
||||||
|
|
||||||
|
return new Response($coworker->generateVCard(), 200, [
|
||||||
|
'Content-Type' => 'text/vcf',
|
||||||
|
'Content-Disposition' => 'attachment; filename="' . str_replace(' ', '', $coworker->getName()) . '.vcf"',
|
||||||
|
'Content-Length' => strlen($coworker->generateVCard()),
|
||||||
|
'Cache-Control' => 'must-revalidate, post-check=0, pre-check=0',
|
||||||
|
'Expires' => '0',
|
||||||
|
'Pragma' => 'public',
|
||||||
|
'Content-Transfer-Encoding' => 'binary'
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
#[Route('/docs/list', name: 'app_list_documents')]
|
#[Route('/docs/list', name: 'app_list_documents')]
|
||||||
|
#[IsGranted(new Expression('is_granted("ROLE_ADMIN")'))]
|
||||||
public function listDocs(#[CurrentUser()] User $user): Response
|
public function listDocs(#[CurrentUser()] User $user): Response
|
||||||
{
|
{
|
||||||
$this->navLinks['company_nav'] = NavList::PRESENT_LINK;
|
$this->navLinks['company_nav'] = NavList::PRESENT_LINK;
|
||||||
|
|
||||||
$this->msgs = Libs::getMessages($user, $this->entityManager);
|
|
||||||
$companyDocs = $this->entityManager->getRepository(CompanyDocument::class)->findBy(['company' => $user->getCompany()], ['title' => 'ASC']);
|
$companyDocs = $this->entityManager->getRepository(CompanyDocument::class)->findBy(['company' => $user->getCompany()], ['title' => 'ASC']);
|
||||||
|
|
||||||
return $this->render(
|
return $this->render(
|
||||||
@ -98,7 +143,7 @@ class CompanyController extends AbstractController
|
|||||||
$this->navLinks,
|
$this->navLinks,
|
||||||
[
|
[
|
||||||
'breadcrumbs' => [],
|
'breadcrumbs' => [],
|
||||||
'notifications' => $this->msgs,
|
'notifications' => Libs::getMessages($user, $this->entityManager),
|
||||||
'docs' => $companyDocs,
|
'docs' => $companyDocs,
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
@ -106,10 +151,10 @@ class CompanyController extends AbstractController
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[Route('/docs/add', name: 'app_add_doc')]
|
#[Route('/docs/add', name: 'app_add_doc')]
|
||||||
|
#[IsGranted(new Expression('is_granted("ROLE_ADMIN")'))]
|
||||||
public function addCompanyDocument(Request $request, #[CurrentUser()] User $user): Response
|
public function addCompanyDocument(Request $request, #[CurrentUser()] User $user): Response
|
||||||
{
|
{
|
||||||
$this->navLinks['company_nav'] = NavList::PRESENT_LINK;
|
$this->navLinks['company_nav'] = NavList::PRESENT_LINK;
|
||||||
$this->msgs = Libs::getMessages($user, $this->entityManager);
|
|
||||||
|
|
||||||
$form = $this->createForm(CompanyDocumentFormType::class);
|
$form = $this->createForm(CompanyDocumentFormType::class);
|
||||||
|
|
||||||
@ -134,7 +179,7 @@ class CompanyController extends AbstractController
|
|||||||
$this->navLinks,
|
$this->navLinks,
|
||||||
[
|
[
|
||||||
'breadcrumbs' => [],
|
'breadcrumbs' => [],
|
||||||
'notifications' => $this->msgs,
|
'notifications' => Libs::getMessages($user, $this->entityManager),
|
||||||
'form' => $form,
|
'form' => $form,
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
@ -142,13 +187,13 @@ class CompanyController extends AbstractController
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[Route('/docs/edit/{docId}', name: 'app_edit_doc')]
|
#[Route('/docs/edit/{docId}', name: 'app_edit_doc')]
|
||||||
|
#[IsGranted(new Expression('is_granted("ROLE_ADMIN")'))]
|
||||||
public function editCompanyDocument(string $docId, Request $request, #[CurrentUser()] User $user): Response
|
public function editCompanyDocument(string $docId, Request $request, #[CurrentUser()] User $user): Response
|
||||||
{
|
{
|
||||||
$companyDoc = $this->entityManager->getRepository(CompanyDocument::class)->find($docId);
|
$companyDoc = $this->entityManager->getRepository(CompanyDocument::class)->find($docId);
|
||||||
|
|
||||||
$this->navLinks['company_nav'] = NavList::PRESENT_LINK;
|
$this->navLinks['company_nav'] = NavList::PRESENT_LINK;
|
||||||
$this->msgs = Libs::getMessages($user, $this->entityManager);
|
checkdate(1, 1, 1);
|
||||||
|
|
||||||
$form = $this->createForm(CompanyDocumentFormType::class, $companyDoc);
|
$form = $this->createForm(CompanyDocumentFormType::class, $companyDoc);
|
||||||
|
|
||||||
$form->handleRequest($request);
|
$form->handleRequest($request);
|
||||||
@ -171,7 +216,7 @@ class CompanyController extends AbstractController
|
|||||||
$this->navLinks,
|
$this->navLinks,
|
||||||
[
|
[
|
||||||
'breadcrumbs' => [],
|
'breadcrumbs' => [],
|
||||||
'notifications' => $this->msgs,
|
'notifications' => Libs::getMessages($user, $this->entityManager),
|
||||||
'form' => $form,
|
'form' => $form,
|
||||||
'doc' => $companyDoc,
|
'doc' => $companyDoc,
|
||||||
'docText' => str_replace("\r\n", "", $companyDoc->getText())
|
'docText' => str_replace("\r\n", "", $companyDoc->getText())
|
82
src/Controller/Company/DocumentController.php
Normal file
82
src/Controller/Company/DocumentController.php
Normal file
@ -0,0 +1,82 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Controller\Company;
|
||||||
|
|
||||||
|
use App\Entity\Company\CompanyDocument;
|
||||||
|
use App\Entity\Case\Member;
|
||||||
|
use App\Entity\Case\MemberDocument;
|
||||||
|
use App\Entity\System\User;
|
||||||
|
use App\Libs\Breadcrumb;
|
||||||
|
use App\Libs\NavList;
|
||||||
|
use App\Libs\Libs;
|
||||||
|
use Doctrine\ORM\EntityManagerInterface;
|
||||||
|
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
||||||
|
use Symfony\Component\HttpFoundation\Request;
|
||||||
|
use Symfony\Component\HttpFoundation\Response;
|
||||||
|
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
|
||||||
|
use Symfony\Component\Routing\Attribute\Route;
|
||||||
|
use Symfony\Component\Security\Http\Attribute\CurrentUser;
|
||||||
|
|
||||||
|
class DocumentController extends AbstractController
|
||||||
|
{
|
||||||
|
public function __construct(
|
||||||
|
private EntityManagerInterface $entityManager,
|
||||||
|
private array $navLinks = []
|
||||||
|
) {
|
||||||
|
$this->navLinks = NavList::LIST;
|
||||||
|
}
|
||||||
|
|
||||||
|
#[Route('/member/{memberId}', name: 'app_display_case_doc')]
|
||||||
|
public function displayCaseDocument(string $memberId, #[CurrentUser()] User $user): Response
|
||||||
|
{
|
||||||
|
/** @var Member $member */
|
||||||
|
$member = $this->entityManager->getRepository(Member::class)->find($memberId);
|
||||||
|
$memberDocs = $this->entityManager->getRepository(MemberDocument::class)->findBy(['client' => $member]);
|
||||||
|
|
||||||
|
return $this->render(
|
||||||
|
'internal/cases/members/documents/list-member-docs.html.twig',
|
||||||
|
array_merge(
|
||||||
|
$this->navLinks,
|
||||||
|
[
|
||||||
|
'notifications' => Libs::getMessages($user, $this->entityManager),
|
||||||
|
'breadcrumbs' => [
|
||||||
|
new Breadcrumb($this->generateUrl('app_my_cases'), 'Cases'),
|
||||||
|
new Breadcrumb($this->generateUrl('app_case_members', ['id' => $member->getCaseId()->getId()->toString()]), 'Members'),
|
||||||
|
],
|
||||||
|
'docs' => $memberDocs,
|
||||||
|
]
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[Route('/member/{memberId}/document/{docId}/sign', name: 'app_member_sign_case_doc')]
|
||||||
|
public function signCaseDocument(string $memberId, string $docId, #[CurrentUser()] User $user, Request $request): Response
|
||||||
|
{
|
||||||
|
/** @var Member $member */
|
||||||
|
$member = $this->entityManager->getRepository(Member::class)->find($memberId);
|
||||||
|
/** @var CompanyDocument $doc */
|
||||||
|
$doc = $this->entityManager->getRepository(CompanyDocument::class)->find($docId);
|
||||||
|
|
||||||
|
/** @var MemberDocument $memDoc */
|
||||||
|
$memDoc = $this->entityManager->getRepository(MemberDocument::class)->findOneBy([
|
||||||
|
'document' => $doc,
|
||||||
|
'client' => $member,
|
||||||
|
'caseWorker' => $user
|
||||||
|
]);
|
||||||
|
|
||||||
|
if (!$memDoc) {
|
||||||
|
throw new NotFoundHttpException('Document not found');
|
||||||
|
}
|
||||||
|
|
||||||
|
//$form = $this->createForm(MemberDocument::class);
|
||||||
|
/** @todo add form data */
|
||||||
|
//$form->add();
|
||||||
|
|
||||||
|
return $this->render(
|
||||||
|
'internal/cases/members/documents/sign-member-doc.html.twig', [
|
||||||
|
'doc' => $memDoc,
|
||||||
|
'caseWorkerSignature' => $user->getSignature(),
|
||||||
|
]
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
@ -1,44 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Controller;
|
|
||||||
|
|
||||||
use App\Libs\NavList;
|
|
||||||
use App\Libs\Libs;
|
|
||||||
use Doctrine\ORM\EntityManagerInterface;
|
|
||||||
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
|
||||||
use Symfony\Component\HttpFoundation\Request;
|
|
||||||
use Symfony\Component\HttpFoundation\Response;
|
|
||||||
use Symfony\Component\Routing\Attribute\Route;
|
|
||||||
use Symfony\Component\Security\Http\Attribute\CurrentUser;
|
|
||||||
|
|
||||||
class DocumentController extends AbstractController
|
|
||||||
{
|
|
||||||
public function __construct(
|
|
||||||
private EntityManagerInterface $entityManager,
|
|
||||||
private array $navLinks = []
|
|
||||||
) {
|
|
||||||
$this->navLinks = NavList::LIST;
|
|
||||||
}
|
|
||||||
|
|
||||||
#[Route('/case/{caseId}/doc/{docId}', name: 'app_display_case_doc')]
|
|
||||||
public function displayCaseDocument(string $caseId, string $docId, #[CurrentUser()] User $user): Response
|
|
||||||
{
|
|
||||||
$msgs = Libs::getMessages($user, $this->entityManager);
|
|
||||||
|
|
||||||
$case = $this->entityManager->getRepository(MemberCase::class)->find($caseId);
|
|
||||||
$doc = $this->entityManager->getRepository(CompanyDocument::class)->find($docId);
|
|
||||||
$caseDoc = $this->entityManager->getRepository(CaseDocument::class)->getCaseDocument($case, $doc);
|
|
||||||
|
|
||||||
return $this->render(
|
|
||||||
'internal/cases/documents/display-case-doc.html.twig',
|
|
||||||
array_merge(
|
|
||||||
$this->navLinks,
|
|
||||||
[
|
|
||||||
'msgs' => $msgs,
|
|
||||||
'notificationCount' => count($msgs),
|
|
||||||
'breadcrumbs' => []
|
|
||||||
]
|
|
||||||
)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
@ -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;
|
||||||
@ -22,13 +21,6 @@ use Symfony\UX\Map\Point;
|
|||||||
|
|
||||||
class CommunityResourceController extends AbstractController
|
class CommunityResourceController extends AbstractController
|
||||||
{
|
{
|
||||||
/**
|
|
||||||
* Variable to store unread notification messages
|
|
||||||
*
|
|
||||||
* @var array
|
|
||||||
*/
|
|
||||||
private array $msgs;
|
|
||||||
|
|
||||||
public function __construct(
|
public function __construct(
|
||||||
private readonly EntityManagerInterface $entityManager,
|
private readonly EntityManagerInterface $entityManager,
|
||||||
private array $navLinks = []
|
private array $navLinks = []
|
||||||
@ -41,7 +33,6 @@ class CommunityResourceController extends AbstractController
|
|||||||
public function list(#[CurrentUser()] User $user): Response
|
public function list(#[CurrentUser()] User $user): Response
|
||||||
{
|
{
|
||||||
$rsc = $this->entityManager->getRepository(CommunityResource::class)->findAll();
|
$rsc = $this->entityManager->getRepository(CommunityResource::class)->findAll();
|
||||||
$this->msgs = Libs::getMessages($user, $this->entityManager);
|
|
||||||
|
|
||||||
return $this->render(
|
return $this->render(
|
||||||
'internal/community_resource/list.html.twig',
|
'internal/community_resource/list.html.twig',
|
||||||
@ -52,7 +43,7 @@ class CommunityResourceController extends AbstractController
|
|||||||
new Breadcrumb('#', 'Community Resources')
|
new Breadcrumb('#', 'Community Resources')
|
||||||
],
|
],
|
||||||
'resources' => $rsc,
|
'resources' => $rsc,
|
||||||
'notifications' => $this->msgs,
|
'notifications' => Libs::getMessages($user, $this->entityManager),
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
@ -61,8 +52,6 @@ class CommunityResourceController extends AbstractController
|
|||||||
#[Route('/resource/map', name: 'app_community_resource_map')]
|
#[Route('/resource/map', name: 'app_community_resource_map')]
|
||||||
public function map(#[CurrentUser()] User $user): Response
|
public function map(#[CurrentUser()] User $user): Response
|
||||||
{
|
{
|
||||||
$this->msgs = Libs::getMessages($user, $this->entityManager);
|
|
||||||
|
|
||||||
$rcs = $this->entityManager->getRepository(CommunityResource::class)->findAll();
|
$rcs = $this->entityManager->getRepository(CommunityResource::class)->findAll();
|
||||||
|
|
||||||
$map = new Map('default');
|
$map = new Map('default');
|
||||||
@ -94,7 +83,7 @@ class CommunityResourceController extends AbstractController
|
|||||||
new Breadcrumb($this->generateUrl('app_community_resource'), 'List Resources'),
|
new Breadcrumb($this->generateUrl('app_community_resource'), 'List Resources'),
|
||||||
new Breadcrumb('#', 'Community Resources')
|
new Breadcrumb('#', 'Community Resources')
|
||||||
],
|
],
|
||||||
'notifications' => $this->msgs,
|
'notifications' => Libs::getMessages($user, $this->entityManager),
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
@ -103,8 +92,6 @@ class CommunityResourceController extends AbstractController
|
|||||||
#[Route('/resource/add', name: 'app_community_resource_add')]
|
#[Route('/resource/add', name: 'app_community_resource_add')]
|
||||||
public function add(#[CurrentUser()] User $user, Request $request): Response
|
public function add(#[CurrentUser()] User $user, Request $request): Response
|
||||||
{
|
{
|
||||||
$this->msgs = Libs::getMessages($user, $this->entityManager);
|
|
||||||
|
|
||||||
$form = $this->createForm(ResourceFormType::class);
|
$form = $this->createForm(ResourceFormType::class);
|
||||||
$form->handleRequest($request);
|
$form->handleRequest($request);
|
||||||
|
|
||||||
@ -142,7 +129,7 @@ class CommunityResourceController extends AbstractController
|
|||||||
new Breadcrumb($this->generateUrl('app_community_resource'), 'List Resources'),
|
new Breadcrumb($this->generateUrl('app_community_resource'), 'List Resources'),
|
||||||
new Breadcrumb('#', 'Add Resource')
|
new Breadcrumb('#', 'Add Resource')
|
||||||
],
|
],
|
||||||
'notifications' => $this->msgs,
|
'notifications' => Libs::getMessages($user, $this->entityManager),
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
@ -152,8 +139,6 @@ class CommunityResourceController extends AbstractController
|
|||||||
#[Route('/resource/edit/{id}', name: 'app_community_resource_edit')]
|
#[Route('/resource/edit/{id}', name: 'app_community_resource_edit')]
|
||||||
public function edit(string $id, #[CurrentUser()] User $user, Request $request): Response
|
public function edit(string $id, #[CurrentUser()] User $user, Request $request): Response
|
||||||
{
|
{
|
||||||
$this->msgs = Libs::getMessages($user, $this->entityManager);
|
|
||||||
|
|
||||||
$rsc = $this->entityManager->getRepository(CommunityResource::class)->find($id);
|
$rsc = $this->entityManager->getRepository(CommunityResource::class)->find($id);
|
||||||
$form = $this->createForm(ResourceFormType::class, $rsc);
|
$form = $this->createForm(ResourceFormType::class, $rsc);
|
||||||
|
|
||||||
@ -189,7 +174,7 @@ class CommunityResourceController extends AbstractController
|
|||||||
new Breadcrumb($this->generateUrl('app_community_resource'), 'List Resources'),
|
new Breadcrumb($this->generateUrl('app_community_resource'), 'List Resources'),
|
||||||
new Breadcrumb('#', 'Edit Resource')
|
new Breadcrumb('#', 'Edit Resource')
|
||||||
],
|
],
|
||||||
'notifications' => $this->msgs,
|
'notifications' => Libs::getMessages($user, $this->entityManager),
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
@ -217,13 +202,4 @@ class CommunityResourceController extends AbstractController
|
|||||||
'Content-Transfer-Encoding' => 'binary'
|
'Content-Transfer-Encoding' => 'binary'
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[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'];
|
|
||||||
$resources = $this->entityManager->getRepository(CommunityResource::class)->findBy(['county' => $county]);
|
|
||||||
return $this->json($resources);
|
|
||||||
}
|
|
||||||
}
|
}
|
@ -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),
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
);
|
);
|
274
src/Controller/System/AjaxController.php
Normal file
274
src/Controller/System/AjaxController.php
Normal file
@ -0,0 +1,274 @@
|
|||||||
|
<?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));
|
||||||
|
}
|
||||||
|
}
|
@ -1,19 +1,25 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Controller;
|
namespace App\Controller\System;
|
||||||
|
|
||||||
use App\Entity\Messages;
|
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\NavList;
|
use App\Libs\NavList;
|
||||||
|
use DateInterval;
|
||||||
use DateTime;
|
use DateTime;
|
||||||
|
use DateTimeInterface;
|
||||||
|
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\Form\Extension\Core\Type\EmailType;
|
use Symfony\Component\Form\Extension\Core\Type\EmailType;
|
||||||
use Symfony\Component\Form\Extension\Core\Type\FileType;
|
use Symfony\Component\Form\Extension\Core\Type\FileType;
|
||||||
|
use Symfony\Component\Form\Extension\Core\Type\HiddenType;
|
||||||
use Symfony\Component\Form\Extension\Core\Type\PasswordType;
|
use Symfony\Component\Form\Extension\Core\Type\PasswordType;
|
||||||
use Symfony\Component\Form\Extension\Core\Type\RepeatedType;
|
use Symfony\Component\Form\Extension\Core\Type\RepeatedType;
|
||||||
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
|
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
|
||||||
|
use Symfony\Component\Form\Extension\Core\Type\TelType;
|
||||||
use Symfony\Component\Form\Extension\Core\Type\TextType;
|
use Symfony\Component\Form\Extension\Core\Type\TextType;
|
||||||
use Symfony\Component\HttpFoundation\BinaryFileResponse;
|
use Symfony\Component\HttpFoundation\BinaryFileResponse;
|
||||||
use Symfony\Component\HttpFoundation\Request;
|
use Symfony\Component\HttpFoundation\Request;
|
||||||
@ -22,19 +28,9 @@ use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface;
|
|||||||
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\String\Slugger\SluggerInterface;
|
use Symfony\Component\String\Slugger\SluggerInterface;
|
||||||
use Vich\UploaderBundle\Entity\File;
|
|
||||||
|
|
||||||
class DefaultController extends AbstractController
|
class DefaultController extends AbstractController
|
||||||
{
|
{
|
||||||
/**
|
|
||||||
* Variable to store unread notification messages
|
|
||||||
*
|
|
||||||
* @var array
|
|
||||||
*/
|
|
||||||
private array $msgs;
|
|
||||||
|
|
||||||
private int $notificationCount = 0;
|
|
||||||
|
|
||||||
public function __construct(
|
public function __construct(
|
||||||
private readonly EntityManagerInterface $entityManager,
|
private readonly EntityManagerInterface $entityManager,
|
||||||
private readonly UserPasswordHasherInterface $userPasswordHasher,
|
private readonly UserPasswordHasherInterface $userPasswordHasher,
|
||||||
@ -43,31 +39,54 @@ class DefaultController extends AbstractController
|
|||||||
$this->navLinks = NavList::LIST;
|
$this->navLinks = NavList::LIST;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[Route('/up', name: 'app_up')]
|
||||||
|
public function up(): Response
|
||||||
|
{
|
||||||
|
$cnx = $this->entityManager->getConnection();
|
||||||
|
$cnx->connect();
|
||||||
|
$connected = $cnx->isConnected();
|
||||||
|
if ($connected) {
|
||||||
|
return $this->json(true, Response::HTTP_OK);
|
||||||
|
} else {
|
||||||
|
return $this->json(false, Response::HTTP_SERVICE_UNAVAILABLE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#[Route('/dashboard', name: 'app_dashboard')]
|
#[Route('/dashboard', name: 'app_dashboard')]
|
||||||
public function dashboard(Request $request, #[CurrentUser()] ?User $user): Response
|
public function dashboard(Request $request, #[CurrentUser()] ?User $user): Response
|
||||||
{
|
{
|
||||||
$this->denyAccessUnlessGranted('IS_AUTHENTICATED_FULLY');
|
$this->denyAccessUnlessGranted('IS_AUTHENTICATED_FULLY');
|
||||||
$this->msgs = $this->entityManager->getRepository(Messages::class)->getUnreadMessages($user);
|
|
||||||
$this->notificationCount = $this->entityManager->getRepository(Messages::class)->getUnreadMessageCount($user);
|
|
||||||
|
|
||||||
if (!$user->getCompany()) {
|
if (!$user->getCompany()) {
|
||||||
return $this->redirectToRoute('app_register_step', ['step' => RegistrationController::REGISTER_STEP_TWO]);
|
return $this->redirectToRoute('app_register_step', ['step' => RegistrationController::REGISTER_STEP_TWO]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$oldPasswordDate = new DateTime('now', new DateTimeZone($_ENV['COMPANY_TIMEZONE']));
|
||||||
|
$oldPasswordDate->sub(DateInterval::createFromDateString('120 days'));
|
||||||
|
|
||||||
|
if (is_a($user->getPasswordChanged(), DateTimeInterface::class) && $user->getPasswordChanged() < $oldPasswordDate) {
|
||||||
|
$this->addFlash('danger', 'You must change your password');
|
||||||
|
return $this->redirectToRoute('app_profile');
|
||||||
|
}
|
||||||
|
|
||||||
|
if(isset($_SERVER['HTTP_REFERER']) && $_SERVER['HTTP_REFERER'] == "{$_SERVER['HTTP_X_FORWARDED_PROTO']}://{$_SERVER['HTTP_HOST']}/") {
|
||||||
|
$this->entityManager->getRepository(User::class)->updateLastLogin($user);
|
||||||
|
}
|
||||||
|
|
||||||
|
$dashboard = new Dashboard($this->entityManager, $user);
|
||||||
|
|
||||||
$this->navLinks['user_dashboard'] = NavList::PRESENT_LINK;
|
$this->navLinks['user_dashboard'] = NavList::PRESENT_LINK;
|
||||||
|
|
||||||
return $this->render(
|
return $this->render(
|
||||||
'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' => $this->msgs,
|
'notifications' => Libs::getMessages($user, $this->entityManager),
|
||||||
'notificationCount' => $this->notificationCount,
|
|
||||||
'milesTravelledYTD' => 0,
|
|
||||||
'milesTravelled30Days' => 0,
|
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
@ -80,8 +99,6 @@ class DefaultController extends AbstractController
|
|||||||
SluggerInterface $slugger
|
SluggerInterface $slugger
|
||||||
): Response {
|
): Response {
|
||||||
$this->denyAccessUnlessGranted('IS_AUTHENTICATED_FULLY');
|
$this->denyAccessUnlessGranted('IS_AUTHENTICATED_FULLY');
|
||||||
$this->msgs = $this->entityManager->getRepository(Messages::class)->getUnreadMessages($user);
|
|
||||||
$this->notificationCount = $this->entityManager->getRepository(Messages::class)->getUnreadMessageCount($user);
|
|
||||||
|
|
||||||
$this->navLinks['profile'] = NavList::PRESENT_LINK;
|
$this->navLinks['profile'] = NavList::PRESENT_LINK;
|
||||||
|
|
||||||
@ -104,11 +121,18 @@ class DefaultController extends AbstractController
|
|||||||
'first_options' => ['label' => 'Password', 'label_attr' => ['class' => 'form-label']],
|
'first_options' => ['label' => 'Password', 'label_attr' => ['class' => 'form-label']],
|
||||||
'second_options' => ['label' => 'Repeat Password', 'label_attr' => ['class' => 'form-label']],
|
'second_options' => ['label' => 'Repeat Password', 'label_attr' => ['class' => 'form-label']],
|
||||||
])
|
])
|
||||||
|
->add('personalPhone', TelType::class, [
|
||||||
|
'label' => 'Personal Phone',
|
||||||
|
])
|
||||||
|
->add('workPhone', TelType::class, [
|
||||||
|
'label' => 'Work Phone',
|
||||||
|
])
|
||||||
->add('imageName', FileType::class, [
|
->add('imageName', FileType::class, [
|
||||||
'label' => 'Profile Picture',
|
'label' => 'Profile Picture',
|
||||||
'required' => false,
|
'required' => false,
|
||||||
'mapped' => false
|
'mapped' => false
|
||||||
])
|
])
|
||||||
|
->add('signature', HiddenType::class)
|
||||||
->add('submit', SubmitType::class, [
|
->add('submit', SubmitType::class, [
|
||||||
'label' => 'Save Profile',
|
'label' => 'Save Profile',
|
||||||
'attr' => ['class' => 'btn btn-lg bg-gradient-dark btn-lg w-100 mt-4 mb-0']
|
'attr' => ['class' => 'btn btn-lg bg-gradient-dark btn-lg w-100 mt-4 mb-0']
|
||||||
@ -119,6 +143,11 @@ class DefaultController extends AbstractController
|
|||||||
$form->handleRequest($request);
|
$form->handleRequest($request);
|
||||||
|
|
||||||
if ($form->isSubmitted() && $form->isValid()) {
|
if ($form->isSubmitted() && $form->isValid()) {
|
||||||
|
if ($form->get('signature')->getData()) {
|
||||||
|
$signature = $form->get('signature')->getData();
|
||||||
|
$user->setSignature($signature);
|
||||||
|
}
|
||||||
|
|
||||||
$firstPassword = $form->get('password')['first']->getData();
|
$firstPassword = $form->get('password')['first']->getData();
|
||||||
$secondPassword = $form->get('password')['second']->getData();
|
$secondPassword = $form->get('password')['second']->getData();
|
||||||
|
|
||||||
@ -136,7 +165,7 @@ class DefaultController extends AbstractController
|
|||||||
$plainPassword
|
$plainPassword
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
$user->setPasswordChanged(new DateTime())
|
$user->setPasswordChanged(new DateTime('now', new DateTimeZone($_ENV['COMPANY_TIMEZONE'])));
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($form['imageName']->getData()) {
|
if ($form['imageName']->getData()) {
|
||||||
@ -158,6 +187,16 @@ class DefaultController extends AbstractController
|
|||||||
$user->setImageName($newFilename);
|
$user->setImageName($newFilename);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($form['personalPhone']->getData()) {
|
||||||
|
$phone = Libs::Phone($form['personalPhone']->getData());
|
||||||
|
$user->setPersonalPhone($phone);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($form['workPhone']->getData()) {
|
||||||
|
$phone = Libs::Phone($form['workPhone']->getData());
|
||||||
|
$user->setWorkPhone($phone);
|
||||||
|
}
|
||||||
|
|
||||||
$this->entityManager->persist($user);
|
$this->entityManager->persist($user);
|
||||||
$this->entityManager->flush();
|
$this->entityManager->flush();
|
||||||
|
|
||||||
@ -174,18 +213,25 @@ class DefaultController extends AbstractController
|
|||||||
'breadcrumbs' => [
|
'breadcrumbs' => [
|
||||||
new Breadcrumb('', 'Profile')
|
new Breadcrumb('', 'Profile')
|
||||||
],
|
],
|
||||||
'notifications' => $this->msgs,
|
'notifications' => Libs::getMessages($user, $this->entityManager),
|
||||||
'notificationCount' => $this->notificationCount,
|
|
||||||
'currentUser' => $user,
|
'currentUser' => $user,
|
||||||
|
'signaturePresent' => ($user->getSignature() ? true : false),
|
||||||
|
'signature' => $user->getSignature(),
|
||||||
'form' => $form->createView(),
|
'form' => $form->createView(),
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[Route('/uploads/user_images/{imageName}', name: 'app_user_image')]
|
#[Route('/uploads/user_images/{imageName}', name: 'app_user_profile_image')]
|
||||||
public function displayUserImage(string $imageName): Response
|
public function displayUserImage(string $imageName): Response
|
||||||
{
|
{
|
||||||
return new BinaryFileResponse($this->getParameter('kernel.project_dir')."/public/uploads/user_images/{$imageName}");
|
return new BinaryFileResponse("{$this->getParameter('kernel.project_dir')}/public/{$_ENV['USER_IMAGE_PATH']}/{$imageName}");
|
||||||
|
}
|
||||||
|
|
||||||
|
#[Route('/uploads/company_images/{companyLogo}', name: 'app_company_logo')]
|
||||||
|
public function displayCompanyLogo(string $companyLogo): Response
|
||||||
|
{
|
||||||
|
return new BinaryFileResponse("{$this->getParameter('kernel.project_dir')}/public/{$_ENV['COMPANY_IMAGE_PATH']}/{$companyLogo}");
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,12 +1,11 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Controller;
|
namespace App\Controller\System;
|
||||||
|
|
||||||
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;
|
||||||
@ -49,8 +48,6 @@ class MessageController extends AbstractController
|
|||||||
$message->setMessage($data['message']);
|
$message->setMessage($data['message']);
|
||||||
$message->setType(MessageType::GENERAL);
|
$message->setType(MessageType::GENERAL);
|
||||||
|
|
||||||
//dd($message);
|
|
||||||
|
|
||||||
$this->entityManager->persist($message);
|
$this->entityManager->persist($message);
|
||||||
$this->entityManager->flush();
|
$this->entityManager->flush();
|
||||||
|
|
@ -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;
|
@ -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);
|
@ -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;
|
@ -2,12 +2,12 @@
|
|||||||
|
|
||||||
namespace App\DataFixtures;
|
namespace App\DataFixtures;
|
||||||
|
|
||||||
use App\Entity\MemberCase;
|
use App\Entity\Case\MemberCase;;
|
||||||
use App\Entity\ReferralSource;
|
use App\Entity\System\ReferralSource;
|
||||||
use App\Entity\User;
|
use App\Entity\System\User;
|
||||||
use App\Entity\UserCase;
|
use App\Entity\System\UserCase;
|
||||||
use App\Enums\CaseLevel;
|
use App\Enums\Case\CaseLevel;
|
||||||
use App\Enums\County;
|
use App\Enums\System\County;
|
||||||
use Doctrine\Bundle\FixturesBundle\Fixture;
|
use Doctrine\Bundle\FixturesBundle\Fixture;
|
||||||
use Doctrine\Common\DataFixtures\DependentFixtureInterface;
|
use Doctrine\Common\DataFixtures\DependentFixtureInterface;
|
||||||
use Doctrine\Persistence\ObjectManager;
|
use Doctrine\Persistence\ObjectManager;
|
||||||
|
@ -2,12 +2,12 @@
|
|||||||
|
|
||||||
namespace App\DataFixtures;
|
namespace App\DataFixtures;
|
||||||
|
|
||||||
use App\Entity\Member;
|
use App\Entity\Case\Member;
|
||||||
use App\Entity\MemberCase;
|
use App\Entity\Case\MemberCase;;
|
||||||
use App\Enums\GenderType;
|
use App\Enums\System\GenderType;
|
||||||
use App\Enums\RaceType;
|
use App\Enums\Case\RaceType;
|
||||||
use App\Enums\RelationshipType;
|
use App\Enums\Case\RelationshipType;
|
||||||
use App\Enums\State;
|
use App\Enums\System\State;
|
||||||
use Doctrine\Bundle\FixturesBundle\Fixture;
|
use Doctrine\Bundle\FixturesBundle\Fixture;
|
||||||
use Doctrine\Common\DataFixtures\DependentFixtureInterface;
|
use Doctrine\Common\DataFixtures\DependentFixtureInterface;
|
||||||
use Doctrine\Persistence\ObjectManager;
|
use Doctrine\Persistence\ObjectManager;
|
||||||
|
@ -2,15 +2,15 @@
|
|||||||
|
|
||||||
namespace App\DataFixtures;
|
namespace App\DataFixtures;
|
||||||
|
|
||||||
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\VisitNote;
|
use App\Entity\Case\VisitNote;
|
||||||
use App\Enums\NoteLocation;
|
use App\Enums\Case\NoteLocation;
|
||||||
use App\Enums\NoteMethod;
|
use App\Enums\Case\NoteMethod;
|
||||||
use App\Enums\NoteStatus;
|
use App\Enums\Case\NoteStatus;
|
||||||
use App\Enums\ReferralServiceType;
|
use App\Enums\Case\ReferralServiceType;
|
||||||
use App\Enums\VisitQualityLevel;
|
use App\Enums\Case\VisitQualityLevel;
|
||||||
use Doctrine\Bundle\FixturesBundle\Fixture;
|
use Doctrine\Bundle\FixturesBundle\Fixture;
|
||||||
use Doctrine\Common\DataFixtures\DependentFixtureInterface;
|
use Doctrine\Common\DataFixtures\DependentFixtureInterface;
|
||||||
use Doctrine\Persistence\ObjectManager;
|
use Doctrine\Persistence\ObjectManager;
|
||||||
|
@ -2,9 +2,9 @@
|
|||||||
|
|
||||||
namespace App\DataFixtures;
|
namespace App\DataFixtures;
|
||||||
|
|
||||||
use App\Entity\MemberCase;
|
use App\Entity\Case\MemberCase;;
|
||||||
use App\Entity\Referral;
|
use App\Entity\Case\Referral;
|
||||||
use App\Enums\ReferralServiceType;
|
use App\Enums\Case\ReferralServiceType;
|
||||||
use Doctrine\Bundle\FixturesBundle\Fixture;
|
use Doctrine\Bundle\FixturesBundle\Fixture;
|
||||||
use Doctrine\Common\DataFixtures\DependentFixtureInterface;
|
use Doctrine\Common\DataFixtures\DependentFixtureInterface;
|
||||||
use Doctrine\Persistence\ObjectManager;
|
use Doctrine\Persistence\ObjectManager;
|
||||||
|
@ -2,8 +2,8 @@
|
|||||||
|
|
||||||
namespace App\DataFixtures;
|
namespace App\DataFixtures;
|
||||||
|
|
||||||
use App\Entity\ReferralSource;
|
use App\Entity\System\ReferralSource;
|
||||||
use App\Enums\County;
|
use App\Enums\System\County;
|
||||||
use Doctrine\Bundle\FixturesBundle\Fixture;
|
use Doctrine\Bundle\FixturesBundle\Fixture;
|
||||||
use Doctrine\Persistence\ObjectManager;
|
use Doctrine\Persistence\ObjectManager;
|
||||||
use Faker\Factory;
|
use Faker\Factory;
|
||||||
|
@ -2,9 +2,9 @@
|
|||||||
|
|
||||||
namespace App\DataFixtures;
|
namespace App\DataFixtures;
|
||||||
|
|
||||||
use App\Entity\MemberCase;
|
use App\Entity\Case\MemberCase;;
|
||||||
use App\Entity\StaffNote;
|
use App\Entity\Staff\StaffNote;
|
||||||
use App\Enums\ReferralServiceType;
|
use App\Enums\Case\ReferralServiceType;
|
||||||
use DateTime;
|
use DateTime;
|
||||||
use DateTimeZone;
|
use DateTimeZone;
|
||||||
use Doctrine\Bundle\FixturesBundle\Fixture;
|
use Doctrine\Bundle\FixturesBundle\Fixture;
|
||||||
|
@ -2,10 +2,10 @@
|
|||||||
|
|
||||||
namespace App\DataFixtures;
|
namespace App\DataFixtures;
|
||||||
|
|
||||||
use App\Entity\Company;
|
use App\Entity\Company\Company;
|
||||||
use App\Entity\User;
|
use App\Entity\System\User;
|
||||||
use App\Enums\CaseLevel;
|
use App\Enums\Case\CaseLevel;
|
||||||
use App\Enums\RateType;
|
use App\Enums\System\RateType;
|
||||||
use Doctrine\Bundle\FixturesBundle\Fixture;
|
use Doctrine\Bundle\FixturesBundle\Fixture;
|
||||||
use Doctrine\Persistence\ObjectManager;
|
use Doctrine\Persistence\ObjectManager;
|
||||||
use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface;
|
use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface;
|
||||||
@ -47,10 +47,6 @@ class UserFixture extends Fixture
|
|||||||
$user->setName($name)
|
$user->setName($name)
|
||||||
->setUsername($username)
|
->setUsername($username)
|
||||||
->setEmail($username.'@counselingpartnersllc.com')
|
->setEmail($username.'@counselingpartnersllc.com')
|
||||||
->setCaseManager($cm)
|
|
||||||
->setCaseWorker($cw)
|
|
||||||
->setTherapist($t)
|
|
||||||
->setSu($su)
|
|
||||||
->setRoles($roles)
|
->setRoles($roles)
|
||||||
->setRateType($gen->randomElement(RateType::class))
|
->setRateType($gen->randomElement(RateType::class))
|
||||||
->setRate($gen->numberBetween(0, 100))
|
->setRate($gen->numberBetween(0, 100))
|
||||||
|
@ -1,8 +1,10 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Entity;
|
namespace App\Entity\Case;
|
||||||
|
|
||||||
use App\Repository\CaseItineraryRepository;
|
use App\Entity\System\Location;
|
||||||
|
use App\Repository\Case\CaseItineraryRepository;
|
||||||
|
use DateTime;
|
||||||
use DateInterval;
|
use DateInterval;
|
||||||
use Doctrine\DBAL\Types\Types;
|
use Doctrine\DBAL\Types\Types;
|
||||||
use Doctrine\ORM\Mapping as ORM;
|
use Doctrine\ORM\Mapping as ORM;
|
||||||
@ -19,6 +21,9 @@ class CaseItinerary
|
|||||||
#[ORM\CustomIdGenerator(class: 'doctrine.uuid_generator')]
|
#[ORM\CustomIdGenerator(class: 'doctrine.uuid_generator')]
|
||||||
private ?Uuid $id = null;
|
private ?Uuid $id = null;
|
||||||
|
|
||||||
|
#[ORM\Column(type: Types::DATE_MUTABLE)]
|
||||||
|
private ?\DateTimeInterface $date = null;
|
||||||
|
|
||||||
#[ORM\Column(type: Types::TIME_MUTABLE, nullable: true)]
|
#[ORM\Column(type: Types::TIME_MUTABLE, nullable: true)]
|
||||||
private ?\DateTimeInterface $departure = null;
|
private ?\DateTimeInterface $departure = null;
|
||||||
|
|
||||||
@ -26,9 +31,6 @@ class CaseItinerary
|
|||||||
#[ORM\JoinColumn(nullable: false)]
|
#[ORM\JoinColumn(nullable: false)]
|
||||||
private ?Location $originLocation = null;
|
private ?Location $originLocation = null;
|
||||||
|
|
||||||
#[ORM\Column(type: Types::TIME_MUTABLE, nullable: true)]
|
|
||||||
private ?\DateTimeInterface $arrival = null;
|
|
||||||
|
|
||||||
#[ORM\ManyToOne]
|
#[ORM\ManyToOne]
|
||||||
#[ORM\JoinColumn(nullable: false)]
|
#[ORM\JoinColumn(nullable: false)]
|
||||||
private ?Location $destLocation = null;
|
private ?Location $destLocation = null;
|
||||||
@ -43,9 +45,6 @@ class CaseItinerary
|
|||||||
#[ORM\JoinColumn(nullable: false)]
|
#[ORM\JoinColumn(nullable: false)]
|
||||||
private ?MemberCase $memberCase = null;
|
private ?MemberCase $memberCase = null;
|
||||||
|
|
||||||
#[ORM\Column(type: Types::DATE_MUTABLE)]
|
|
||||||
private ?\DateTimeInterface $date = null;
|
|
||||||
|
|
||||||
#[ORM\Column(nullable: true)]
|
#[ORM\Column(nullable: true)]
|
||||||
private ?float $distance = null;
|
private ?float $distance = null;
|
||||||
|
|
||||||
@ -81,18 +80,6 @@ class CaseItinerary
|
|||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getArrival(): ?\DateTimeInterface
|
|
||||||
{
|
|
||||||
return $this->arrival;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function setArrival(?\DateTimeInterface $arrival): static
|
|
||||||
{
|
|
||||||
$this->arrival = $arrival;
|
|
||||||
|
|
||||||
return $this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function getDestLocation(): ?Location
|
public function getDestLocation(): ?Location
|
||||||
{
|
{
|
||||||
return $this->destLocation;
|
return $this->destLocation;
|
||||||
@ -132,7 +119,7 @@ class CaseItinerary
|
|||||||
|
|
||||||
public function calcDuration()
|
public function calcDuration()
|
||||||
{
|
{
|
||||||
$this->duration = $this->departure - $this->arrival;
|
//$this->duration = $this->departure - $this->arrival;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getMemberCase(): ?MemberCase
|
public function getMemberCase(): ?MemberCase
|
||||||
@ -203,10 +190,13 @@ class CaseItinerary
|
|||||||
|
|
||||||
public function destinationInfoWindow(): string
|
public function destinationInfoWindow(): string
|
||||||
{
|
{
|
||||||
|
/** @var DateTime $arrival */
|
||||||
|
$arrival = $this->departure;
|
||||||
|
$arrival->add($this->duration);
|
||||||
return <<<EOL
|
return <<<EOL
|
||||||
{$this->destLocation->getName()}<br/>
|
{$this->destLocation->getName()}<br/>
|
||||||
<a href='http://maps.google.com/?q={$this->destLocation->getLat()},{$this->destLocation->getLon()}'>{$this->destLocation->getFormattedAddress()}</a><br/>
|
<a href='http://maps.google.com/?q={$this->destLocation->getLat()},{$this->destLocation->getLon()}'>{$this->destLocation->getFormattedAddress()}</a><br/>
|
||||||
{$this->arrival->format("g:i a")}
|
{$arrival->format("g:i a")}
|
||||||
EOL;
|
EOL;
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,8 +1,9 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Entity;
|
namespace App\Entity\Case;
|
||||||
|
|
||||||
use App\Repository\CaseLocationRepository;
|
use App\Entity\System\Location;
|
||||||
|
use App\Repository\Case\CaseLocationRepository;
|
||||||
use Doctrine\ORM\Mapping as ORM;
|
use Doctrine\ORM\Mapping as ORM;
|
||||||
use Symfony\Bridge\Doctrine\Types\UuidType;
|
use Symfony\Bridge\Doctrine\Types\UuidType;
|
||||||
use Symfony\Component\Uid\Uuid;
|
use Symfony\Component\Uid\Uuid;
|
@ -1,11 +1,11 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Entity;
|
namespace App\Entity\Case;
|
||||||
|
|
||||||
use App\Enums\GenderType;
|
use App\Enums\System\GenderType;
|
||||||
use App\Enums\RaceType;
|
use App\Enums\Case\RaceType;
|
||||||
use App\Enums\RelationshipType;
|
use App\Enums\Case\RelationshipType;
|
||||||
use App\Repository\MemberRepository;
|
use App\Repository\Case\MemberRepository;
|
||||||
use Doctrine\DBAL\Types\Types;
|
use Doctrine\DBAL\Types\Types;
|
||||||
use Doctrine\ORM\Mapping as ORM;
|
use Doctrine\ORM\Mapping as ORM;
|
||||||
use Symfony\Bridge\Doctrine\Types\UuidType;
|
use Symfony\Bridge\Doctrine\Types\UuidType;
|
||||||
@ -103,11 +103,19 @@ class Member
|
|||||||
#[ORM\Column]
|
#[ORM\Column]
|
||||||
private ?bool $dcsApproved = null;
|
private ?bool $dcsApproved = null;
|
||||||
|
|
||||||
|
private ?bool $checked = false;
|
||||||
|
|
||||||
public function getId(): ?Uuid
|
public function getId(): ?Uuid
|
||||||
{
|
{
|
||||||
return $this->id;
|
return $this->id;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function setId(?Uuid $id): static
|
||||||
|
{
|
||||||
|
$this->id = $id;
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
public function getCaseId(): ?MemberCase
|
public function getCaseId(): ?MemberCase
|
||||||
{
|
{
|
||||||
return $this->memberCase;
|
return $this->memberCase;
|
||||||
@ -451,4 +459,16 @@ class Member
|
|||||||
|
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function isChecked(): bool
|
||||||
|
{
|
||||||
|
return $this->checked;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setChecked(bool $checked): static
|
||||||
|
{
|
||||||
|
$this->checked = $checked;
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
}
|
}
|
@ -1,10 +1,14 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Entity;
|
namespace App\Entity\Case;
|
||||||
|
|
||||||
use App\Enums\CaseLevel;
|
use App\Entity\Staff\StaffNote;
|
||||||
use App\Enums\County;
|
use App\Entity\System\ReferralSource;
|
||||||
use App\Repository\MemberCaseRepository;
|
use App\Entity\System\UserCase;
|
||||||
|
use App\Enums\Case\CaseLevel;
|
||||||
|
use App\Enums\System\County;
|
||||||
|
use App\Enums\Case\ReferralType;
|
||||||
|
use App\Repository\Case\MemberCaseRepository;
|
||||||
use Doctrine\Common\Collections\ArrayCollection;
|
use Doctrine\Common\Collections\ArrayCollection;
|
||||||
use Doctrine\Common\Collections\Collection;
|
use Doctrine\Common\Collections\Collection;
|
||||||
use Doctrine\DBAL\Types\Types;
|
use Doctrine\DBAL\Types\Types;
|
||||||
@ -31,7 +35,7 @@ class MemberCase
|
|||||||
private ?string $lastName = null;
|
private ?string $lastName = null;
|
||||||
|
|
||||||
#[ORM\Column(length: 45)]
|
#[ORM\Column(length: 45)]
|
||||||
private ?string $referralType = null;
|
private ?ReferralType $referralType = null;
|
||||||
|
|
||||||
#[ORM\ManyToOne]
|
#[ORM\ManyToOne]
|
||||||
#[ORM\JoinColumn(nullable: false)]
|
#[ORM\JoinColumn(nullable: false)]
|
||||||
@ -109,7 +113,8 @@ class MemberCase
|
|||||||
#[ORM\OneToMany(targetEntity: StaffNote::class, mappedBy: 'memberCase')]
|
#[ORM\OneToMany(targetEntity: StaffNote::class, mappedBy: 'memberCase')]
|
||||||
private Collection $staffNotes;
|
private Collection $staffNotes;
|
||||||
|
|
||||||
private array $docs;
|
#[ORM\Column]
|
||||||
|
private ?int $rate = null;
|
||||||
|
|
||||||
public function __construct()
|
public function __construct()
|
||||||
{
|
{
|
||||||
@ -166,12 +171,12 @@ class MemberCase
|
|||||||
return "{$this->lastName}, {$this->firstName}";
|
return "{$this->lastName}, {$this->firstName}";
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getReferralType(): ?string
|
public function getReferralType(): ?ReferralType
|
||||||
{
|
{
|
||||||
return $this->referralType;
|
return $this->referralType;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function setReferralType(string $referralType): static
|
public function setReferralType(ReferralType $referralType): static
|
||||||
{
|
{
|
||||||
$this->referralType = $referralType;
|
$this->referralType = $referralType;
|
||||||
|
|
||||||
@ -508,8 +513,21 @@ class MemberCase
|
|||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getDocs(): array
|
public function emptyStaffNotes(): static
|
||||||
{
|
{
|
||||||
return $this->docs;
|
$this->staffNotes->clear();
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getRate(): ?int
|
||||||
|
{
|
||||||
|
return $this->rate;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setRate(int $rate): static
|
||||||
|
{
|
||||||
|
$this->rate = $rate;
|
||||||
|
|
||||||
|
return $this;
|
||||||
}
|
}
|
||||||
}
|
}
|
149
src/Entity/Case/MemberDocument.php
Normal file
149
src/Entity/Case/MemberDocument.php
Normal file
@ -0,0 +1,149 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Entity\Case;
|
||||||
|
|
||||||
|
use App\Entity\Company\CompanyDocument;
|
||||||
|
use App\Entity\System\User;
|
||||||
|
use App\Repository\Case\MemberDocumentRepository;
|
||||||
|
use Doctrine\DBAL\Types\Types;
|
||||||
|
use Doctrine\ORM\Mapping as ORM;
|
||||||
|
use Symfony\Bridge\Doctrine\Types\UuidType;
|
||||||
|
use Symfony\Component\Uid\Uuid;
|
||||||
|
|
||||||
|
#[ORM\Entity(repositoryClass: MemberDocumentRepository::class)]
|
||||||
|
class MemberDocument
|
||||||
|
{
|
||||||
|
#[ORM\Id]
|
||||||
|
#[ORM\Column(type: UuidType::NAME, unique: true)]
|
||||||
|
#[ORM\GeneratedValue(strategy: 'CUSTOM')]
|
||||||
|
#[ORM\CustomIdGenerator(class: 'doctrine.uuid_generator')]
|
||||||
|
private ?Uuid $id = null;
|
||||||
|
|
||||||
|
#[ORM\ManyToOne]
|
||||||
|
#[ORM\JoinColumn(nullable: false)]
|
||||||
|
private ?Member $client = null;
|
||||||
|
|
||||||
|
#[ORM\ManyToOne]
|
||||||
|
#[ORM\JoinColumn(nullable: false)]
|
||||||
|
private ?User $caseWorker = null;
|
||||||
|
|
||||||
|
#[ORM\Column(type: Types::DATETIME_MUTABLE, nullable: true)]
|
||||||
|
private ?\DateTimeInterface $clientSigned = null;
|
||||||
|
|
||||||
|
#[ORM\Column(type: Types::DATETIME_MUTABLE, nullable: true)]
|
||||||
|
private ?\DateTimeInterface $workerSigned = null;
|
||||||
|
|
||||||
|
#[ORM\ManyToOne]
|
||||||
|
#[ORM\JoinColumn(nullable: false)]
|
||||||
|
private ?CompanyDocument $document = null;
|
||||||
|
|
||||||
|
#[ORM\Column(nullable: true)]
|
||||||
|
private ?array $clientSignature = null;
|
||||||
|
|
||||||
|
#[ORM\Column(nullable: true)]
|
||||||
|
private ?array $workerSignature = null;
|
||||||
|
|
||||||
|
#[ORM\Column(type: Types::TEXT, nullable: true)]
|
||||||
|
private ?string $docData = null;
|
||||||
|
|
||||||
|
public function getId(): ?Uuid
|
||||||
|
{
|
||||||
|
return $this->id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getClient(): ?Member
|
||||||
|
{
|
||||||
|
return $this->client;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setClient(?Member $client): static
|
||||||
|
{
|
||||||
|
$this->client = $client;
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getCaseWorker(): ?User
|
||||||
|
{
|
||||||
|
return $this->caseWorker;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setCaseWorker(?User $caseWorker): static
|
||||||
|
{
|
||||||
|
$this->caseWorker = $caseWorker;
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getClientSigned(): ?\DateTimeInterface
|
||||||
|
{
|
||||||
|
return $this->clientSigned;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setClientSigned(?\DateTimeInterface $clientSigned): static
|
||||||
|
{
|
||||||
|
$this->clientSigned = $clientSigned;
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getWorkerSigned(): ?\DateTimeInterface
|
||||||
|
{
|
||||||
|
return $this->workerSigned;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setWorkerSigned(?\DateTimeInterface $workerSigned): static
|
||||||
|
{
|
||||||
|
$this->workerSigned = $workerSigned;
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getDocument(): ?CompanyDocument
|
||||||
|
{
|
||||||
|
return $this->document;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setDocument(?CompanyDocument $document): static
|
||||||
|
{
|
||||||
|
$this->document = $document;
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getClientSignature(): ?array
|
||||||
|
{
|
||||||
|
return $this->clientSignature;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setClientSignature(?array $clientSignature): static
|
||||||
|
{
|
||||||
|
$this->clientSignature = $clientSignature;
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getWorkerSignature(): ?array
|
||||||
|
{
|
||||||
|
return $this->workerSignature;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setWorkerSignature(?array $workerSignature): static
|
||||||
|
{
|
||||||
|
$this->workerSignature = $workerSignature;
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getDocData(): ?string
|
||||||
|
{
|
||||||
|
return $this->docData;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setDocData(?string $docData): static
|
||||||
|
{
|
||||||
|
$this->docData = $docData;
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
}
|
115
src/Entity/Case/MonthlyCaseNote.php
Normal file
115
src/Entity/Case/MonthlyCaseNote.php
Normal file
@ -0,0 +1,115 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Entity\Case;
|
||||||
|
|
||||||
|
use App\Repository\Case\MonthlyCaseNoteRepository;
|
||||||
|
use Doctrine\DBAL\Types\Types;
|
||||||
|
use Doctrine\ORM\Mapping as ORM;
|
||||||
|
use Symfony\Bridge\Doctrine\Types\UuidType;
|
||||||
|
use Symfony\Component\Uid\Uuid;
|
||||||
|
|
||||||
|
#[ORM\Entity(repositoryClass: MonthlyCaseNoteRepository::class)]
|
||||||
|
class MonthlyCaseNote
|
||||||
|
{
|
||||||
|
#[ORM\Id]
|
||||||
|
#[ORM\Column(type: UuidType::NAME, unique: true)]
|
||||||
|
#[ORM\GeneratedValue(strategy: 'CUSTOM')]
|
||||||
|
#[ORM\CustomIdGenerator(class: 'doctrine.uuid_generator')]
|
||||||
|
private ?Uuid $id = null;
|
||||||
|
|
||||||
|
#[ORM\Column(type: Types::TEXT, nullable: true)]
|
||||||
|
private ?string $reason = null;
|
||||||
|
|
||||||
|
#[ORM\Column(type: Types::TEXT, nullable: true)]
|
||||||
|
private ?string $familyStrength = null;
|
||||||
|
|
||||||
|
#[ORM\Column(type: Types::TEXT, nullable: true)]
|
||||||
|
private ?string $recAndProgress = null;
|
||||||
|
|
||||||
|
#[ORM\ManyToOne(inversedBy: 'monthlyCaseNotes')]
|
||||||
|
#[ORM\JoinColumn(nullable: false)]
|
||||||
|
private ?MemberCase $memberCase = null;
|
||||||
|
|
||||||
|
#[ORM\Column(type: Types::DATE_MUTABLE)]
|
||||||
|
private ?\DateTimeInterface $date = null;
|
||||||
|
|
||||||
|
#[ORM\Column(type: Types::DATE_MUTABLE)]
|
||||||
|
private ?\DateTimeInterface $nextVisit = null;
|
||||||
|
|
||||||
|
public function getId(): ?Uuid
|
||||||
|
{
|
||||||
|
return $this->id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getReason(): ?string
|
||||||
|
{
|
||||||
|
return $this->reason;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setReason(?string $reason): static
|
||||||
|
{
|
||||||
|
$this->reason = $reason;
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getFamilyStrength(): ?string
|
||||||
|
{
|
||||||
|
return $this->familyStrength;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setFamilyStrength(?string $familyStrength): static
|
||||||
|
{
|
||||||
|
$this->familyStrength = $familyStrength;
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getRecAndProgress(): ?string
|
||||||
|
{
|
||||||
|
return $this->recAndProgress;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setRecAndProgress(?string $recAndProgress): static
|
||||||
|
{
|
||||||
|
$this->recAndProgress = $recAndProgress;
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getMemberCase(): ?MemberCase
|
||||||
|
{
|
||||||
|
return $this->memberCase;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setMemberCase(?MemberCase $memberCase): static
|
||||||
|
{
|
||||||
|
$this->memberCase = $memberCase;
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getDate(): ?\DateTimeInterface
|
||||||
|
{
|
||||||
|
return $this->date;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setDate(\DateTimeInterface $date): static
|
||||||
|
{
|
||||||
|
$this->date = $date;
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getNextVisit(): ?\DateTimeInterface
|
||||||
|
{
|
||||||
|
return $this->nextVisit;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setNextVisit(\DateTimeInterface $nextVisit): static
|
||||||
|
{
|
||||||
|
$this->nextVisit = $nextVisit;
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
}
|
@ -1,11 +1,11 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Entity;
|
namespace App\Entity\Case;
|
||||||
|
|
||||||
use App\Enums\NoteLocation;
|
use App\Enums\Case\NoteLocation;
|
||||||
use App\Enums\NoteMethod;
|
use App\Enums\Case\NoteMethod;
|
||||||
use App\Enums\NoteStatus;
|
use App\Enums\Case\NoteStatus;
|
||||||
use App\Repository\NoteRepository;
|
use App\Repository\Case\NoteRepository;
|
||||||
use Doctrine\DBAL\Types\Types;
|
use Doctrine\DBAL\Types\Types;
|
||||||
use Doctrine\ORM\Mapping as ORM;
|
use Doctrine\ORM\Mapping as ORM;
|
||||||
use Doctrine\ORM\Mapping\MappedSuperclass;
|
use Doctrine\ORM\Mapping\MappedSuperclass;
|
@ -1,12 +1,10 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Entity;
|
namespace App\Entity\Case;
|
||||||
|
|
||||||
use App\Enums\DischargeReason;
|
use App\Enums\Case\DischargeReason;
|
||||||
use App\Enums\ReferralServiceType;
|
use App\Enums\Case\ReferralServiceType;
|
||||||
use App\Repository\ReferralRepository;
|
use App\Repository\Case\ReferralRepository;
|
||||||
use Doctrine\Common\Collections\ArrayCollection;
|
|
||||||
use Doctrine\Common\Collections\Collection;
|
|
||||||
use Doctrine\DBAL\Types\Types;
|
use Doctrine\DBAL\Types\Types;
|
||||||
use Doctrine\ORM\Mapping as ORM;
|
use Doctrine\ORM\Mapping as ORM;
|
||||||
use Symfony\Bridge\Doctrine\Types\UuidType;
|
use Symfony\Bridge\Doctrine\Types\UuidType;
|
@ -1,9 +1,9 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Entity;
|
namespace App\Entity\Case;
|
||||||
|
|
||||||
use App\Enums\ReferralServiceType;
|
use App\Enums\Case\ReferralServiceType;
|
||||||
use App\Repository\StandardNoteRepository;
|
use App\Repository\Case\StandardNoteRepository;
|
||||||
use Doctrine\DBAL\Types\Types;
|
use Doctrine\DBAL\Types\Types;
|
||||||
use Doctrine\ORM\Mapping as ORM;
|
use Doctrine\ORM\Mapping as ORM;
|
||||||
use JsonSerializable;
|
use JsonSerializable;
|
||||||
@ -30,8 +30,8 @@ class StandardNote extends Note implements JsonSerializable
|
|||||||
{
|
{
|
||||||
$members = [];
|
$members = [];
|
||||||
foreach ($this->getMembers() as $member) {
|
foreach ($this->getMembers() as $member) {
|
||||||
/** @var Member $member */
|
/** @var StandardNoteMember $member */
|
||||||
$members[] = $member->getName();
|
$members[] = $member->getPerson()->getName();
|
||||||
}
|
}
|
||||||
return [
|
return [
|
||||||
'id' => $this->getId()->toString(),
|
'id' => $this->getId()->toString(),
|
@ -1,8 +1,8 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Entity;
|
namespace App\Entity\Case;
|
||||||
|
|
||||||
use App\Repository\StandardNoteMemberRepository;
|
use App\Repository\Case\StandardNoteMemberRepository;
|
||||||
use Doctrine\ORM\Mapping as ORM;
|
use Doctrine\ORM\Mapping as ORM;
|
||||||
use Symfony\Bridge\Doctrine\Types\UuidType;
|
use Symfony\Bridge\Doctrine\Types\UuidType;
|
||||||
use Symfony\Component\Uid\Uuid;
|
use Symfony\Component\Uid\Uuid;
|
@ -1,10 +1,10 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Entity;
|
namespace App\Entity\Case;
|
||||||
|
|
||||||
use App\Enums\ReferralServiceType;
|
use App\Enums\Case\ReferralServiceType;
|
||||||
use App\Enums\VisitQualityLevel;
|
use App\Enums\Case\VisitQualityLevel;
|
||||||
use App\Repository\VisitNoteRepository;
|
use App\Repository\Case\VisitNoteRepository;
|
||||||
use Doctrine\DBAL\Types\Types;
|
use Doctrine\DBAL\Types\Types;
|
||||||
use Doctrine\ORM\Mapping as ORM;
|
use Doctrine\ORM\Mapping as ORM;
|
||||||
use JsonSerializable;
|
use JsonSerializable;
|
||||||
@ -166,8 +166,8 @@ class VisitNote extends Note implements JsonSerializable
|
|||||||
{
|
{
|
||||||
$members = [];
|
$members = [];
|
||||||
foreach ($this->getMembers() as $member) {
|
foreach ($this->getMembers() as $member) {
|
||||||
/** @var Member $member */
|
/** @var VisitNoteMembers $member */
|
||||||
$members[] = $member->getName();
|
$members[] = $member->getPerson()->getName();
|
||||||
}
|
}
|
||||||
return [
|
return [
|
||||||
'id' => $this->getId()->toString(),
|
'id' => $this->getId()->toString(),
|
@ -1,8 +1,8 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Entity;
|
namespace App\Entity\Case;
|
||||||
|
|
||||||
use App\Repository\VisitNoteMembersRepository;
|
use App\Repository\Case\VisitNoteMembersRepository;
|
||||||
use Doctrine\ORM\Mapping as ORM;
|
use Doctrine\ORM\Mapping as ORM;
|
||||||
use Symfony\Bridge\Doctrine\Types\UuidType;
|
use Symfony\Bridge\Doctrine\Types\UuidType;
|
||||||
use Symfony\Component\Uid\Uuid;
|
use Symfony\Component\Uid\Uuid;
|
@ -1,8 +1,9 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Entity;
|
namespace App\Entity\Company;
|
||||||
|
|
||||||
use App\Repository\CompanyRepository;
|
use App\Entity\System\User;
|
||||||
|
use App\Repository\Company\CompanyRepository;
|
||||||
use Doctrine\Common\Collections\ArrayCollection;
|
use Doctrine\Common\Collections\ArrayCollection;
|
||||||
use Doctrine\Common\Collections\Collection;
|
use Doctrine\Common\Collections\Collection;
|
||||||
use Doctrine\DBAL\Types\Types;
|
use Doctrine\DBAL\Types\Types;
|
||||||
@ -51,6 +52,9 @@ class Company
|
|||||||
#[ORM\Column(type: Types::STRING, length: 255, nullable: true)]
|
#[ORM\Column(type: Types::STRING, length: 255, nullable: true)]
|
||||||
private ?string $companyLogo = null;
|
private ?string $companyLogo = null;
|
||||||
|
|
||||||
|
#[ORM\Column(length: 64)]
|
||||||
|
private ?string $vendorId = null;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var Collection<int, User>
|
* @var Collection<int, User>
|
||||||
*/
|
*/
|
||||||
@ -233,6 +237,18 @@ class Company
|
|||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function getVendorId(): ?string
|
||||||
|
{
|
||||||
|
return $this->vendorId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setVendorId(string $vendorId): static
|
||||||
|
{
|
||||||
|
$this->vendorId = $vendorId;
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
public function __toString(): string
|
public function __toString(): string
|
||||||
{
|
{
|
||||||
$url = ($this->url ? "<br/><a href='$this->url' target='_blank'>$this->url</a>" : '');
|
$url = ($this->url ? "<br/><a href='$this->url' target='_blank'>$this->url</a>" : '');
|
139
src/Entity/Company/CompanyDocument.php
Normal file
139
src/Entity/Company/CompanyDocument.php
Normal file
@ -0,0 +1,139 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Entity\Company;
|
||||||
|
|
||||||
|
use App\Enums\Company\DocumentExtras;
|
||||||
|
use App\Repository\Company\CompanyDocumentRepository;
|
||||||
|
use Doctrine\DBAL\Types\Types;
|
||||||
|
use Doctrine\ORM\Mapping as ORM;
|
||||||
|
use Symfony\Bridge\Doctrine\Types\UuidType;
|
||||||
|
use Symfony\Component\Uid\Uuid;
|
||||||
|
|
||||||
|
#[ORM\Entity(repositoryClass: CompanyDocumentRepository::class)]
|
||||||
|
class CompanyDocument
|
||||||
|
{
|
||||||
|
#[ORM\Id]
|
||||||
|
#[ORM\Column(type: UuidType::NAME, unique: true)]
|
||||||
|
#[ORM\GeneratedValue(strategy: 'CUSTOM')]
|
||||||
|
#[ORM\CustomIdGenerator(class: 'doctrine.uuid_generator')]
|
||||||
|
private ?Uuid $id = null;
|
||||||
|
|
||||||
|
#[ORM\ManyToOne]
|
||||||
|
#[ORM\JoinColumn(nullable: false)]
|
||||||
|
private ?Company $company = null;
|
||||||
|
|
||||||
|
#[ORM\Column(length: 255)]
|
||||||
|
private ?string $title = null;
|
||||||
|
|
||||||
|
#[ORM\Column(type: Types::TEXT, nullable: true)]
|
||||||
|
private ?string $text = null;
|
||||||
|
|
||||||
|
#[ORM\Column(type: Types::DATETIME_MUTABLE)]
|
||||||
|
private ?\DateTimeInterface $updated = null;
|
||||||
|
|
||||||
|
#[ORM\Column(type: Types::JSON, enumType: DocumentExtras::class, nullable: true)]
|
||||||
|
private array $extras = [];
|
||||||
|
|
||||||
|
private bool $selected = false;
|
||||||
|
|
||||||
|
public function getId(): ?Uuid
|
||||||
|
{
|
||||||
|
return $this->id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getCompany(): ?Company
|
||||||
|
{
|
||||||
|
return $this->company;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setCompany(?Company $company): static
|
||||||
|
{
|
||||||
|
$this->company = $company;
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getTitle(): ?string
|
||||||
|
{
|
||||||
|
return $this->title;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setTitle(string $title): static
|
||||||
|
{
|
||||||
|
$this->title = $title;
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getText(): ?string
|
||||||
|
{
|
||||||
|
return $this->text;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setText(?string $text): static
|
||||||
|
{
|
||||||
|
$this->text = $text;
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getUpdated(): ?\DateTimeInterface
|
||||||
|
{
|
||||||
|
return $this->updated;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setUpdated(\DateTimeInterface $updated): static
|
||||||
|
{
|
||||||
|
$this->updated = $updated;
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function isSelected(): bool
|
||||||
|
{
|
||||||
|
return $this->selected;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setSelected(): static
|
||||||
|
{
|
||||||
|
$this->selected = true;
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getExtras(): array
|
||||||
|
{
|
||||||
|
return $this->extras;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setExtras(array $extras): static
|
||||||
|
{
|
||||||
|
$this->extras = $extras;
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function inExtras(DocumentExtras $field): bool
|
||||||
|
{
|
||||||
|
return in_array($field, $this->extras);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function renderHtml(): string
|
||||||
|
{
|
||||||
|
$text = $this->text;
|
||||||
|
if ($this->inExtras(DocumentExtras::EMAIL)) {
|
||||||
|
$text = str_replace('{{ email }}', "<input type='email' name='email' id='email' value='{{ doc.client.email }}'/>", $text);
|
||||||
|
$text = str_replace('{{ checkbox|email }}', "<input type='checkbox' name='emailClient' id='emailClient' value='1'/>", $text);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($this->inExtras(DocumentExtras::PHONE)) {
|
||||||
|
$text = str_replace('{{ phone }}', "<input type='tel' name='phone' id='phone' value='{{ doc.client.phone }}'/>", $text);
|
||||||
|
$text = str_replace('{{ checkbox|phone }}', "<input type='checkbox' name='callClient' id='callClient' value='1'/>", $text);
|
||||||
|
$text = str_replace('{{ checkbox|text }}', "<input type='checkbox' name='textClient' id='textClient' value='1'/>", $text);
|
||||||
|
}
|
||||||
|
|
||||||
|
return <<<HTML
|
||||||
|
$text
|
||||||
|
HTML;
|
||||||
|
}
|
||||||
|
}
|
@ -1,12 +1,13 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Entity;
|
namespace App\Entity\Resources;
|
||||||
|
|
||||||
use App\Enums\County;
|
use App\Entity\System\Location;
|
||||||
use App\Enums\ResourceType;
|
use App\Enums\System\County;
|
||||||
use App\Enums\State;
|
use App\Enums\Case\ResourceType;
|
||||||
|
use App\Enums\System\State;
|
||||||
use App\Libs\Libs;
|
use App\Libs\Libs;
|
||||||
use App\Repository\CommunityResourceRepository;
|
use App\Repository\Resources\CommunityResourceRepository;
|
||||||
use DateTime;
|
use DateTime;
|
||||||
use DateTimeZone;
|
use DateTimeZone;
|
||||||
use Doctrine\DBAL\Types\Types;
|
use Doctrine\DBAL\Types\Types;
|
||||||
@ -683,4 +684,19 @@ class CommunityResource
|
|||||||
{$this->getContactCard()}
|
{$this->getContactCard()}
|
||||||
EOL;
|
EOL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function toLocation(): Location
|
||||||
|
{
|
||||||
|
$loc = new Location();
|
||||||
|
$loc->setName($this->name)
|
||||||
|
->setAddress($this->address)
|
||||||
|
->setCity($this->city)
|
||||||
|
->setState($this->state)
|
||||||
|
->setZip($this->zip)
|
||||||
|
->setLat($this->lat)
|
||||||
|
->setLon($this->lon)
|
||||||
|
;
|
||||||
|
|
||||||
|
return $loc;
|
||||||
|
}
|
||||||
}
|
}
|
@ -1,9 +1,10 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Entity;
|
namespace App\Entity\Staff;
|
||||||
|
|
||||||
use App\Enums\ReferralServiceType;
|
use App\Entity\Case\MemberCase;
|
||||||
use App\Repository\StaffNoteRepository;
|
use App\Enums\Case\ReferralServiceType;
|
||||||
|
use App\Repository\Staff\StaffNoteRepository;
|
||||||
use Doctrine\DBAL\Types\Types;
|
use Doctrine\DBAL\Types\Types;
|
||||||
use Doctrine\ORM\Mapping as ORM;
|
use Doctrine\ORM\Mapping as ORM;
|
||||||
|
|
@ -1,8 +1,9 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Entity;
|
namespace App\Entity\Staff;
|
||||||
|
|
||||||
use App\Repository\SupervisionRepository;
|
use App\Entity\System\User;
|
||||||
|
use App\Repository\Staff\SupervisionRepository;
|
||||||
use Doctrine\ORM\Mapping as ORM;
|
use Doctrine\ORM\Mapping as ORM;
|
||||||
use Symfony\Bridge\Doctrine\Types\UuidType;
|
use Symfony\Bridge\Doctrine\Types\UuidType;
|
||||||
use Symfony\Component\Uid\Uuid;
|
use Symfony\Component\Uid\Uuid;
|
@ -1,9 +1,9 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Entity;
|
namespace App\Entity\System;
|
||||||
|
|
||||||
use App\Enums\State;
|
use App\Enums\System\State;
|
||||||
use App\Repository\LocationRepository;
|
use App\Repository\System\LocationRepository;
|
||||||
use Doctrine\DBAL\Types\Types;
|
use Doctrine\DBAL\Types\Types;
|
||||||
use Doctrine\ORM\Mapping as ORM;
|
use Doctrine\ORM\Mapping as ORM;
|
||||||
use Symfony\Bridge\Doctrine\Types\UuidType;
|
use Symfony\Bridge\Doctrine\Types\UuidType;
|
@ -1,9 +1,9 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Entity;
|
namespace App\Entity\System;
|
||||||
|
|
||||||
use App\Enums\MessageType;
|
use App\Enums\System\MessageType;
|
||||||
use App\Repository\MessagesRepository;
|
use App\Repository\System\MessagesRepository;
|
||||||
use Doctrine\DBAL\Types\Types;
|
use Doctrine\DBAL\Types\Types;
|
||||||
use Doctrine\ORM\Mapping as ORM;
|
use Doctrine\ORM\Mapping as ORM;
|
||||||
use Symfony\Bridge\Doctrine\Types\UuidType;
|
use Symfony\Bridge\Doctrine\Types\UuidType;
|
@ -1,8 +1,8 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Entity;
|
namespace App\Entity\System;
|
||||||
|
|
||||||
use App\Repository\ReferralSourceRepository;
|
use App\Repository\System\ReferralSourceRepository;
|
||||||
use Doctrine\ORM\Mapping as ORM;
|
use Doctrine\ORM\Mapping as ORM;
|
||||||
use Symfony\Bridge\Doctrine\Types\UuidType;
|
use Symfony\Bridge\Doctrine\Types\UuidType;
|
||||||
use Symfony\Component\Uid\Uuid;
|
use Symfony\Component\Uid\Uuid;
|
86
src/Entity/System/Subscription.php
Normal file
86
src/Entity/System/Subscription.php
Normal file
@ -0,0 +1,86 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Entity\System;
|
||||||
|
|
||||||
|
use App\Enums\System\UserSubscriptions;
|
||||||
|
use App\Repository\System\SubscriptionRepository;
|
||||||
|
use Doctrine\DBAL\Types\Types;
|
||||||
|
use Doctrine\ORM\Mapping as ORM;
|
||||||
|
use Symfony\Bridge\Doctrine\Types\UuidType;
|
||||||
|
use Symfony\Component\Uid\Uuid;
|
||||||
|
|
||||||
|
#[ORM\Entity(repositoryClass: SubscriptionRepository::class)]
|
||||||
|
class Subscription
|
||||||
|
{
|
||||||
|
#[ORM\Id]
|
||||||
|
#[ORM\Column(type: UuidType::NAME, unique: true)]
|
||||||
|
#[ORM\GeneratedValue(strategy: 'CUSTOM')]
|
||||||
|
#[ORM\CustomIdGenerator(class: 'doctrine.uuid_generator')]
|
||||||
|
private ?Uuid $id = null;
|
||||||
|
|
||||||
|
#[ORM\ManyToOne(inversedBy: 'subscriptions')]
|
||||||
|
#[ORM\JoinColumn(nullable: false)]
|
||||||
|
private ?User $user = null;
|
||||||
|
|
||||||
|
#[ORM\Column]
|
||||||
|
private ?bool $active = null;
|
||||||
|
|
||||||
|
#[ORM\Column(type: Types::DATE_MUTABLE)]
|
||||||
|
private ?\DateTimeInterface $expiration = null;
|
||||||
|
|
||||||
|
#[ORM\Column(enumType: UserSubscriptions::class)]
|
||||||
|
private ?UserSubscriptions $level = null;
|
||||||
|
|
||||||
|
public function getId(): ?Uuid
|
||||||
|
{
|
||||||
|
return $this->id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getUser(): ?User
|
||||||
|
{
|
||||||
|
return $this->user;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setUser(?User $user): static
|
||||||
|
{
|
||||||
|
$this->user = $user;
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function isActive(): ?bool
|
||||||
|
{
|
||||||
|
return $this->active;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setActive(bool $active): static
|
||||||
|
{
|
||||||
|
$this->active = $active;
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getExpiration(): ?\DateTimeInterface
|
||||||
|
{
|
||||||
|
return $this->expiration;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setExpiration(\DateTimeInterface $expiration): static
|
||||||
|
{
|
||||||
|
$this->expiration = $expiration;
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getLevel(): ?UserSubscriptions
|
||||||
|
{
|
||||||
|
return $this->level;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setLevel(UserSubscriptions $level): static
|
||||||
|
{
|
||||||
|
$this->level = $level;
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
}
|
@ -1,10 +1,11 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Entity;
|
namespace App\Entity\System;
|
||||||
|
|
||||||
use App\Repository\UserRepository;
|
use App\Entity\Company\Company;
|
||||||
use App\Enums\RateType;
|
use App\Repository\System\UserRepository;
|
||||||
use App\Enums\CaseLevel;
|
use App\Enums\System\RateType;
|
||||||
|
use App\Enums\Case\CaseLevel;
|
||||||
use Doctrine\Common\Collections\ArrayCollection;
|
use Doctrine\Common\Collections\ArrayCollection;
|
||||||
use Doctrine\Common\Collections\Collection;
|
use Doctrine\Common\Collections\Collection;
|
||||||
use Doctrine\DBAL\Types\Types;
|
use Doctrine\DBAL\Types\Types;
|
||||||
@ -63,20 +64,6 @@ class User implements UserInterface, PasswordAuthenticatedUserInterface
|
|||||||
#[ORM\Column(enumType: CaseLevel::class)]
|
#[ORM\Column(enumType: CaseLevel::class)]
|
||||||
private ?CaseLevel $level = null;
|
private ?CaseLevel $level = null;
|
||||||
|
|
||||||
private ?User $supervisor = null;
|
|
||||||
|
|
||||||
#[ORM\Column]
|
|
||||||
private ?bool $caseWorker = null;
|
|
||||||
|
|
||||||
#[ORM\Column]
|
|
||||||
private ?bool $caseManager = null;
|
|
||||||
|
|
||||||
#[ORM\Column]
|
|
||||||
private ?bool $therapist = null;
|
|
||||||
|
|
||||||
#[ORM\Column]
|
|
||||||
private ?bool $su = null;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var Collection<int, UserCase>
|
* @var Collection<int, UserCase>
|
||||||
*/
|
*/
|
||||||
@ -101,9 +88,24 @@ class User implements UserInterface, PasswordAuthenticatedUserInterface
|
|||||||
#[ORM\Column(type: Types::TEXT, nullable: true)]
|
#[ORM\Column(type: Types::TEXT, nullable: true)]
|
||||||
private ?string $signature = null;
|
private ?string $signature = null;
|
||||||
|
|
||||||
|
#[ORM\Column]
|
||||||
|
private ?bool $active = null;
|
||||||
|
|
||||||
|
#[ORM\Column(type: Types::DATETIME_MUTABLE, nullable: true)]
|
||||||
|
private ?\DateTimeInterface $lastLogin = null;
|
||||||
|
|
||||||
|
private ?User $supervisor = null;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var Collection<int, Subscription>
|
||||||
|
*/
|
||||||
|
#[ORM\OneToMany(targetEntity: Subscription::class, mappedBy: 'user', orphanRemoval: true)]
|
||||||
|
private Collection $subscriptions;
|
||||||
|
|
||||||
public function __construct()
|
public function __construct()
|
||||||
{
|
{
|
||||||
$this->userCases = new ArrayCollection();
|
$this->userCases = new ArrayCollection();
|
||||||
|
$this->subscriptions = new ArrayCollection();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getId(): ?Uuid
|
public function getId(): ?Uuid
|
||||||
@ -261,36 +263,6 @@ class User implements UserInterface, PasswordAuthenticatedUserInterface
|
|||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function retrieveUnreadNotifications(): array
|
|
||||||
{
|
|
||||||
return [
|
|
||||||
[
|
|
||||||
'id' => 1,
|
|
||||||
'title' => 'Welcome',
|
|
||||||
'from' => 'Admin',
|
|
||||||
'type' => 'info',
|
|
||||||
'message' => 'Welcome to the dashboard.',
|
|
||||||
'timestamp' => new \DateTime('2024-11-12 10:00:00'),
|
|
||||||
],
|
|
||||||
[
|
|
||||||
'id' => 2,
|
|
||||||
'title' => 'New Case',
|
|
||||||
'from' => 'Admin',
|
|
||||||
'type' => 'info',
|
|
||||||
'message' => 'You have a new case.',
|
|
||||||
'timestamp' => new \DateTime('2024-11-13 10:19:56'),
|
|
||||||
],
|
|
||||||
[
|
|
||||||
'id' => 3,
|
|
||||||
'title' => 'New Message',
|
|
||||||
'from' => 'Admin',
|
|
||||||
'type' => 'warning',
|
|
||||||
'message' => 'You have a new message.',
|
|
||||||
'timestamp' => new \DateTime('2024-11-16 11:13:25'),
|
|
||||||
],
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
public function getSupervisor(): ?User
|
public function getSupervisor(): ?User
|
||||||
{
|
{
|
||||||
return $this->supervisor;
|
return $this->supervisor;
|
||||||
@ -305,68 +277,40 @@ class User implements UserInterface, PasswordAuthenticatedUserInterface
|
|||||||
|
|
||||||
public function isCaseWorker(): ?bool
|
public function isCaseWorker(): ?bool
|
||||||
{
|
{
|
||||||
return $this->caseWorker;
|
return in_array('ROLE_CASE_WORKER', $this->roles);
|
||||||
}
|
|
||||||
|
|
||||||
public function setCaseWorker(bool $caseWorker): static
|
|
||||||
{
|
|
||||||
$this->caseWorker = $caseWorker;
|
|
||||||
|
|
||||||
return $this;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function isCaseManager(): ?bool
|
public function isCaseManager(): ?bool
|
||||||
{
|
{
|
||||||
return $this->caseManager;
|
return in_array('ROLE_CASE_MANAGER', $this->roles);
|
||||||
}
|
|
||||||
|
|
||||||
public function setCaseManager(bool $caseManager): static
|
|
||||||
{
|
|
||||||
$this->caseManager = $caseManager;
|
|
||||||
|
|
||||||
return $this;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function isTherapist(): ?bool
|
public function isTherapist(): ?bool
|
||||||
{
|
{
|
||||||
return $this->therapist;
|
return in_array('ROLE_THERAPIST', $this->roles);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function setTherapist(bool $therapist): static
|
public function isAdmin(): ?bool
|
||||||
{
|
{
|
||||||
$this->therapist = $therapist;
|
return in_array('ROLE_ADMIN', $this->roles);
|
||||||
|
|
||||||
return $this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function isSu(): ?bool
|
|
||||||
{
|
|
||||||
return $this->su;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function setSu(bool $su): static
|
|
||||||
{
|
|
||||||
$this->su = $su;
|
|
||||||
|
|
||||||
return $this;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getJobs(): array
|
public function getJobs(): array
|
||||||
{
|
{
|
||||||
$jobs = [];
|
$jobs = [];
|
||||||
if ($this->caseWorker) {
|
if (in_array('ROLE_CASE_WORKER', $this->roles)) {
|
||||||
$jobs[] = 'Case Worker';
|
$jobs[] = 'Case Worker';
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($this->caseManager) {
|
if (in_array('ROLE_CASE_MANAGER', $this->roles)) {
|
||||||
$jobs[] = 'Case Manager';
|
$jobs[] = 'Case Manager';
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($this->therapist) {
|
if (in_array('ROLE_THERAPIST', $this->roles)) {
|
||||||
$jobs[] = 'Therapist';
|
$jobs[] = 'Therapist';
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($this->su) {
|
if (in_array('ROLE_ADMIN', $this->roles)) {
|
||||||
$jobs[] = 'Admin';
|
$jobs[] = 'Admin';
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -454,4 +398,85 @@ class User implements UserInterface, PasswordAuthenticatedUserInterface
|
|||||||
|
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function isActive(): ?bool
|
||||||
|
{
|
||||||
|
return $this->active;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setActive(bool $active): static
|
||||||
|
{
|
||||||
|
$this->active = $active;
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getLastLogin(): ?\DateTimeInterface
|
||||||
|
{
|
||||||
|
return $this->lastLogin;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setLastLogin(?\DateTimeInterface $lastLogin): static
|
||||||
|
{
|
||||||
|
$this->lastLogin = $lastLogin;
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function generateVCard(): string
|
||||||
|
{
|
||||||
|
list($fname, $lname) = explode(' ', $this->name, 2);
|
||||||
|
$b64image = null;
|
||||||
|
$fileExt = null;
|
||||||
|
|
||||||
|
if ($this->imageName) {
|
||||||
|
$fullFileName = dirname(dirname(__DIR__))."/public/{$_ENV['USER_IMAGE_PATH']}/{$this->imageName}";
|
||||||
|
$fileExt = strtoupper(pathinfo($fullFileName, PATHINFO_EXTENSION));
|
||||||
|
|
||||||
|
$b64image = base64_encode(
|
||||||
|
file_get_contents($fullFileName)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
return 'BEGIN:VCARD' .
|
||||||
|
"\nVERSION:3.0" .
|
||||||
|
"\nN:{$lname};{$fname}" .
|
||||||
|
"\nFN:$this->name" .
|
||||||
|
"\nORG:{$this->company->getName()}" .
|
||||||
|
($this->workPhone ? "\nTEL;TYPE=WORK,VOICE:$this->workPhone" : null) .
|
||||||
|
($this->email ? "\nEMAIL;TYPE=WORK,INTERNET:$this->email" : null) .
|
||||||
|
"\nREV:" . date('c') .
|
||||||
|
($this->imageName ? "\nPHOTO;TYPE={$fileExt};ENCODING=b:{$b64image}" : null) .
|
||||||
|
"\nEND:VCARD";
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return Collection<int, Subscription>
|
||||||
|
*/
|
||||||
|
public function getSubscriptions(): Collection
|
||||||
|
{
|
||||||
|
return $this->subscriptions;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function addSubscription(Subscription $subscription): static
|
||||||
|
{
|
||||||
|
if (!$this->subscriptions->contains($subscription)) {
|
||||||
|
$this->subscriptions->add($subscription);
|
||||||
|
$subscription->setUser($this);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function removeSubscription(Subscription $subscription): static
|
||||||
|
{
|
||||||
|
if ($this->subscriptions->removeElement($subscription)) {
|
||||||
|
// set the owning side to null (unless already changed)
|
||||||
|
if ($subscription->getUser() === $this) {
|
||||||
|
$subscription->setUser(null);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
}
|
}
|
@ -1,9 +1,9 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Entity;
|
namespace App\Entity\System;
|
||||||
|
|
||||||
use App\Enums\CaseLevel;
|
use App\Entity\Case\MemberCase;
|
||||||
use App\Repository\UserCaseRepository;
|
use App\Repository\System\UserCaseRepository;
|
||||||
use Doctrine\ORM\Mapping as ORM;
|
use Doctrine\ORM\Mapping as ORM;
|
||||||
|
|
||||||
#[ORM\Entity(repositoryClass: UserCaseRepository::class)]
|
#[ORM\Entity(repositoryClass: UserCaseRepository::class)]
|
@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Enums;
|
namespace App\Enums\Case;
|
||||||
|
|
||||||
enum CaseLevel: int
|
enum CaseLevel: int
|
||||||
{
|
{
|
@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Enums;
|
namespace App\Enums\Case;
|
||||||
|
|
||||||
enum DischargeReason: string
|
enum DischargeReason: string
|
||||||
{
|
{
|
@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Enums;
|
namespace App\Enums\Case;
|
||||||
|
|
||||||
enum NoteLocation: string
|
enum NoteLocation: string
|
||||||
{
|
{
|
@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Enums;
|
namespace App\Enums\Case;
|
||||||
|
|
||||||
enum NoteMethod: int
|
enum NoteMethod: int
|
||||||
{
|
{
|
@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Enums;
|
namespace App\Enums\Case;
|
||||||
|
|
||||||
enum NoteStatus: string
|
enum NoteStatus: string
|
||||||
{
|
{
|
@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Enums;
|
namespace App\Enums\Case;
|
||||||
|
|
||||||
enum RaceType: string
|
enum RaceType: string
|
||||||
{
|
{
|
@ -1,10 +1,11 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Enums;
|
namespace App\Enums\Case;
|
||||||
|
|
||||||
enum ReferralServiceType: string
|
enum ReferralServiceType: string
|
||||||
{
|
{
|
||||||
case FE_FF = 'FE-FF';
|
case FE_FF = 'FE-FF';
|
||||||
case VS_THBB = 'VS-THBB';
|
case VS_THBB = 'VS-THBB';
|
||||||
case VS_THBBT = 'VS-THBBT';
|
case VS_THBBT = 'VS-THBBT';
|
||||||
|
case VS_THBBCT = 'VS-THBBCT';
|
||||||
}
|
}
|
9
src/Enums/Case/ReferralType.php
Normal file
9
src/Enums/Case/ReferralType.php
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Enums\Case;
|
||||||
|
|
||||||
|
enum ReferralType: string
|
||||||
|
{
|
||||||
|
case DCS = 'DCS';
|
||||||
|
case PO = 'PO';
|
||||||
|
}
|
@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Enums;
|
namespace App\Enums\Case;
|
||||||
|
|
||||||
enum RelationshipType: string
|
enum RelationshipType: string
|
||||||
{
|
{
|
@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Enums;
|
namespace App\Enums\Case;
|
||||||
|
|
||||||
enum ResourceType: int
|
enum ResourceType: int
|
||||||
{
|
{
|
||||||
@ -9,4 +9,5 @@ enum ResourceType: int
|
|||||||
case JOB_OPENINGS = 2;
|
case JOB_OPENINGS = 2;
|
||||||
case HOUSING = 3;
|
case HOUSING = 3;
|
||||||
case PARENT_SUPPORT = 4;
|
case PARENT_SUPPORT = 4;
|
||||||
|
case PLAY_AREA = 5;
|
||||||
}
|
}
|
@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Enums;
|
namespace App\Enums\Case;
|
||||||
|
|
||||||
enum VisitQualityLevel: int
|
enum VisitQualityLevel: int
|
||||||
{
|
{
|
@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Enums;
|
namespace App\Enums\Company;
|
||||||
|
|
||||||
enum DocumentExtras: int
|
enum DocumentExtras: int
|
||||||
{
|
{
|
@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Enums;
|
namespace App\Enums\System;
|
||||||
|
|
||||||
enum County: string
|
enum County: string
|
||||||
{
|
{
|
@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Enums;
|
namespace App\Enums\System;
|
||||||
|
|
||||||
enum GenderType: string
|
enum GenderType: string
|
||||||
{
|
{
|
@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Enums;
|
namespace App\Enums\System;
|
||||||
|
|
||||||
enum JobType: string
|
enum JobType: string
|
||||||
{
|
{
|
@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Enums;
|
namespace App\Enums\System;
|
||||||
|
|
||||||
enum MessageType: int
|
enum MessageType: int
|
||||||
{
|
{
|
@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Enums;
|
namespace App\Enums\System;
|
||||||
|
|
||||||
enum RateType: string
|
enum RateType: string
|
||||||
{
|
{
|
@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Enums;
|
namespace App\Enums\System;
|
||||||
|
|
||||||
enum State: string
|
enum State: string
|
||||||
{
|
{
|
10
src/Enums/System/UserSubscriptions.php
Normal file
10
src/Enums/System/UserSubscriptions.php
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Enums\System;
|
||||||
|
|
||||||
|
enum UserSubscriptions: int
|
||||||
|
{
|
||||||
|
case Free = 0;
|
||||||
|
case Basic = 1;
|
||||||
|
case Pro = 2;
|
||||||
|
}
|
@ -3,8 +3,8 @@
|
|||||||
namespace App\Factory;
|
namespace App\Factory;
|
||||||
|
|
||||||
use App\DataTransferObject\CompanyDetailsDto;
|
use App\DataTransferObject\CompanyDetailsDto;
|
||||||
use App\Entity\Company;
|
use App\Entity\Company\Company;
|
||||||
use App\Entity\User;
|
use App\Entity\System\User;
|
||||||
|
|
||||||
final class CompanyFactory
|
final class CompanyFactory
|
||||||
{
|
{
|
||||||
|
@ -2,10 +2,10 @@
|
|||||||
|
|
||||||
namespace App\Factory;
|
namespace App\Factory;
|
||||||
|
|
||||||
use App\Entity\MemberCase;
|
use App\Entity\Case\MemberCase;;
|
||||||
use App\Entity\Messages;
|
use App\Entity\System\Messages;
|
||||||
use App\Entity\User;
|
use App\Entity\System\User;
|
||||||
use App\Enums\MessageType;
|
use App\Enums\System\MessageType;
|
||||||
use DateTimeImmutable;
|
use DateTimeImmutable;
|
||||||
|
|
||||||
class MessageFactory
|
class MessageFactory
|
||||||
@ -38,7 +38,7 @@ class MessageFactory
|
|||||||
return $msg;
|
return $msg;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function createNewCase(User $sender, User $recipient): Messages
|
public static function createNewCase(User $sender, User $recipient, string $link): Messages
|
||||||
{
|
{
|
||||||
$msg = new Messages();
|
$msg = new Messages();
|
||||||
$msg->setSent(new DateTimeImmutable())
|
$msg->setSent(new DateTimeImmutable())
|
||||||
@ -46,6 +46,7 @@ class MessageFactory
|
|||||||
->setSender($sender)
|
->setSender($sender)
|
||||||
->setRecipient($recipient)
|
->setRecipient($recipient)
|
||||||
->setTitle('New Case')
|
->setTitle('New Case')
|
||||||
|
->setLink($link)
|
||||||
->setMessage("You've been assigned a new case")
|
->setMessage("You've been assigned a new case")
|
||||||
;
|
;
|
||||||
|
|
||||||
|
@ -1,38 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Form;
|
|
||||||
|
|
||||||
use App\Entity\CaseDocument;
|
|
||||||
use App\Entity\CompanyDocument;
|
|
||||||
use App\Entity\Member;
|
|
||||||
use App\Entity\User;
|
|
||||||
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
|
|
||||||
use Symfony\Component\Form\AbstractType;
|
|
||||||
use Symfony\Component\Form\Extension\Core\Type\EnumType;
|
|
||||||
use Symfony\Component\Form\FormBuilderInterface;
|
|
||||||
use Symfony\Component\OptionsResolver\OptionsResolver;
|
|
||||||
|
|
||||||
class CaseDocumentFormType extends AbstractType
|
|
||||||
{
|
|
||||||
public function buildForm(FormBuilderInterface $builder, array $options): void
|
|
||||||
{
|
|
||||||
$docs = $options['docs'];
|
|
||||||
$builder
|
|
||||||
->add('document', EntityType::class, [
|
|
||||||
'class' => CompanyDocument::class,
|
|
||||||
'choices' => $docs,
|
|
||||||
'multiple' => true,
|
|
||||||
'expanded' => true,
|
|
||||||
'choice_label' => 'title',
|
|
||||||
])
|
|
||||||
;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function configureOptions(OptionsResolver $resolver): void
|
|
||||||
{
|
|
||||||
$resolver->setDefaults([
|
|
||||||
'data_class' => CaseDocument::class,
|
|
||||||
'docs' => [],
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
}
|
|
@ -2,10 +2,8 @@
|
|||||||
|
|
||||||
namespace App\Form;
|
namespace App\Form;
|
||||||
|
|
||||||
use App\Enums\DocumentExtras;
|
use App\Enums\Company\DocumentExtras;
|
||||||
use App\Entity\Company;
|
use App\Entity\Company\CompanyDocument;
|
||||||
use App\Entity\CompanyDocument;
|
|
||||||
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
|
|
||||||
use Symfony\Component\Form\Extension\Core\Type\EnumType;
|
use Symfony\Component\Form\Extension\Core\Type\EnumType;
|
||||||
use Symfony\Component\Form\Extension\Core\Type\TextareaType;
|
use Symfony\Component\Form\Extension\Core\Type\TextareaType;
|
||||||
use Symfony\Component\Form\AbstractType;
|
use Symfony\Component\Form\AbstractType;
|
||||||
|
@ -45,6 +45,7 @@ class CompanyFormType extends AbstractType
|
|||||||
])
|
])
|
||||||
->add('url', UrlType::class)
|
->add('url', UrlType::class)
|
||||||
->add('companyLogo', FileType::class)
|
->add('companyLogo', FileType::class)
|
||||||
|
->add('vendorId', TextType::class)
|
||||||
;
|
;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2,10 +2,9 @@
|
|||||||
|
|
||||||
namespace App\Form;
|
namespace App\Form;
|
||||||
|
|
||||||
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 Symfony\Component\Form\AbstractType;
|
use Symfony\Component\Form\AbstractType;
|
||||||
use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
|
use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
|
||||||
use Symfony\Component\Form\Extension\Core\Type\EmailType;
|
use Symfony\Component\Form\Extension\Core\Type\EmailType;
|
||||||
@ -38,10 +37,20 @@ class EditUserFormType extends AbstractType
|
|||||||
])
|
])
|
||||||
->add('workPhone', TextType::class)
|
->add('workPhone', TextType::class)
|
||||||
->add('personalPhone', TextType::class)
|
->add('personalPhone', TextType::class)
|
||||||
->add('caseWorker', CheckboxType::class)
|
->add('active', CheckboxType::class)
|
||||||
->add('caseManager', CheckboxType::class)
|
->add('caseWorker', CheckboxType::class, [
|
||||||
->add('therapist', CheckboxType::class)
|
'mapped' => false
|
||||||
->add('su', CheckboxType::class, ['label' => 'Admin'])
|
])
|
||||||
|
->add('caseManager', CheckboxType::class, [
|
||||||
|
'mapped' => false
|
||||||
|
])
|
||||||
|
->add('therapist', CheckboxType::class, [
|
||||||
|
'mapped' => false
|
||||||
|
])
|
||||||
|
->add('su', CheckboxType::class, [
|
||||||
|
'mapped' => false,
|
||||||
|
'label' => 'Admin'
|
||||||
|
])
|
||||||
->add('rateType', EnumType::class, [
|
->add('rateType', EnumType::class, [
|
||||||
'class' => RateType::class
|
'class' => RateType::class
|
||||||
])
|
])
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
namespace App\Form;
|
namespace App\Form;
|
||||||
|
|
||||||
use App\Entity\Company;
|
use App\Entity\Company\Company;
|
||||||
use Symfony\Component\Form\AbstractType;
|
use Symfony\Component\Form\AbstractType;
|
||||||
use Symfony\Component\Form\Extension\Core\Type\EmailType;
|
use Symfony\Component\Form\Extension\Core\Type\EmailType;
|
||||||
use Symfony\Component\Form\Extension\Core\Type\FileType;
|
use Symfony\Component\Form\Extension\Core\Type\FileType;
|
||||||
|
@ -2,10 +2,8 @@
|
|||||||
|
|
||||||
namespace App\Form;
|
namespace App\Form;
|
||||||
|
|
||||||
use App\Entity\Location;
|
use App\Entity\System\Location;
|
||||||
use App\Entity\MemberCase;
|
use App\Enums\System\State;
|
||||||
use App\Enums\State;
|
|
||||||
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
|
|
||||||
use Symfony\Component\Form\AbstractType;
|
use Symfony\Component\Form\AbstractType;
|
||||||
use Symfony\Component\Form\Extension\Core\Type\EnumType;
|
use Symfony\Component\Form\Extension\Core\Type\EnumType;
|
||||||
use Symfony\Component\Form\FormBuilderInterface;
|
use Symfony\Component\Form\FormBuilderInterface;
|
||||||
|
@ -2,16 +2,16 @@
|
|||||||
|
|
||||||
namespace App\Form;
|
namespace App\Form;
|
||||||
|
|
||||||
use App\Entity\CompanyDocument;
|
use App\Entity\Case\MemberCase;;
|
||||||
use App\Entity\MemberCase;
|
use App\Entity\System\ReferralSource;
|
||||||
use App\Entity\ReferralSource;
|
use App\Enums\Case\CaseLevel;
|
||||||
use App\Enums\CaseLevel;
|
use App\Enums\System\County;
|
||||||
use App\Enums\County;
|
use App\Enums\Case\ReferralType;
|
||||||
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
|
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
|
||||||
use Symfony\Component\Form\AbstractType;
|
use Symfony\Component\Form\AbstractType;
|
||||||
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
|
|
||||||
use Symfony\Component\Form\Extension\Core\Type\EnumType;
|
use Symfony\Component\Form\Extension\Core\Type\EnumType;
|
||||||
use Symfony\Component\Form\Extension\Core\Type\TextType;
|
use Symfony\Component\Form\Extension\Core\Type\TextType;
|
||||||
|
use Symfony\Component\Form\Extension\Core\Type\NumberType;
|
||||||
use Symfony\Component\Form\FormBuilderInterface;
|
use Symfony\Component\Form\FormBuilderInterface;
|
||||||
use Symfony\Component\OptionsResolver\OptionsResolver;
|
use Symfony\Component\OptionsResolver\OptionsResolver;
|
||||||
|
|
||||||
@ -19,6 +19,8 @@ class MemberCaseFormType extends AbstractType
|
|||||||
{
|
{
|
||||||
public function buildForm(FormBuilderInterface $builder, array $options): void
|
public function buildForm(FormBuilderInterface $builder, array $options): void
|
||||||
{
|
{
|
||||||
|
$docs = $options['docs'];
|
||||||
|
|
||||||
$builder
|
$builder
|
||||||
->add('caseNumber', TextType::class, [
|
->add('caseNumber', TextType::class, [
|
||||||
'required' => true
|
'required' => true
|
||||||
@ -29,7 +31,9 @@ class MemberCaseFormType extends AbstractType
|
|||||||
->add('lastName', TextType::class, [
|
->add('lastName', TextType::class, [
|
||||||
'required' => true
|
'required' => true
|
||||||
])
|
])
|
||||||
->add('referralType')
|
->add('referralType', EnumType::class, [
|
||||||
|
'class' => ReferralType::class
|
||||||
|
])
|
||||||
->add('admitDate', null, [
|
->add('admitDate', null, [
|
||||||
'widget' => 'single_text',
|
'widget' => 'single_text',
|
||||||
'required' => true,
|
'required' => true,
|
||||||
@ -62,10 +66,8 @@ class MemberCaseFormType extends AbstractType
|
|||||||
->add('county', EnumType::class, [
|
->add('county', EnumType::class, [
|
||||||
'class' => County::class,
|
'class' => County::class,
|
||||||
])
|
])
|
||||||
->add('docs', ChoiceType::class, [
|
->add('rate', NumberType::class, [
|
||||||
'data_class' => CompanyDocument::class,
|
'required' => true
|
||||||
'multiple' => true,
|
|
||||||
'expanded' => true,
|
|
||||||
])
|
])
|
||||||
;
|
;
|
||||||
}
|
}
|
||||||
|
@ -2,10 +2,12 @@
|
|||||||
|
|
||||||
namespace App\Form;
|
namespace App\Form;
|
||||||
|
|
||||||
use App\Entity\Member;
|
use App\Entity\Company\CompanyDocument;
|
||||||
use App\Enums\GenderType;
|
use App\Entity\Case\Member;
|
||||||
use App\Enums\RaceType;
|
use App\Enums\System\GenderType;
|
||||||
use App\Enums\RelationshipType;
|
use App\Enums\Case\RaceType;
|
||||||
|
use App\Enums\Case\RelationshipType;
|
||||||
|
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
|
||||||
use Symfony\Component\Form\AbstractType;
|
use Symfony\Component\Form\AbstractType;
|
||||||
use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
|
use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
|
||||||
use Symfony\Component\Form\Extension\Core\Type\DateType;
|
use Symfony\Component\Form\Extension\Core\Type\DateType;
|
||||||
@ -18,6 +20,7 @@ class MemberFormType extends AbstractType
|
|||||||
{
|
{
|
||||||
public function buildForm(FormBuilderInterface $builder, array $options): void
|
public function buildForm(FormBuilderInterface $builder, array $options): void
|
||||||
{
|
{
|
||||||
|
$docs = $options['docs'];
|
||||||
$builder
|
$builder
|
||||||
->add('lastName', null, ['required' => true])
|
->add('lastName', null, ['required' => true])
|
||||||
->add('firstName', null, ['required' => true])
|
->add('firstName', null, ['required' => true])
|
||||||
@ -68,6 +71,14 @@ class MemberFormType extends AbstractType
|
|||||||
->add('dcsApproved', CheckboxType::class, [
|
->add('dcsApproved', CheckboxType::class, [
|
||||||
'mapped' => false
|
'mapped' => false
|
||||||
])
|
])
|
||||||
|
->add('docs', EntityType::class, [
|
||||||
|
'class' => CompanyDocument::class,
|
||||||
|
'choices' => $docs,
|
||||||
|
'multiple' => true,
|
||||||
|
'expanded' => true,
|
||||||
|
'choice_label' => 'title',
|
||||||
|
'mapped' => false,
|
||||||
|
])
|
||||||
;
|
;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -75,6 +86,7 @@ class MemberFormType extends AbstractType
|
|||||||
{
|
{
|
||||||
$resolver->setDefaults([
|
$resolver->setDefaults([
|
||||||
'data_class' => Member::class,
|
'data_class' => Member::class,
|
||||||
|
'docs' => [],
|
||||||
'csrf_protection' => true,
|
'csrf_protection' => true,
|
||||||
'csrf_field_name' => '_token',
|
'csrf_field_name' => '_token',
|
||||||
'csrf_token_id' => 'member',
|
'csrf_token_id' => 'member',
|
||||||
|
@ -2,11 +2,9 @@
|
|||||||
|
|
||||||
namespace App\Form;
|
namespace App\Form;
|
||||||
|
|
||||||
use App\Entity\MemberCase;
|
use App\Entity\Case\Referral;
|
||||||
use App\Entity\Referral;
|
use App\Enums\Case\DischargeReason;
|
||||||
use App\Enums\DischargeReason;
|
use App\Enums\Case\ReferralServiceType;
|
||||||
use App\Enums\ReferralServiceType;
|
|
||||||
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
|
|
||||||
use Symfony\Component\Form\AbstractType;
|
use Symfony\Component\Form\AbstractType;
|
||||||
use Symfony\Component\Form\Extension\Core\Type\EnumType;
|
use Symfony\Component\Form\Extension\Core\Type\EnumType;
|
||||||
use Symfony\Component\Form\FormBuilderInterface;
|
use Symfony\Component\Form\FormBuilderInterface;
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
namespace App\Form;
|
namespace App\Form;
|
||||||
|
|
||||||
use App\Entity\ReferralSource;
|
use App\Entity\System\ReferralSource;
|
||||||
use Symfony\Component\Form\AbstractType;
|
use Symfony\Component\Form\AbstractType;
|
||||||
use Symfony\Component\Form\FormBuilderInterface;
|
use Symfony\Component\Form\FormBuilderInterface;
|
||||||
use Symfony\Component\OptionsResolver\OptionsResolver;
|
use Symfony\Component\OptionsResolver\OptionsResolver;
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
namespace App\Form;
|
namespace App\Form;
|
||||||
|
|
||||||
use App\Entity\User;
|
use App\Entity\System\User;
|
||||||
use Symfony\Component\Form\AbstractType;
|
use Symfony\Component\Form\AbstractType;
|
||||||
use Symfony\Component\Form\Extension\Core\Type\PasswordType;
|
use Symfony\Component\Form\Extension\Core\Type\PasswordType;
|
||||||
use Symfony\Component\Form\Extension\Core\Type\RepeatedType;
|
use Symfony\Component\Form\Extension\Core\Type\RepeatedType;
|
||||||
|
@ -2,10 +2,10 @@
|
|||||||
|
|
||||||
namespace App\Form;
|
namespace App\Form;
|
||||||
|
|
||||||
use App\Entity\CommunityResource;
|
use App\Entity\Resources\CommunityResource;
|
||||||
use App\Enums\County;
|
use App\Enums\Case\ResourceType;
|
||||||
use App\Enums\ResourceType;
|
use App\Enums\System\County;
|
||||||
use App\Enums\State;
|
use App\Enums\System\State;
|
||||||
use Symfony\Component\Form\AbstractType;
|
use Symfony\Component\Form\AbstractType;
|
||||||
use Symfony\Component\Form\Extension\Core\Type\EmailType;
|
use Symfony\Component\Form\Extension\Core\Type\EmailType;
|
||||||
use Symfony\Component\Form\Extension\Core\Type\EnumType;
|
use Symfony\Component\Form\Extension\Core\Type\EnumType;
|
||||||
|
@ -2,9 +2,8 @@
|
|||||||
|
|
||||||
namespace App\Form;
|
namespace App\Form;
|
||||||
|
|
||||||
use App\Entity\Member;
|
use App\Entity\Staff\StaffNote;
|
||||||
use App\Entity\StaffNote;
|
use App\Enums\Case\ReferralServiceType;
|
||||||
use App\Enums\ReferralServiceType;
|
|
||||||
use Symfony\Component\Form\AbstractType;
|
use Symfony\Component\Form\AbstractType;
|
||||||
use Symfony\Component\Form\Extension\Core\Type\EnumType;
|
use Symfony\Component\Form\Extension\Core\Type\EnumType;
|
||||||
use Symfony\Component\Form\Extension\Core\Type\TextareaType;
|
use Symfony\Component\Form\Extension\Core\Type\TextareaType;
|
||||||
|
@ -2,15 +2,13 @@
|
|||||||
|
|
||||||
namespace App\Form;
|
namespace App\Form;
|
||||||
|
|
||||||
use App\Entity\Member;
|
use App\Entity\Case\StandardNote;
|
||||||
use App\Entity\Referral;
|
use App\Enums\Case\NoteLocation;
|
||||||
use App\Entity\StandardNote;
|
use App\Enums\Case\NoteMethod;
|
||||||
use App\Enums\NoteLocation;
|
use App\Enums\Case\NoteStatus;
|
||||||
use App\Enums\NoteMethod;
|
|
||||||
use App\Enums\NoteStatus;
|
|
||||||
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
|
|
||||||
use Symfony\Component\Form\AbstractType;
|
use Symfony\Component\Form\AbstractType;
|
||||||
use Symfony\Component\Form\Extension\Core\Type\EnumType;
|
use Symfony\Component\Form\Extension\Core\Type\EnumType;
|
||||||
|
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
|
||||||
use Symfony\Component\Form\FormBuilderInterface;
|
use Symfony\Component\Form\FormBuilderInterface;
|
||||||
use Symfony\Component\OptionsResolver\OptionsResolver;
|
use Symfony\Component\OptionsResolver\OptionsResolver;
|
||||||
|
|
||||||
@ -20,6 +18,11 @@ class StandardNoteFormType extends AbstractType
|
|||||||
{
|
{
|
||||||
$members = $options['members'];
|
$members = $options['members'];
|
||||||
|
|
||||||
|
$ids = [];
|
||||||
|
foreach ($members as $idx => $member) {
|
||||||
|
$ids[$idx] = $member->getId()->toString();
|
||||||
|
}
|
||||||
|
|
||||||
$builder
|
$builder
|
||||||
->add('date', null, [
|
->add('date', null, [
|
||||||
'widget' => 'single_text',
|
'widget' => 'single_text',
|
||||||
@ -43,12 +46,19 @@ class StandardNoteFormType extends AbstractType
|
|||||||
'placeholder' => 'Note',
|
'placeholder' => 'Note',
|
||||||
],
|
],
|
||||||
])
|
])
|
||||||
->add('members', EntityType::class, [
|
->add('members', ChoiceType::class, [
|
||||||
'class' => Member::class,
|
//'class' => Member::class,
|
||||||
'choices' => $members,
|
'choices' => $members,
|
||||||
|
'choice_attr' => function ($member) {
|
||||||
|
return [
|
||||||
|
'checked' => $member->isChecked(),
|
||||||
|
'value' => $member->getId()->toString()
|
||||||
|
];
|
||||||
|
},
|
||||||
'multiple' => true,
|
'multiple' => true,
|
||||||
'expanded' => true,
|
'expanded' => true,
|
||||||
'choice_label' => 'name',
|
'choice_label' => 'name',
|
||||||
|
'mapped' => false,
|
||||||
])
|
])
|
||||||
->add('method', EnumType::class, [
|
->add('method', EnumType::class, [
|
||||||
'class' => NoteMethod::class,
|
'class' => NoteMethod::class,
|
||||||
|
@ -2,12 +2,10 @@
|
|||||||
|
|
||||||
namespace App\Form;
|
namespace App\Form;
|
||||||
|
|
||||||
use App\Entity\Supervision;
|
use App\Entity\Staff\Supervision;
|
||||||
use App\Entity\User;
|
use App\Entity\System\User;
|
||||||
use Doctrine\ORM\Mapping\Entity;
|
|
||||||
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
|
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
|
||||||
use Symfony\Component\Form\AbstractType;
|
use Symfony\Component\Form\AbstractType;
|
||||||
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
|
|
||||||
use Symfony\Component\Form\FormBuilderInterface;
|
use Symfony\Component\Form\FormBuilderInterface;
|
||||||
use Symfony\Component\OptionsResolver\OptionsResolver;
|
use Symfony\Component\OptionsResolver\OptionsResolver;
|
||||||
|
|
||||||
|
@ -2,10 +2,8 @@
|
|||||||
|
|
||||||
namespace App\Form;
|
namespace App\Form;
|
||||||
|
|
||||||
use App\Entity\MemberCase;
|
use App\Entity\Staff\StaffNote;
|
||||||
use App\Entity\StaffNote;
|
use App\Enums\Case\ReferralServiceType;
|
||||||
use App\Enums\ReferralServiceType;
|
|
||||||
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
|
|
||||||
use Symfony\Component\Form\AbstractType;
|
use Symfony\Component\Form\AbstractType;
|
||||||
use Symfony\Component\Form\Extension\Core\Type\EnumType;
|
use Symfony\Component\Form\Extension\Core\Type\EnumType;
|
||||||
use Symfony\Component\Form\Extension\Core\Type\TextareaType;
|
use Symfony\Component\Form\Extension\Core\Type\TextareaType;
|
||||||
|
@ -2,8 +2,8 @@
|
|||||||
|
|
||||||
namespace App\Form;
|
namespace App\Form;
|
||||||
|
|
||||||
use App\Entity\User;
|
use App\Entity\System\User;
|
||||||
use App\Entity\UserCase;
|
use App\Entity\System\UserCase;
|
||||||
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
|
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
|
||||||
use Symfony\Component\Form\AbstractType;
|
use Symfony\Component\Form\AbstractType;
|
||||||
use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
|
use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
|
||||||
|
@ -2,10 +2,9 @@
|
|||||||
|
|
||||||
namespace App\Form;
|
namespace App\Form;
|
||||||
|
|
||||||
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 Symfony\Component\Form\AbstractType;
|
use Symfony\Component\Form\AbstractType;
|
||||||
use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
|
use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
|
||||||
use Symfony\Component\Form\Extension\Core\Type\EmailType;
|
use Symfony\Component\Form\Extension\Core\Type\EmailType;
|
||||||
@ -61,11 +60,18 @@ class UserFormType extends AbstractType
|
|||||||
])
|
])
|
||||||
->add('workPhone', TextType::class)
|
->add('workPhone', TextType::class)
|
||||||
->add('personalPhone', TextType::class)
|
->add('personalPhone', TextType::class)
|
||||||
->add('caseWorker', CheckboxType::class)
|
->add('caseWorker', CheckboxType::class, [
|
||||||
->add('caseManager', CheckboxType::class)
|
'mapped' => false
|
||||||
->add('therapist', CheckboxType::class)
|
])
|
||||||
|
->add('caseManager', CheckboxType::class, [
|
||||||
|
'mapped' => false
|
||||||
|
])
|
||||||
|
->add('therapist', CheckboxType::class, [
|
||||||
|
'mapped' => false
|
||||||
|
])
|
||||||
->add('su', CheckboxType::class, [
|
->add('su', CheckboxType::class, [
|
||||||
'label' => 'Admin',
|
'mapped' => false,
|
||||||
|
'label' => 'Admin',
|
||||||
])
|
])
|
||||||
->add('level', EnumType::class, [
|
->add('level', EnumType::class, [
|
||||||
'class' => CaseLevel::class,
|
'class' => CaseLevel::class,
|
||||||
|
@ -2,14 +2,14 @@
|
|||||||
|
|
||||||
namespace App\Form;
|
namespace App\Form;
|
||||||
|
|
||||||
use App\Entity\Member;
|
use App\Entity\Case\Member;
|
||||||
use App\Entity\VisitNote;
|
use App\Entity\Case\VisitNote;
|
||||||
use App\Enums\NoteLocation;
|
use App\Enums\Case\NoteLocation;
|
||||||
use App\Enums\NoteMethod;
|
use App\Enums\Case\NoteMethod;
|
||||||
use App\Enums\NoteStatus;
|
use App\Enums\Case\NoteStatus;
|
||||||
use App\Enums\VisitQualityLevel;
|
use App\Enums\Case\VisitQualityLevel;
|
||||||
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
|
|
||||||
use Symfony\Component\Form\AbstractType;
|
use Symfony\Component\Form\AbstractType;
|
||||||
|
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
|
||||||
use Symfony\Component\Form\Extension\Core\Type\EnumType;
|
use Symfony\Component\Form\Extension\Core\Type\EnumType;
|
||||||
use Symfony\Component\Form\FormBuilderInterface;
|
use Symfony\Component\Form\FormBuilderInterface;
|
||||||
use Symfony\Component\OptionsResolver\OptionsResolver;
|
use Symfony\Component\OptionsResolver\OptionsResolver;
|
||||||
@ -20,6 +20,11 @@ class VisitNoteFormType extends AbstractType
|
|||||||
{
|
{
|
||||||
$members = $options['members'];
|
$members = $options['members'];
|
||||||
|
|
||||||
|
$ids = [];
|
||||||
|
foreach ($members as $idx => $member) {
|
||||||
|
$ids[$idx] = $member->getId()->toString();
|
||||||
|
}
|
||||||
|
|
||||||
$builder
|
$builder
|
||||||
->add('date', null, [
|
->add('date', null, [
|
||||||
'widget' => 'single_text',
|
'widget' => 'single_text',
|
||||||
@ -58,12 +63,19 @@ class VisitNoteFormType extends AbstractType
|
|||||||
->add('childFocused', EnumType::class, [
|
->add('childFocused', EnumType::class, [
|
||||||
'class' => VisitQualityLevel::class
|
'class' => VisitQualityLevel::class
|
||||||
])
|
])
|
||||||
->add('members', EntityType::class, [
|
->add('members', ChoiceType::class, [
|
||||||
'class' => Member::class,
|
//'class' => Member::class,
|
||||||
'choices' => $members,
|
'choices' => $members,
|
||||||
|
'choice_attr' => function ($member) {
|
||||||
|
return [
|
||||||
|
'checked' => $member->isChecked(),
|
||||||
|
'value' => $member->getId()->toString()
|
||||||
|
];
|
||||||
|
},
|
||||||
'multiple' => true,
|
'multiple' => true,
|
||||||
'expanded' => true,
|
'expanded' => true,
|
||||||
'choice_label' => 'name',
|
'choice_label' => 'name',
|
||||||
|
'mapped' => false,
|
||||||
])
|
])
|
||||||
->add('method', EnumType::class, [
|
->add('method', EnumType::class, [
|
||||||
'class' => NoteMethod::class
|
'class' => NoteMethod::class
|
||||||
|
@ -2,12 +2,14 @@
|
|||||||
|
|
||||||
namespace App\Libs;
|
namespace App\Libs;
|
||||||
|
|
||||||
use App\Entity\Location;
|
use App\Entity\Case\MemberCase;
|
||||||
use App\Entity\Messages;
|
use App\Entity\Staff\Supervision;
|
||||||
use App\Entity\User;
|
use App\Entity\System\Location;
|
||||||
|
use App\Entity\System\Messages;
|
||||||
|
use App\Entity\System\User;
|
||||||
|
use App\Entity\System\UserCase;
|
||||||
use Doctrine\ORM\EntityManagerInterface;
|
use Doctrine\ORM\EntityManagerInterface;
|
||||||
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
||||||
use Symfony\Component\HttpFoundation\Response;
|
|
||||||
|
|
||||||
class Libs extends AbstractController
|
class Libs extends AbstractController
|
||||||
{
|
{
|
||||||
@ -66,27 +68,6 @@ class Libs extends AbstractController
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
#[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 AbstractController::json($result);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static function Phone(string $phone): string
|
public static function Phone(string $phone): string
|
||||||
{
|
{
|
||||||
$phone = preg_replace('/[^0-9]/', '', $phone);
|
$phone = preg_replace('/[^0-9]/', '', $phone);
|
||||||
@ -108,4 +89,41 @@ class Libs extends AbstractController
|
|||||||
|
|
||||||
return $msgs;
|
return $msgs;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks if the user has permission to access a case.
|
||||||
|
*
|
||||||
|
* @param User $user
|
||||||
|
* @param MemberCase $case
|
||||||
|
* @param EntityManagerInterface $em
|
||||||
|
*
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public static function checkPermissions(User $user, MemberCase $case, EntityManagerInterface $em): bool
|
||||||
|
{
|
||||||
|
// if user is an admin, allow the action
|
||||||
|
if (in_array('ROLE_ADMIN', $user->getRoles())) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// if user is assigned to this case, allow the action
|
||||||
|
$uc = $em->getRepository(UserCase::class)->findOneBy(['user' => $user, 'memberCase' => $case]);
|
||||||
|
if ($uc) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// get user of the case and check if user is a supervisor of the worker
|
||||||
|
/** @var ?UserCase $uc */
|
||||||
|
$uc = $em->getRepository(UserCase::class)->findOneBy(['memberCase' => $case]);
|
||||||
|
if ($uc) {
|
||||||
|
$sup = $em->getRepository(Supervision::class)->findOneBy(['supervisor' => $user, 'worker' => $uc->getUser()]);
|
||||||
|
|
||||||
|
if ($sup) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// user does not have permissions to the case
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -21,6 +21,7 @@ class NavList
|
|||||||
'staff_notes' => self::DEFAULT,
|
'staff_notes' => self::DEFAULT,
|
||||||
'case_itinerary' => self::DEFAULT,
|
'case_itinerary' => self::DEFAULT,
|
||||||
'company_nav' => self::DEFAULT,
|
'company_nav' => self::DEFAULT,
|
||||||
|
'company_directory' => self::DEFAULT,
|
||||||
];
|
];
|
||||||
|
|
||||||
public const PRESENT_LINK = 'nav-link text-white active bg-gradient-dark';
|
public const PRESENT_LINK = 'nav-link text-white active bg-gradient-dark';
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Repository;
|
namespace App\Repository\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 DateTime;
|
use DateTime;
|
||||||
use DateTimeZone;
|
use DateTimeZone;
|
||||||
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
|
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
|
||||||
@ -42,7 +42,7 @@ class CaseItineraryRepository extends ServiceEntityRepository
|
|||||||
}
|
}
|
||||||
|
|
||||||
$query->orderBy('ci.date', 'DESC')
|
$query->orderBy('ci.date', 'DESC')
|
||||||
->addOrderBy('ci.arrival', 'DESC');
|
->addOrderBy('ci.departure', 'DESC');
|
||||||
|
|
||||||
//dd($query->getQuery());
|
//dd($query->getQuery());
|
||||||
|
|
||||||
@ -60,7 +60,7 @@ class CaseItineraryRepository extends ServiceEntityRepository
|
|||||||
->andWhere('ci.date >= :from')
|
->andWhere('ci.date >= :from')
|
||||||
->setParameter('from', $startDate->format('Y-01-01'))
|
->setParameter('from', $startDate->format('Y-01-01'))
|
||||||
->orderBy('ci.date', 'DESC')
|
->orderBy('ci.date', 'DESC')
|
||||||
->addOrderBy('ci.arrival', 'DESC')
|
->addOrderBy('ci.departure', 'DESC')
|
||||||
;
|
;
|
||||||
|
|
||||||
return $query->getQuery()->getResult();
|
return $query->getQuery()->getResult();
|
||||||
@ -77,7 +77,7 @@ class CaseItineraryRepository extends ServiceEntityRepository
|
|||||||
->andWhere('ci.date >= :from')
|
->andWhere('ci.date >= :from')
|
||||||
->setParameter('from', $startDate->modify('-30 days')->format('Y-m-d'))
|
->setParameter('from', $startDate->modify('-30 days')->format('Y-m-d'))
|
||||||
->orderBy('ci.date', 'DESC')
|
->orderBy('ci.date', 'DESC')
|
||||||
->addOrderBy('ci.arrival', 'DESC')
|
->addOrderBy('ci.departure', 'DESC')
|
||||||
;
|
;
|
||||||
|
|
||||||
return $query->getQuery()->getResult();
|
return $query->getQuery()->getResult();
|
@ -1,10 +1,10 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Repository;
|
namespace App\Repository\Case;
|
||||||
|
|
||||||
use App\Entity\CaseLocation;
|
use App\Entity\Case\CaseLocation;
|
||||||
use App\Entity\Location;
|
use App\Entity\System\Location;
|
||||||
use App\Entity\MemberCase;
|
use App\Entity\Case\MemberCase;;
|
||||||
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
|
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
|
||||||
use Doctrine\Persistence\ManagerRegistry;
|
use Doctrine\Persistence\ManagerRegistry;
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user