Compare commits

..

No commits in common. "61d8cb2e3d78515f0d869fe4eac0eae17eca7ff3" and "96933d2e019696e5252b47d6db4a13233e4c7300" have entirely different histories.

24 changed files with 109 additions and 188 deletions

View File

@ -14,34 +14,36 @@
"doctrine/orm": "^3.3", "doctrine/orm": "^3.3",
"phpdocumentor/reflection-docblock": "^5.4", "phpdocumentor/reflection-docblock": "^5.4",
"phpstan/phpdoc-parser": "^1.33", "phpstan/phpdoc-parser": "^1.33",
"symfony/asset": "7.2.*", "symfony/asset": "7.1.*",
"symfony/asset-mapper": "7.2.*", "symfony/asset-mapper": "7.1.*",
"symfony/console": "7.2.*", "symfony/console": "7.1.*",
"symfony/doctrine-messenger": "7.2.*", "symfony/doctrine-messenger": "7.1.*",
"symfony/dotenv": "7.2.*", "symfony/dotenv": "7.1.*",
"symfony/expression-language": "7.2.*", "symfony/expression-language": "7.1.*",
"symfony/flex": "^2", "symfony/flex": "^2",
"symfony/form": "7.2.*", "symfony/form": "7.1.*",
"symfony/framework-bundle": "7.2.*", "symfony/framework-bundle": "7.1.*",
"symfony/http-client": "7.2.*", "symfony/http-client": "7.1.*",
"symfony/intl": "7.2.*", "symfony/intl": "7.1.*",
"symfony/mailer": "7.2.*", "symfony/mailer": "7.1.*",
"symfony/mime": "7.2.*", "symfony/mime": "7.1.*",
"symfony/monolog-bundle": "^3.0", "symfony/monolog-bundle": "^3.0",
"symfony/notifier": "7.2.*", "symfony/notifier": "7.1.*",
"symfony/process": "7.2.*", "symfony/process": "7.1.*",
"symfony/property-access": "7.2.*", "symfony/property-access": "7.1.*",
"symfony/property-info": "7.2.*", "symfony/property-info": "7.1.*",
"symfony/runtime": "7.2.*", "symfony/runtime": "7.1.*",
"symfony/security-bundle": "7.2.*", "symfony/security-bundle": "7.1.*",
"symfony/serializer": "7.2.*", "symfony/serializer": "7.1.*",
"symfony/string": "7.2.*", "symfony/stimulus-bundle": "^2.21",
"symfony/translation": "7.2.*", "symfony/string": "7.1.*",
"symfony/twig-bundle": "7.2.*", "symfony/translation": "7.1.*",
"symfony/uid": "7.2.*", "symfony/twig-bundle": "7.1.*",
"symfony/validator": "7.2.*", "symfony/uid": "7.1.*",
"symfony/web-link": "7.2.*", "symfony/ux-turbo": "^2.21",
"symfony/yaml": "7.2.*", "symfony/validator": "7.1.*",
"symfony/web-link": "7.1.*",
"symfony/yaml": "7.1.*",
"twig/extra-bundle": "^2.12|^3.0", "twig/extra-bundle": "^2.12|^3.0",
"twig/intl-extra": "^3.15", "twig/intl-extra": "^3.15",
"twig/twig": "^2.12|^3.0" "twig/twig": "^2.12|^3.0"
@ -93,17 +95,17 @@
"extra": { "extra": {
"symfony": { "symfony": {
"allow-contrib": false, "allow-contrib": false,
"require": "7.2.*" "require": "7.1.*"
} }
}, },
"require-dev": { "require-dev": {
"phpunit/phpunit": "^9.5", "phpunit/phpunit": "^9.5",
"symfony/browser-kit": "7.2.*", "symfony/browser-kit": "7.1.*",
"symfony/css-selector": "7.2.*", "symfony/css-selector": "7.1.*",
"symfony/debug-bundle": "7.2.*", "symfony/debug-bundle": "7.1.*",
"symfony/maker-bundle": "^1.0", "symfony/maker-bundle": "^1.0",
"symfony/phpunit-bridge": "^7.2", "symfony/phpunit-bridge": "^7.1",
"symfony/stopwatch": "7.2.*", "symfony/stopwatch": "7.1.*",
"symfony/web-profiler-bundle": "7.2.*" "symfony/web-profiler-bundle": "7.1.*"
} }
} }

View File

