Compare commits
6 Commits
e376dadb4b
...
fe622ef794
Author | SHA1 | Date | |
---|---|---|---|
fe622ef794 | |||
0844b3fc58 | |||
6468e77445 | |||
2e41c1ed83 | |||
6ecb76a829 | |||
1fa3843b50 |
@ -23,7 +23,6 @@ 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
|
||||||
{
|
{
|
||||||
public function __construct(
|
public function __construct(
|
||||||
|
@ -130,40 +130,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
|
||||||
{
|
{
|
||||||
|
/** @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(
|
||||||
@ -180,14 +194,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' => Libs::getMessages($user, $this->entityManager),
|
'notifications' => Libs::getMessages($user, $this->entityManager),
|
||||||
'member' => $member,
|
'member' => $member,
|
||||||
'form' => $form->createView(),
|
'form' => $form->createView(),
|
||||||
'caseId' => $caseId,
|
'caseId' => $caseId,
|
||||||
|
'docs' => $docs,
|
||||||
|
'selectedDocs' => $memberDbDocs,
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
@ -34,6 +34,8 @@ class CompanyDocument
|
|||||||
#[ORM\Column(type: Types::JSON, enumType: DocumentExtras::class, nullable: true)]
|
#[ORM\Column(type: Types::JSON, enumType: DocumentExtras::class, nullable: true)]
|
||||||
private array $extras = [];
|
private array $extras = [];
|
||||||
|
|
||||||
|
private bool $selected = false;
|
||||||
|
|
||||||
public function getId(): ?Uuid
|
public function getId(): ?Uuid
|
||||||
{
|
{
|
||||||
return $this->id;
|
return $this->id;
|
||||||
@ -87,6 +89,18 @@ class CompanyDocument
|
|||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function isSelected(): bool
|
||||||
|
{
|
||||||
|
return $this->selected;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setSelected(): static
|
||||||
|
{
|
||||||
|
$this->selected = true;
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
public function getExtras(): array
|
public function getExtras(): array
|
||||||
{
|
{
|
||||||
return $this->extras;
|
return $this->extras;
|
||||||
|
@ -418,6 +418,18 @@ class User implements UserInterface, PasswordAuthenticatedUserInterface
|
|||||||
public function generateVCard(): string
|
public function generateVCard(): string
|
||||||
{
|
{
|
||||||
list($fname, $lname) = explode(' ', $this->name, 2);
|
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' .
|
return 'BEGIN:VCARD' .
|
||||||
"\nVERSION:3.0" .
|
"\nVERSION:3.0" .
|
||||||
"\nN:{$lname};{$fname}" .
|
"\nN:{$lname};{$fname}" .
|
||||||
@ -426,6 +438,7 @@ class User implements UserInterface, PasswordAuthenticatedUserInterface
|
|||||||
($this->workPhone ? "\nTEL;TYPE=WORK,VOICE:$this->workPhone" : null) .
|
($this->workPhone ? "\nTEL;TYPE=WORK,VOICE:$this->workPhone" : null) .
|
||||||
($this->email ? "\nEMAIL;TYPE=WORK,INTERNET:$this->email" : null) .
|
($this->email ? "\nEMAIL;TYPE=WORK,INTERNET:$this->email" : null) .
|
||||||
"\nREV:" . date('c') .
|
"\nREV:" . date('c') .
|
||||||
|
($this->imageName ? "\nPHOTO;TYPE={$fileExt};ENCODING=b:{$b64image}" : null) .
|
||||||
"\nEND:VCARD";
|
"\nEND:VCARD";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -4,7 +4,6 @@ namespace App\Repository;
|
|||||||
|
|
||||||
use App\Entity\MemberDocument;
|
use App\Entity\MemberDocument;
|
||||||
use App\Entity\Member;
|
use App\Entity\Member;
|
||||||
use App\Entity\MemberCase;
|
|
||||||
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
|
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
|
||||||
use Doctrine\Persistence\ManagerRegistry;
|
use Doctrine\Persistence\ManagerRegistry;
|
||||||
|
|
||||||
@ -18,6 +17,18 @@ class MemberDocumentRepository extends ServiceEntityRepository
|
|||||||
parent::__construct($registry, MemberDocument::class);
|
parent::__construct($registry, MemberDocument::class);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function removeUnsigned(Member $member)
|
||||||
|
{
|
||||||
|
$conn = $this->getEntityManager()->getConnection();
|
||||||
|
$sql = "DELETE FROM member_document WHERE client_id = :client_id AND client_signed IS NULL";
|
||||||
|
$stmt = $conn->prepare($sql);
|
||||||
|
$result = $stmt->executeQuery([
|
||||||
|
'client_id' => $member->getId()->toBinary()
|
||||||
|
]);
|
||||||
|
|
||||||
|
return $result;
|
||||||
|
}
|
||||||
|
|
||||||
// /**
|
// /**
|
||||||
// * @return CaseDocument[] Returns an array of CaseDocument objects
|
// * @return CaseDocument[] Returns an array of CaseDocument objects
|
||||||
// */
|
// */
|
||||||
|
@ -78,6 +78,15 @@
|
|||||||
<label for='member_form_school' class='form-label'>School</label>
|
<label for='member_form_school' class='form-label'>School</label>
|
||||||
<input type='text' name='{{ field_name(form.school) }}' id='member_form_school' {% if member.school %} value='{{ member.school }}' {% endif %} class='form-control'/>
|
<input type='text' name='{{ field_name(form.school) }}' id='member_form_school' {% if member.school %} value='{{ member.school }}' {% endif %} class='form-control'/>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div class='input-group input-group-outline mb-3'>
|
||||||
|
{% for d in docs %}
|
||||||
|
<span class='check'>
|
||||||
|
<input type='checkbox' name='{{ field_name(form.docs) }}[]' id='member_form_docs_{{ d.id }}' value='{{ d.id }}' {% if d.isSelected() %} checked='checked' {% endif %} />
|
||||||
|
<label for='member_form_docs_{{ d.id }}'>{{ d.title }}</label>
|
||||||
|
</span>
|
||||||
|
{% endfor %}
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class='col'>
|
<div class='col'>
|
||||||
<div class='input-group input-group-outline mb-3{% if member.address %} is-filled{% endif %}'>
|
<div class='input-group input-group-outline mb-3{% if member.address %} is-filled{% endif %}'>
|
||||||
|
Reference in New Issue
Block a user