@ -2,7 +2,6 @@
namespace App\Controller; namespace App\Controller;
use Exception;
use App\Entity\MemberCase; use App\Entity\MemberCase;
use App\Entity\ReferralSource; use App\Entity\ReferralSource;
use App\Entity\User; use App\Entity\User;
@ -141,8 +140,8 @@ class CaseController extends AbstractController
$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);
$prevUc = $this->entityManager->getRepository(UserCase::class)->findBy(['memberCase' => $case]);
$prevUc = $this->entityManager->getRepository(UserCase::class)->findBy(['memberCase' => $case]);
$uc = new UserCase(); $uc = new UserCase();
$form = $this->createForm(UserCaseFormType::class, $uc); $form = $this->createForm(UserCaseFormType::class, $uc);
$form->handleRequest($request); $form->handleRequest($request);
@ -153,6 +152,10 @@ class CaseController extends AbstractController
$uc->setMemberCase($case); $uc->setMemberCase($case);
$uc->setUser($user); $uc->setUser($user);
if(!$uc->checkLevel()) {
throw new Exception('');
}
if (count($prevUc) > 0) { if (count($prevUc) > 0) {
$this->entityManager->remove($prevUc[0]); $this->entityManager->remove($prevUc[0]);
$this->entityManager->flush(); $this->entityManager->flush();
@ -174,7 +177,7 @@ class CaseController extends AbstractController
'title' => 'Assign Case', 'title' => 'Assign Case',
'breadcrumbs' => [ 'breadcrumbs' => [
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 Case')
], ],
'notifications' => $admin->retrieveUnreadNotifications(), 'notifications' => $admin->retrieveUnreadNotifications(),
'form' => $form, 'form' => $form,
@ -186,33 +189,6 @@ class CaseController extends AbstractController
); );
} }
#[Route('/case-notes/{id}', name: 'app_case_notes')]
public function showCaseNotes(Request $request, string $id): Response
{
$case = $this->entityManager->getRepository(MemberCase::class)->find($id);
return new Response();
}
#[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')] #[Route('/api/filter-cases-by-user', name: 'ajax_filter_cases_by_user')]
public function filterCasesByUser(Request $request): Response public function filterCasesByUser(Request $request): Response
{ {

View File

@ -2,7 +2,6 @@
namespace App\Entity; namespace App\Entity;
use App\Enums\CaseLevel;
use App\Repository\UserCaseRepository; use App\Repository\UserCaseRepository;
use Doctrine\ORM\Mapping as ORM; use Doctrine\ORM\Mapping as ORM;
@ -50,9 +49,4 @@ class UserCase
return $this; return $this;
} }
public static function checkLevel(User $user, MemberCase $case): bool
{
return ($user->getLevel()->value >= $case->getLevel()->value);
}
} }

View File

@ -2,11 +2,11 @@
namespace App\Enums; namespace App\Enums;
enum CaseLevel: int enum CaseLevel: string
{ {
case PARAPROFESSIONAL = 0; case PARAPROFESSIONAL = 'Paraprofessional';
case BACHELOR = 1; case BACHELOR = 'Bachelor';
case MASTER = 2; case MASTER = 'Master';
case DOCTORATE = 3; case DOCTORATE = 'Doctorate';
case ADMIN = 99; case ADMIN = 'Admin';
} }

View File

@ -5,7 +5,6 @@ namespace App\Form;
use App\Entity\User; use App\Entity\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\FormBuilderInterface; use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver; use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\Validator\Constraints\Length; use Symfony\Component\Validator\Constraints\Length;
@ -19,10 +18,7 @@ class RegistrationFormType extends AbstractType
->add('name') ->add('name')
->add('username') ->add('username')
->add('email') ->add('email')
->add('plainPassword', RepeatedType::class, [ ->add('plainPassword', PasswordType::class, [
'type' => PasswordType::class,
'first_options' => ['label' => 'Password'],
'second_options' => ['label' => 'Repeat Password'],
// instead of being set onto the object directly, // instead of being set onto the object directly,
// this is read and encoded in the controller // this is read and encoded in the controller
'mapped' => false, 'mapped' => false,

View File

@ -6,7 +6,6 @@ use App\Entity\User;
use App\Entity\UserCase; use App\Entity\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\FormBuilderInterface; use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver; use Symfony\Component\OptionsResolver\OptionsResolver;
@ -19,9 +18,6 @@ class UserCaseFormType extends AbstractType
'class' => User::class, 'class' => User::class,
'choice_label' => 'name', 'choice_label' => 'name',
]) ])
->add('overrideLevel', CheckboxType::class, [
'mapped' => false
])
; ;
} }

View File

@ -1,22 +0,0 @@
<?php
namespace App\Libs;
class Breadcrumb
{
public function __construct(
private string $link,
private string $name
) {
}
public function __toString(): string
{
return <<<HTML
<li class='breadcrumb-item text-sm'>
<a class='opacity-6 opacity-5 text-dark' href="{$this->link}">{$this->name}</a>
</li>
HTML;
}
}

View File

@ -86,10 +86,8 @@ class UserRepository extends ServiceEntityRepository implements PasswordUpgrader
return $this->createQueryBuilder('u') return $this->createQueryBuilder('u')
->orWhere('u.caseWorker = :case_worker') ->orWhere('u.caseWorker = :case_worker')
->orWhere('u.caseManager = :case_manager') ->orWhere('u.caseManager = :case_manager')
->orWhere('u.therapist = :therapist')
->setParameter('case_worker', true) ->setParameter('case_worker', true)
->setParameter('case_manager', true) ->setParameter('case_manager', true)
->setParameter('therapist', true)
->orderBy('u.name', 'ASC') ->orderBy('u.name', 'ASC')
->getQuery() ->getQuery()
->getResult() ->getResult()

View File

@ -3,40 +3,35 @@
<head> <head>
<meta charset="utf-8"/> <meta charset="utf-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<link rel="apple-touch-icon" sizes="76x76" href="{{ asset('img/apple-icon.png') }}"> <link rel="apple-touch-icon" sizes="76x76" href="/assets/img/apple-icon.png">
<link rel="icon" type="image/png" href="{{ asset('img/favicon.png') }}"> <link rel="icon" type="image/png" href="/assets/img/favicon.png">
<title> <title>
{% block title %}CM Tracker {% block title %}CM Tracker
{% endblock %} {% endblock %}
</title> </title>
<!-- Simple CSS
<link
rel="stylesheet" href="https://cdn.simplecss.org/simple.min.css">-->
<!-- Fonts and icons --> <!-- Fonts and icons -->
<link <link
rel="stylesheet" type="text/css" href="https://fonts.googleapis.com/css?family=Inter:300,400,500,600,700,900"/> rel="stylesheet" type="text/css" href="https://fonts.googleapis.com/css?family=Inter:300,400,500,600,700,900"/>
<!-- Nucleo Icons --> <!-- Nucleo Icons -->
<link href="{{ asset('css/nucleo-icons.css') }}" rel="stylesheet"/> <link href="/assets/css/nucleo-icons-a27f14049a724caccfdf868df5270952.css" rel="stylesheet"/>
<link <link
href="{{ asset('css/nucleo-svg.css') }}" rel="stylesheet"/> href="/assets/css/nucleo-svg-3db27f91a3b15bada90bc46e8e6e1035.css" rel="stylesheet"/>
<!-- Font Awesome Icons --> <!-- Font Awesome Icons -->
<script src="https://kit.fontawesome.com/f15a79324f.js" crossorigin="anonymous"></script> <script src="https://kit.fontawesome.com/f15a79324f.js" crossorigin="anonymous"></script>
<!-- Material Icons --> <!-- Material Icons -->
<link <link
rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Material+Symbols+Rounded:opsz,wght,FILL,GRAD@24,400,0,0"/> rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Material+Symbols+Rounded:opsz,wght,FILL,GRAD@24,400,0,0"/>
<!-- CSS Files --> <!-- CSS Files -->
<link id="pagestyle" href="{{ asset('css/material-dashboard.css') }}?v=3.2.0" rel="stylesheet"/> {% block stylesheets %}{% endblock %} <link id="pagestyle" href="/assets/css/material-dashboard-69c5ab25ac23935d84707ae832be200b.css?v=3.2.0" rel="stylesheet"/> {% block stylesheets %}{% endblock %}
</head> </head>
<body class="bg-gray-200"> {% block body %}{% endblock %} <body class="bg-gray-200"> {% block body %}{% endblock %}
{% block javascripts %} {% block javascripts %}
<script src="{{ asset('js/core/popper.min.js') }}"></script> <script src="/assets/js/core/popper.min-0e0d7375f38434864f6e8b17b83248aa.js"></script>
<script src="{{ asset('js/core/bootstrap.min.js') }}"></script> <script src="/assets/js/core/bootstrap.min-98996657a881e005a859bf6c1669833e.js"></script>
<script src="{{ asset('js/plugins/perfect-scrollbar.min.js') }}"></script> <script src="/assets/js/plugins/perfect-scrollbar.min-a3b6b88d9191651d76bca1d18ad6ff6f.js"></script>
<script src="{{ asset('js/plugins/smooth-scrollbar.min.js') }}"></script> <script src="/assets/js/plugins/smooth-scrollbar.min-7f3b7aad407cb76c47d8ba2ff36b2917.js"></script>
<script> <script>
var win = navigator.platform.indexOf('Win') > -1; var win = navigator.platform.indexOf('Win') > -1;
if (win && document.querySelector('#sidenav-scrollbar')) { if (win && document.querySelector('#sidenav-scrollbar')) {
@ -49,9 +44,7 @@ Scrollbar.init(document.querySelector('#sidenav-scrollbar'), options);
<!-- Github buttons --> <!-- Github buttons -->
<script async defer src="https://buttons.github.io/buttons.js"></script> <script async defer src="https://buttons.github.io/buttons.js"></script>
<!-- Control Center for Material Dashboard: parallax effects, scripts for the example pages etc --> <!-- Control Center for Material Dashboard: parallax effects, scripts for the example pages etc -->
<script src="{{ asset('js/material-dashboard.js') }}?v=3.2.0"></script> <script src="/assets/js/material-dashboard-3c2e68ac5dcb043e53d475fe9d10a964.js?v=3.2.0"></script>
<script src='{{ asset('js/script.js') }}'></script>
{% block importmap %} {% block importmap %}
{{ importmap('app') }} {{ importmap('app') }}

View File

@ -27,7 +27,8 @@
<select name='{{ field_name(form.supervisor) }}' id='user_form_supervisor' class='form-control'> <select name='{{ field_name(form.supervisor) }}' id='user_form_supervisor' class='form-control'>
<option value=''></option> <option value=''></option>
{% for s in supervisors %} {% for s in supervisors %}
<option value='{{ s.id }}' {% if user.supervisor and user.supervisor.id == s.id %} selected="selected" {% endif %}>{{ s.name }}</option> {% set selected = (s.id == data.id) %}
<option value='{{ s.id }}' {% if selected %} selected="true" {% endif %}>{{ s.name }}</option>
{% endfor %} {% endfor %}
</select> </select>
</div> </div>

View File

@ -55,7 +55,7 @@
<select name='{{ field_name(form.level) }}' id='case_form_level' class='form-control'> <select name='{{ field_name(form.level) }}' id='case_form_level' class='form-control'>
<option value=''></option> <option value=''></option>
{% for l in enum('App\\Enums\\CaseLevel').cases() %} {% for l in enum('App\\Enums\\CaseLevel').cases() %}
<option value='{{ l.value }}'>{{ l.name|replace({'_': ' '})|lower|capitalize }}</option> <option value='{{ l.value }}'>{{ l.name }}</option>
{% endfor %} {% endfor %}
</select> </select>
</div> </div>

View File

@ -19,15 +19,12 @@
<h4 class="font-weight-bolder">Assign Case Worker</h4> <h4 class="font-weight-bolder">Assign Case Worker</h4>
</div> </div>
<div class="card-body"> <div class="card-body">
{{ form_start(form, {'attr': {'onsubmit': 'return validateAssignForm()'}}) }}
{{ form_errors(form) }} {{ form_errors(form) }}
{{ form_start(form) }}
<div class='input-group input-group-outline mb-3 is-filled'> <div class='input-group input-group-outline mb-3 is-filled'>
<input type='hidden' id='caseId' value='{{ id }}'/>
<input type='hidden' id='mustOverride' value="false"/>
<label for='user_form_caseWorker' class='form-label'>Case Worker</label> <label for='user_form_caseWorker' class='form-label'>Case Worker</label>
<select name='{{ field_name(form.user) }}' id='user_form_caseWorker' class='form-control' onchange='javascript:checkLevels()'> <select name='{{ field_name(form.user) }}' id='user_form_caseWorker' class='form-control'>
<option value=''></option> <option value=''></option>
{% for w in caseWorkers %} {% for w in caseWorkers %}
{% set selected = (w.id == assignedWorkerId) %} {% set selected = (w.id == assignedWorkerId) %}
@ -37,12 +34,12 @@
</div> </div>
<div class='input-group input-group-outline mb-3'> <div class='input-group input-group-outline mb-3'>
<input type='checkbox' name='{{ field_name(form.overrideLevel) }}' id='user_form_levelOverride' value='1'/>&nbsp;&nbsp; <input type='checkbox' name='user_form_levelOverride' id='user_form_levelOverride' value='1'/>
<label for='user_form_levelOverride'>Override Level</label> <label for='user_form_levelOverride' class='form-label'>Override Level</label>
</div> </div>
<div class="text-center"> <div class="text-center">
<button type="submit" id='submit-btn' class="btn btn-lg bg-gradient-dark btn-lg w-100 mt-4 mb-0">Assign Case Worker</button> <button type="submit" class="btn btn-lg bg-gradient-dark btn-lg w-100 mt-4 mb-0">Assign Case Worker</button>
</div> </div>
{{ form_end(form) }} {{ form_end(form) }}
</div> </div>

View File

@ -54,7 +54,11 @@
<select name='{{ field_name(form.level) }}' id='case_form_level' class='form-control'> <select name='{{ field_name(form.level) }}' id='case_form_level' class='form-control'>
<option value=''></option> <option value=''></option>
{% for l in enum('App\\Enums\\CaseLevel').cases() %} {% for l in enum('App\\Enums\\CaseLevel').cases() %}
<option value='{{ l.value }}' {% if case.level.value == l.value %} selected='selected'{% endif %}>{{ l.name }}</option> {% set selected="" %}
{% if case.level.value == l.value %}
{% set selected=" selected='selected" %}
{% endif %}
<option value='{{ l.value }}' {{ selected }}>{{ l.name }}</option>
{% endfor %} {% endfor %}
</select> </select>
</div> </div>

View File

@ -19,8 +19,8 @@
<div class="col-xl-4 col-lg-5 col-md-7 d-flex flex-column ms-auto me-auto ms-lg-auto me-lg-5"> <div class="col-xl-4 col-lg-5 col-md-7 d-flex flex-column ms-auto me-auto ms-lg-auto me-lg-5">
<div class="card card-plain"> <div class="card card-plain">
<div class="card-header"> <div class="card-header">
<h4 class="font-weight-bolder">Edit Referral Source</h4> <h4 class="font-weight-bolder">Add Referral Source</h4>
<p class="mb-0">{{ rs.name }}</p> <p class="mb-0">Add a source of receiving referrals</p>
</div> </div>
<div class="card-body"> <div class="card-body">
{{ form_errors(form) }} {{ form_errors(form) }}

View File

@ -19,7 +19,7 @@
<h6 class="text-white text-capitalize ps-3">Referral Source List</h6> <h6 class="text-white text-capitalize ps-3">Referral Source List</h6>
</div> </div>
<div> <div>
<button type="button" class="btn btn-block btn-light mb-3" onclick="window.open('{{ path('app_add_source') }}', '_self')">Add Source</button> <button type="button" class="btn btn-block btn-light mb-3" onclick="window.open('/index.php/add-source', '_self')">Add Source</button>
</div> </div>
</div> </div>
</div> </div>
@ -58,7 +58,7 @@
{{ src.phone }} {{ src.phone }}
</td> </td>
<td class='align-middle'> <td class='align-middle'>
<a href="{{ path('app_edit_source', {id: src.id}) }}" class='text-secondary font-weight-bold text-xs' data-toggle='tooltip' data-original-title='Edit Source'>Edit</a> <a href='/index.php/edit-source/{{ src.id }}' class='text-secondary font-weight-bold text-xs' data-toggle='tooltip' data-original-title='Edit Source'>Edit</a>
</td> </td>
</tr> </tr>
{% endfor %} {% endfor %}

View File

@ -33,21 +33,21 @@
<div class='input-group input-group-outline mb-3'> <div class='input-group input-group-outline mb-3'>
<div class='row justify-content-center flex-column'> <div class='row justify-content-center flex-column'>
<div class='col'> <div class='col'>
<input type='checkbox' name='{{ field_name(form.caseWorker) }}' id='user_form_job_CASE_WORKER' value='CASE_WORKER' {% if data.caseWorker %} checked="checked" {% endif %}/> <input type='checkbox' name='{{ field_name(form.caseWorker) }}' id='user_form_job_CASE_WORKER' value='CASE_WORKER' {% if is_granted('ROLE_CASE_WORKER') %} checked="checked" {% endif %}/>
<label for='user_form_job_CASE_WORKER'>Case Worker</label><br/> <label for='user_form_job_CASE_WORKER'>Case Worker</label><br/>
</div> </div>
<div class='col'> <div class='col'>
<input type='checkbox' name='{{ field_name(form.therapist) }}' id='user_form_job_THERAPIST' value='THERAPIST' {% if data.therapist %} checked="checked" {% endif %}/> <input type='checkbox' name='{{ field_name(form.therapist) }}' id='user_form_job_THERAPIST' value='THERAPIST' {% if is_granted('ROLE_THERAPIST') %} checked="checked" {% endif %}/>
<label for='user_form_job_THERAPIST'>Therapist</label><br/> <label for='user_form_job_THERAPIST'>Therapist</label><br/>
</div> </div>
</div> </div>
<div class='row justify-content-center flex-column'> <div class='row justify-content-center flex-column'>
<div class='col'> <div class='col'>
<input type='checkbox' name='{{ field_name(form.caseManager) }}' id='user_form_job_CASE_MANAGER' value='CASE_MANAGER' {% if data.caseManager %} checked="checked" {% endif %}/> <input type='checkbox' name='{{ field_name(form.caseManager) }}' id='user_form_job_CASE_MANAGER' value='CASE_MANAGER' {% if is_granted('ROLE_CASE_MANAGER') %} checked="checked" {% endif %}/>
<label for='user_form_job_CASE_MANAGER'>Case Manager</label> <label for='user_form_job_CASE_MANAGER'>Case Manager</label>
</div> </div>
<div class='col'> <div class='col'>
<input type='checkbox' name='{{ field_name(form.su) }}' id='user_form_job_ADMIN' value='ADMIN' {% if data.su %} checked="checked" {% endif %}/> <input type='checkbox' name='{{ field_name(form.su) }}' id='user_form_job_ADMIN' value='ADMIN' {% if is_granted('ROLE_ADMIN') %} checked="checked" {% endif %}/>
<label for='user_form_job_ADMIN'>Admin</label><br/> <label for='user_form_job_ADMIN'>Admin</label><br/>
</div> </div>
</div> </div>

View File

@ -16,7 +16,7 @@
<h6 class="text-white text-capitalize ps-3">User List</h6> <h6 class="text-white text-capitalize ps-3">User List</h6>
</div> </div>
<div> <div>
<button type="button" class="btn btn-block btn-light mb-3" onclick="window.open('{{ path('app_add_user') }}', '_self')">Add User</button> <button type="button" class="btn btn-block btn-light mb-3" onclick="window.open('/index.php/add-user', '_self')">Add User</button>
</div> </div>
</div> </div>
</div> </div>
@ -60,9 +60,9 @@
{% endif %} {% endif %}
</td> </td>
<td class='align-middle'> <td class='align-middle'>
<a href='{{ path('app_edit_user', {id: user.id}) }}' class='text-secondary font-weight-bold text-xs' data-toggle='tooltip' data-original-title='Edit user'>Edit</a> <a href='/index.php/edit-user/{{ user.id }}' class='text-secondary font-weight-bold text-xs' data-toggle='tooltip' data-original-title='Edit user'>Edit</a>
&nbsp;&nbsp; &nbsp;&nbsp;
<a href='{{ path('app_assign_supervisor', {id: user.id}) }}' class='text-secondary text-xs' data-toggle='tooltip' data-original-title='Assign supervisor'>Assign</a> <a href='/index.php/assign-supervisor/{{ user.id }}' class='text-secondary text-xs' data-toggle='tooltip' data-original-title='Assign supervisor'>Assign</a>
</td> </td>
</tr> </tr>
{% endfor %} {% endfor %}

View File

@ -16,14 +16,14 @@
<h6 class="text-white text-capitalize ps-3">Case List</h6> <h6 class="text-white text-capitalize ps-3">Case List</h6>
</div> </div>
<div> <div>
<button type="button" class="btn btn-block btn-light mb-3" onclick="window.open('{{ path('app_add_case') }}', '_self')">Add Case</button> <button type="button" class="btn btn-block btn-light mb-3" onclick="window.open('/index.php/add-case', '_self')">Add Case</button>
</div> </div>
</div> </div>
</div> </div>
<div class="card-body px-0 pb-2"> <div class="card-body px-0 pb-2">
<div> <div>
Filters: Filters:
<select onchange='filterCasesByUser(this.value)'> <select onchange='javascript:filterCasesByUser(this.value)'>
<option value=''></option> <option value=''></option>
{% for w in workers %} {% for w in workers %}
@ -45,7 +45,7 @@
<th class="text-secondary opacity-7"></th> <th class="text-secondary opacity-7"></th>
</tr> </tr>
</thead> </thead>
<tbody id='case-list'> <tbody>
{% for c in cases %} {% for c in cases %}
<tr> <tr>
<td> <td>
@ -81,21 +81,18 @@
</p> </p>
</td> </td>
<td class='align-right'> <td class='align-right'>
<a href='{{ path('app_edit_case', {id: c.id}) }}' class='' title='Edit Case' data-toggle='tooltip'> <a href='/index.php/edit-case/{{ c.id }}' class='' title='Edit Case' data-toggle='tooltip' data-original-title='Edit Case'>
<i class="material-symbols-rounded opacity-5">edit</i> <i class="material-symbols-rounded opacity-5">edit</i>
</a> </a>
<a href='{{ path('app_assign_case', {id: c.id}) }}' class='' title='Assign Case Worker' data-toggle='tooltip'> <a href='/index.php/assign-case/{{ c.id }}' class='' title='Assign Case Worker' data-toggle='tooltip' data-original-title='Assign Worker'>
<i class='material-symbols-rounded opacity-5'>badge</i> <i class='material-symbols-rounded opacity-5'>badge</i>
</a> </a>
<a href='{{ path('app_list_referrals', {id: c.id}) }}' class='' title='List Referrals' data-toggle='tooltip'> <a href='/index.php/list-referrals/{{ c.id }}' class='' title='List Referrals' data-toggle='tooltip' data-original-title='Add Referral'>
<i class='material-symbols-rounded opacity-5'>create_new_folder</i> <i class='material-symbols-rounded opacity-5'>create_new_folder</i>
</a> </a>
<a href='{{ path('app_case_members', {id: c.id}) }}' class='' title='List Members' data-toggle='tooltip'> <a href='/index.php/list-members/{{ c.id }}' class='' title='List Members' data-toggle='tooltip' data-original-title='Add Member'>
<i class='material-symbols-rounded opacity-5'>group_add</i> <i class='material-symbols-rounded opacity-5'>group_add</i>
</a> </a>
<a href='{{ path('app_case_notes', {id: c.id}) }}' class='' title='Show Notes' data-toggle='tooltip'>
<i class='material-symbols-rounded opacity-5'>clinical_notes</i>
</a>
</td> </td>
</tr> </tr>
</td> </td>

View File

@ -19,7 +19,7 @@
<h6 class="text-white text-capitalize ps-3">Member List</h6> <h6 class="text-white text-capitalize ps-3">Member List</h6>
</div> </div>
<div> <div>
<button type="button" class="btn btn-block btn-light mb-3" onclick="window.open('{{ path('app_case_add_member', {id: case.id}) }}', '_self')">Add Member</button> <button type="button" class="btn btn-block btn-light mb-3" onclick="window.open('/index.php/add-member/{{ case.id }}', '_self')">Add Member</button>
</div> </div>
</div> </div>
</div> </div>
@ -73,7 +73,7 @@
{% endif %} {% endif %}
</td> </td>
<td class='align-middle'> <td class='align-middle'>
<a href='{{ path('app_case_edit_member', {caseId: case.id, memberId: member.id}) }}' class='text-secondary font-weight-bold text-xs' data-toggle='tooltip' data-original-title='Edit Source'> <a href='/index.php/case/{{ case.id }}/edit-member/{{ member.id }}' class='text-secondary font-weight-bold text-xs' data-toggle='tooltip' data-original-title='Edit Source'>
<i class="material-symbols-rounded opacity-5">edit</i> <i class="material-symbols-rounded opacity-5">edit</i>
</a> </a>
</td> </td>

View File

@ -16,7 +16,7 @@
<h6 class="text-white text-capitalize ps-3">Referral List</h6> <h6 class="text-white text-capitalize ps-3">Referral List</h6>
</div> </div>
<div> <div>
<button type="button" class="btn btn-block btn-light mb-3" onclick="window.open('{{ path('app_case_add_referral', {id: case.id}) }}', '_self')">Add Referral</button> <button type="button" class="btn btn-block btn-light mb-3" onclick="window.open('/index.php/add-referral/{{ case.id }}', '_self')">Add Referral</button>
</div> </div>
</div> </div>
</div> </div>
@ -51,7 +51,7 @@
<p class='text-xs font-weight-bold mb-0'>{{ r.endDate|date("F j, Y") }}</p> <p class='text-xs font-weight-bold mb-0'>{{ r.endDate|date("F j, Y") }}</p>
</td> </td>
<td class='align-right'> <td class='align-right'>
<a href='{{ path('app_case_edit_referral', {caseId: case.id, referralId: r.id}) }}' class='' title='Edit Referral' data-toggle='tooltip'> <a href='/index.php/case/{{ case.id }}/edit-referral/{{ r.id }}' class='' title='Edit Referral' data-toggle='tooltip'>
<i class="material-symbols-rounded opacity-5">edit</i> <i class="material-symbols-rounded opacity-5">edit</i>
</a> </a>
<a href='/index.php/list-notes/{{ r.id }}' class='' title='List Notes' data-toggle='tooltip'> <a href='/index.php/list-notes/{{ r.id }}' class='' title='List Notes' data-toggle='tooltip'>

View File

@ -2,8 +2,11 @@
<nav aria-label="breadcrumb"> <nav aria-label="breadcrumb">
<ol class="breadcrumb bg-transparent mb-0 pb-0 pt-1 px-0 me-sm-6 me-5"> <ol class="breadcrumb bg-transparent mb-0 pb-0 pt-1 px-0 me-sm-6 me-5">
{% for crumb in breadcrumbs %} {% for crumb in breadcrumbs %}
{{ crumb|raw }} <li class="breadcrumb-item text-sm">
<a class="opacity-5 text-dark" href="javascript:;">{{ crumb }}</a>
</li>
{% endfor %} {% endfor %}
{#<li class="breadcrumb-item text-sm text-dark active" aria-current="page">Tables</li>#}
</ol> </ol>
</nav> </nav>
{% endblock %} {% endblock %}

View File

@ -2,8 +2,8 @@
<aside class="sidenav navbar navbar-vertical navbar-expand-xs border-radius-lg fixed-start ms-2 bg-white my-2" id="sidenav-main"> <aside class="sidenav navbar navbar-vertical navbar-expand-xs border-radius-lg fixed-start ms-2 bg-white my-2" id="sidenav-main">
<div class="sidenav-header"> <div class="sidenav-header">
<i class="fas fa-times p-3 cursor-pointer text-dark opacity-5 position-absolute end-0 top-0 d-none d-xl-none" aria-hidden="true" id="iconSidenav"></i> <i class="fas fa-times p-3 cursor-pointer text-dark opacity-5 position-absolute end-0 top-0 d-none d-xl-none" aria-hidden="true" id="iconSidenav"></i>
<a class="navbar-brand px-4 py-3 m-0" href="{{ path('app_dashboard') }}"> <a class="navbar-brand px-4 py-3 m-0" href="/index.php/dashboard">
<img src="{{ asset('img/logo-ct-dark.png') }}" class="navbar-brand-img" width="26" height="26" alt="main_logo"> <img src="/assets/img/logo-ct-dark-fede0e8581dd87c5e6217653376c32a4.png" class="navbar-brand-img" width="26" height="26" alt="main_logo">
<span class="ms-1 text-sm text-dark">CM Tracker</span> <span class="ms-1 text-sm text-dark">CM Tracker</span>
</a> </a>
</div> </div>
@ -18,19 +18,19 @@
<ul class="navbar-nav"> <ul class="navbar-nav">
{% if is_granted('ROLE_ADMIN') %} {% if is_granted('ROLE_ADMIN') %}
<li class='nav-item'> <li class='nav-item'>
<a class="{{ admin_dashboard }}" href="{{ path('app_admin_dashboard') }}"> <a class="{{ admin_dashboard }}" href="/index.php/admin-dashboard">
<i class="material-symbols-rounded opacity-5">dashboard</i> <i class="material-symbols-rounded opacity-5">dashboard</i>
<span class="nav-link-text ms-1">Admin Dashboard</span> <span class="nav-link-text ms-1">Admin Dashboard</span>
</a> </a>
</li> </li>
<li class='nav-item'> <li class='nav-item'>
<a class='{{ case_list }}' href='{{ path('app_list_cases') }}'> <a class='{{ case_list }}' href='/index.php/list-cases'>
<i class='material-symbols-rounded opacity-5'>cases</i> <i class='material-symbols-rounded opacity-5'>cases</i>
<span class='nav-link-text ms-1'>Case List</span> <span class='nav-link-text ms-1'>Case List</span>
</a> </a>
</li> </li>
<li clas='nav-item'> <li clas='nav-item'>
<a class='{{ referral_sources }}' href='{{ path('app_referral_source') }}'> <a class='{{ referral_sources }}' href='/index.php/list-referral-sources'>
<i class='material-symbols-rounded opacity-5'>groups</i> <i class='material-symbols-rounded opacity-5'>groups</i>
<span class='nav-link-text ms-1'>Referral Sources</span> <span class='nav-link-text ms-1'>Referral Sources</span>
</a> </a>
@ -39,7 +39,7 @@
{% if is_granted('ROLE_CASE_MANAGER') %} {% if is_granted('ROLE_CASE_MANAGER') %}
<li class='nav-item'> <li class='nav-item'>
<a class='{{ staff_dashboard }}' href='{{ path('app_staff_dashboard') }}'> <a class='{{ staff_dashboard }}' href='/index.php/staff-dashboard'>
<i class='material-symbols-rounded opacity-5'>dashboard</i> <i class='material-symbols-rounded opacity-5'>dashboard</i>
<span class='nav-link-text ms-1'>Staff Dashboard</span> <span class='nav-link-text ms-1'>Staff Dashboard</span>
</a> </a>
@ -47,7 +47,7 @@
{% endif %} {% endif %}
<li class="nav-item"> <li class="nav-item">
<a class="{{ user_dashboard }}" href="{{ path('app_dashboard') }}"> <a class="{{ user_dashboard }}" href="/index.php/dashboard">
<i class="material-symbols-rounded opacity-5">dashboard</i> <i class="material-symbols-rounded opacity-5">dashboard</i>
<span class="nav-link-text ms-1">Dashboard</span> <span class="nav-link-text ms-1">Dashboard</span>
</a> </a>
@ -56,21 +56,21 @@
<h6 class="ps-4 ms-2 text-uppercase text-xs text-dark font-weight-bolder opacity-5">Account pages</h6> <h6 class="ps-4 ms-2 text-uppercase text-xs text-dark font-weight-bolder opacity-5">Account pages</h6>
</li> </li>
<li class="nav-item"> <li class="nav-item">
<a class="{{ profile }}" href="{{ path('app_profile') }}"> <a class="{{ profile }}" href="/index.php/profile">
<i class="material-symbols-rounded opacity-5">person</i> <i class="material-symbols-rounded opacity-5">person</i>
<span class="nav-link-text ms-1">Profile</span> <span class="nav-link-text ms-1">Profile</span>
</a> </a>
</li> </li>
{% if is_granted('ROLE_ADMIN') %} {% if is_granted('ROLE_ADMIN') %}
<li class="nav-item"> <li class="nav-item">
<a class="{{ user_list }}" href="{{ path('app_list_users') }}"> <a class="{{ user_list }}" href="/index.php/list-users">
<i class="material-symbols-rounded opacity-5">assignment</i> <i class="material-symbols-rounded opacity-5">assignment</i>
<span class="nav-link-text ms-1">User List</span> <span class="nav-link-text ms-1">User List</span>
</a> </a>
</li> </li>
{% endif %} {% endif %}
<li class='nav-item'> <li class='nav-item'>
<a class='text-dark nav-link' href='{{ logout_path() }}'> <a class='text-dark nav-link' href='/index.php/logout'>
<i class='material-symbols-rounded opacity-5'>logout</i> <i class='material-symbols-rounded opacity-5'>logout</i>
<span class='nav-link-text ms-1'>Logout</span> <span class='nav-link-text ms-1'>Logout</span>
</a> </a>

View File

@ -3,16 +3,6 @@
<div class="container-fluid py-1 px-3"> <div class="container-fluid py-1 px-3">
{{ block('breadcrumb', 'internal/libs/breadcrumb.html.twig') }} {{ block('breadcrumb', 'internal/libs/breadcrumb.html.twig') }}
<div class="collapse navbar-collapse mt-sm-0 mt-2 me-md-0 me-sm-4" id="navbar"> <div class="collapse navbar-collapse mt-sm-0 mt-2 me-md-0 me-sm-4" id="navbar">
<div class='ms-md-auto pe-md-3 d-flex align-items-left'>
{% for label, messages in app.flashes %}
{% for message in messages %}
<div class="flash-{{ label }}">
{{ message }}
</div>
{% endfor %}
{% endfor %}
</div>
<div class="ms-md-auto pe-md-3 d-flex align-items-center"> <div class="ms-md-auto pe-md-3 d-flex align-items-center">
<div class="input-group input-group-outline"> <div class="input-group input-group-outline">
<label class="form-label">Case Search...</label> <label class="form-label">Case Search...</label>
@ -57,7 +47,7 @@
</ul> </ul>
</li> </li>
<li class="nav-item d-flex align-items-center" title="Profile"> <li class="nav-item d-flex align-items-center" title="Profile">
<a href="{{ path('app_profile') }}" class="nav-link text-body font-weight-bold px-0"> <a href="/index.php/profile" class="nav-link text-body font-weight-bold px-0">
<i class="material-symbols-rounded">account_circle</i> <i class="material-symbols-rounded">account_circle</i>
</a> </a>
</li> </li>

View File

@ -43,11 +43,7 @@
</div> </div>
<div class="input-group input-group-outline mb-3"> <div class="input-group input-group-outline mb-3">
<label for="registration_form_plainPassword" class="form-label">Password</label> <label for="registration_form_plainPassword" class="form-label">Password</label>
<input type="password" name="{{ field_name(form.plainPassword.first) }}" placeholder="" class="form-control" required="required"/> <input type="password" name="{{ field_name(form.plainPassword) }}" placeholder="" class="form-control" required="required"/>
</div>
<div class='input-group input-group-outline mb-3'>
<label for='registration_form_repeatPassword' class='form-label'>Repeat Password</label>
<input type='password' name='{{ field_name(form.plainPassword.second) }}' class='form-control'/>
</div> </div>
<div class="text-center"> <div class="text-center">
<button type="submit" class="btn btn-lg bg-gradient-dark btn-lg w-100 mt-4 mb-0">Sign Up</button> <button type="submit" class="btn btn-lg bg-gradient-dark btn-lg w-100 mt-4 mb-0">Sign Up</button>