Commit f5f0034c authored by Michael Ngei's avatar Michael Ngei

Merge branch 'iprsv2_mike' into 'master'

Added birth endpoint

See merge request !17
parents f8b8790f 3d3139d4
...@@ -18,6 +18,7 @@ class BirthRecord extends Controller ...@@ -18,6 +18,7 @@ class BirthRecord extends Controller
'entry_num' => 'required|string', 'entry_num' => 'required|string',
]); ]);
//@Todo return on not found
$rid = Docum::where('ser_num', '=', $validatedData['entry_num'])->value('rid_h'); $rid = Docum::where('ser_num', '=', $validatedData['entry_num'])->value('rid_h');
if($rid){ if($rid){
$human = Human::where('rid','=', $rid)->whereColumn('rid', 'pid') $human = Human::where('rid','=', $rid)->whereColumn('rid', 'pid')
......
<?php
namespace App\Livewire\Search;
use App\Models\Human;
use App\Models\Relative;
use App\Models\User;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\DB;
use Livewire\Attributes\On;
use Livewire\Component;
use Spatie\Permission\Models\Role;
class BirthModal extends Component
{
protected $listeners = ['openBirthModal'];
public $human;
public $hasRole = false;
public $role;
public $isOpen = false;
public $docums;
public $serialNum='';
public function mount()
{
/** @var Auth $user current logged-in user */
$user = Auth::user();
/** @var User $contract_id user contract ID */
$contractId = $user['contract_rid'];
try {
$this->role = Role::findByName('CID-'.$user->contract_rid);
} catch (Exception $e)
{
//abort(403, "You don't have permission to perform basic search.");
}
}
public function render()
{
return view('livewire.search.birth-modal');
}
#[On('openBirthModal')]
public function openBirthModal($data): void
{
$entryNum= $data['entry_num'];
$birth_human = $this->getHumanBirth($entryNum);
if($birth_human){
$this->human = $birth_human[0];
$this->docums = $birth_human[1];
$this->familyrelation = $birth_human[2];
$this->serialNum = $data['entry_num'];
}
$this->isOpen = true;
}
/*public function placeholder()
{
return view('livewire.search.skeleton.resultsmodal');
}*/
public function closeModal()
{
$this->isOpen = false;
}
private function getHumanBirth($entry_num)
{
$docums_data=[];
$relation=[];
$parents=[];
if(!empty($entry_num)){
$query = "SELECT json_array(doc_rekv),pid FROM docums WHERE ser_num = :ser_num ORDER BY DAT_PRODUCT desc";
$query_docums = DB::select($query, ['ser_num' => $entry_num]);
$docums_json = json_decode(json_encode($query_docums), true);
foreach($docums_json as $doc_array) {
$rid=$doc_array['pid'];
$docums_data = json_decode($doc_array["json_array(doc_rekv)"], true);
}
//$motherId=$docums_data[0]['MOTHER_DOC_NUMBER'];
$parents['mother']=$docums_data[0]['M_NAME'].' '.$docums_data[0]['M_OTHNAME'].' '.$docums_data[0]['M_SURN'];
$parents['father']=$docums_data[0]['F_NAME'].' '.$docums_data[0]['F_OTHNAME'].' '.$docums_data[0]['F_SURN'];
// $birthReg_num=$docums_data[0]['BIRTHREG_NUMBER'];
$birthReg_num=$docums_data[0]['BIRTHREG_SERIAL'];
//$this->familyRelation($motherId);
$human = Human::with(['addressBirth.adresComp'])
->where('rid', '=', $rid)//first()
->whereColumn('rid', 'pid') //
->orderBy('data_scan', 'desc')->first();
$relation = $this->birthfamilyRelation($rid);
return [$human, $docums_data, $relation];
}
return null;
}
private function birthfamilyRelation($rid): array
{
$motherFather=[];
$humans=[];
//get parents
$parents = Relative::where('first_person','=',$rid)->get(['second_person']);
if(isset($parents)) {
foreach ($parents as $parent) {
$motherFather[] = $parent['second_person'];
}
}
foreach ($motherFather as $human){
$humans[]=$this->queryHuman($human); //the correct
}
return $humans;
}
}
...@@ -55,6 +55,7 @@ class Resultsmodal extends Component ...@@ -55,6 +55,7 @@ class Resultsmodal extends Component
#[On('openModal')] #[On('openModal')]
public function openModal($doc_num, $serial_num, $doctype): void public function openModal($doc_num, $serial_num, $doctype): void
{ {
$human_data=[];
try { try {
switch ($doctype){ switch ($doctype){
case 'ID': case 'ID':
...@@ -64,6 +65,7 @@ class Resultsmodal extends Component ...@@ -64,6 +65,7 @@ class Resultsmodal extends Component
$human_data = $this->getHumanBirth($doc_num,$serial_num); $human_data = $this->getHumanBirth($doc_num,$serial_num);
break; break;
} }
//$human_data = $this->getHuman($doc_num, $serial_num); //$human_data = $this->getHuman($doc_num, $serial_num);
if ($human_data) { if ($human_data) {
$this->human = $human_data[0]; $this->human = $human_data[0];
...@@ -105,7 +107,6 @@ class Resultsmodal extends Component ...@@ -105,7 +107,6 @@ class Resultsmodal extends Component
$docums_data = $data['docums']; $docums_data = $data['docums'];
$humanAllDocs = $data['all_docs']; $humanAllDocs = $data['all_docs'];
$family = $data['family']; $family = $data['family'];
return [$human, $docums_data, $family, $humanAllDocs]; return [$human, $docums_data, $family, $humanAllDocs];
} }
...@@ -192,6 +193,7 @@ class Resultsmodal extends Component ...@@ -192,6 +193,7 @@ class Resultsmodal extends Component
->orderBy('data_scan', 'desc')->first(); ->orderBy('data_scan', 'desc')->first();
$relation = $this->birthfamilyRelation($rid); $relation = $this->birthfamilyRelation($rid);
return [$human, $docums_data, $relation]; return [$human, $docums_data, $relation];
} }
......
...@@ -69,7 +69,6 @@ class Searchform extends Component ...@@ -69,7 +69,6 @@ class Searchform extends Component
break; break;
case 'Birth' : case 'Birth' :
if(!empty($this->searchBirthEntryNum)){ if(!empty($this->searchBirthEntryNum)){
$this->getBirthHuman(); $this->getBirthHuman();
}else{ }else{
session()->flash('error', 'Birth entry number not provided'); session()->flash('error', 'Birth entry number not provided');
...@@ -235,6 +234,7 @@ class Searchform extends Component ...@@ -235,6 +234,7 @@ class Searchform extends Component
if($rid){ if($rid){
$human = Human::where('rid','=', $rid)->whereColumn('rid', 'pid') $human = Human::where('rid','=', $rid)->whereColumn('rid', 'pid')
->get(['rid', 'pid', 'name', 'surn', 'last_name', 'sex', 'date_birth', 'date_death', 'o_pid']); ->get(['rid', 'pid', 'name', 'surn', 'last_name', 'sex', 'date_birth', 'date_death', 'o_pid']);
// dd($human);
if($human->isEmpty()){ if($human->isEmpty()){
throw new ModelNotFoundException('No record found'); throw new ModelNotFoundException('No record found');
}else{ }else{
......
...@@ -41,15 +41,22 @@ class Tableresult extends Component ...@@ -41,15 +41,22 @@ class Tableresult extends Component
} }
public function triggerResultsModal($doc_num,$serial,$doctype) public function triggerResultsModal($doc_num,$serial,$doctype)
{ {
//send $humans
$this->dispatch('openModal', $doc_num,$serial,$doctype); $this->dispatch('openModal', $doc_num,$serial,$doctype);
} }
//passport logic //passport logic
public function passportresultsModal($id,$pass_no,$doctype) public function passportresultsModal($id,$pass_no,$doctype): void
{ {
$this->dispatch('openPassportModal', ['id'=>$id,'pass_no'=>$pass_no,'doctype'=>$doctype]); $this->dispatch('openPassportModal', ['id'=>$id,'pass_no'=>$pass_no,'doctype'=>$doctype]);
} }
public function birthresultsModal($entry_num): void
{
$decodedId = urldecode($entry_num);
$this->dispatch('openBirthModal', ['entry_num' => $decodedId ]);
}
public function render() public function render()
{ {
return view('livewire.search.tableresult'); return view('livewire.search.tableresult');
......
<div>
@php
$modalStyle="";
$modalStatus='';
if($isOpen) {
$modalStatus= 'show';
$modalStyle="display: block;";
}
@endphp
<x-adminlte-modal id="searchModalBirthBasic" class="{{ $modalStatus }}" style="{{ $modalStyle }}" size="lg"
title="" v-centered static-backdrop scrollable>
<div class="modal-body">
<ul class="nav nav-tabs" id="custom-tabs-four-tab" role="tablist">
@if($role->hasAnyPermission(["Basic View Birth Details"]))
<li class="nav-item">
@if($modalStatus)
<a class="nav-link active" id="custom-tabs-four-home-tab" data-toggle="pill"
href="#custom-tabs-four-home" role="tab" aria-controls="custom-tabs-four-home"
aria-selected="true">
Document data
</a>
@else
<a class="nav-link active" id="custom-tabs-four-home-tab" data-toggle="pill" href="#custom-tabs-four-home" role="tab" aria-controls="custom-tabs-four-home" aria-selected="true">
<div class="skeleton skeleton-text short" style="width: 10rem;"></div>
</a>
@endif
</li>
@endif
@if($role->hasAnyPermission(["Basic View Birth Family relations"]))
<li class="nav-item">
@if($modalStatus)
<a class="nav-link" id="custom-tabs-four-family-tab" data-toggle="pill"
href="#custom-tabs-four-family" role="tab" aria-controls="custom-tabs-four-family"
aria-selected="false">
Family relations
</a>
@else
<a class="nav-link" id="custom-tabs-four-family-tab" data-toggle="pill" href="#custom-tabs-four-family" role="tab" aria-controls="custom-tabs-four-family" aria-selected="false">
<div class="skeleton skeleton-text short" style="width: 10rem;"></div>
</a>
@endif
</li>
@endif
@if($role->hasAnyPermission(["Basic View Birth Documents"]))
<li class="nav-item">
@if($modalStatus)
<a class="nav-link" id="custom-tabs-four-history-tab" data-toggle="pill"
href="#custom-tabs-four-documents" role="tab" aria-controls="custom-tabs-four-documents"
aria-selected="false">
Documents</a>
@else
<a class="nav-link" id="custom-tabs-four-family-tab" data-toggle="pill" href="#custom-tabs-four-family" role="tab" aria-controls="custom-tabs-four-family" aria-selected="false">
<div class="skeleton skeleton-text short" style="width: 10rem;"></div>
</a>
@endif
</li>
@endif
@if($role->hasAnyPermission(["Basic View Birth History"]))
<li class="nav-item">
@if($modalStatus)
<a class="nav-link" id="custom-tabs-four-history-tab" data-toggle="pill"
href="#custom-tabs-four-history" role="tab" aria-controls="custom-tabs-four-history"
aria-selected="false">
Document History</a>
@else
<a class="nav-link" id="custom-tabs-four-family-tab" data-toggle="pill" href="#custom-tabs-four-family" role="tab" aria-controls="custom-tabs-four-family" aria-selected="false">
<div class="skeleton skeleton-text short" style="width: 10rem;"></div>
</a>
@endif
</li>
@endif
<li class="nav-item">
@if($modalStatus)
<a class="nav-link" id="custom-tabs-four-history-tab" data-toggle="pill"
href="#custom-tabs-four-death" role="tab" aria-controls="custom-tabs-four-death"
aria-selected="false">
Date of Death
</a>
@else
<a class="nav-link" id="custom-tabs-four-family-tab" data-toggle="pill" href="#custom-tabs-four-family" role="tab" aria-controls="custom-tabs-four-family" aria-selected="false">
<div class="skeleton skeleton-text short" style="width: 10rem;"></div>
</a>
@endif
</li>
</ul>
</div>
<div class="card card-primary card-outline card-outline-tabs" style="box-shadow: none;">
<div class="card-header p-0 border-bottom-0">
</div>
<div class="card-body">
<div class="tab-content" id="custom-tabs-four-tabContent">
@if($role->hasAnyPermission(["Basic View Birth Details"]))
<div class="tab-pane fade show active" id="custom-tabs-four-home" role="tabpanel"
aria-labelledby="custom-tabs-four-home-tab">
@include('livewire.search.partials.tabs.birth.document_data')
</div>
@endif
</div>
</div>
</div>
<x-slot name="footerSlot">
<x-adminlte-button theme="danger" label="Close" data-dismiss="modal" wire:click="$refresh"/>
</x-slot>
</x-adminlte-modal>
<style>
#searchModalBirthBasic > .modal-dialog{
max-width: 95vw;
margin: auto;
}
</style>
</div>
...@@ -7,11 +7,10 @@ ...@@ -7,11 +7,10 @@
$modalStyle="display: block;"; $modalStyle="display: block;";
} }
@endphp @endphp
<x-adminlte-modal id="searchModalBasic" class="{{ $modalStatus }}" style="{{ $modalStyle }}" size="lg" <x-adminlte-modal id="searchModalPassportBasic" class="{{ $modalStatus }}" style="{{ $modalStyle }}" size="lg"
title="" v-centered static-backdrop scrollable> title="" v-centered static-backdrop scrollable>
<div class="modal-body"> <div class="modal-body">
<ul class="nav nav-tabs" id="custom-tabs-four-tab" role="tablist"> <ul class="nav nav-tabs" id="custom-tabs-four-tab" role="tablist">
@if($role->hasAnyPermission(["Basic View ID Details", "Basic View Passport Details", "Basic View Birth Details"])) @if($role->hasAnyPermission(["Basic View ID Details", "Basic View Passport Details", "Basic View Birth Details"]))
<li class="nav-item"> <li class="nav-item">
@if($modalStatus) @if($modalStatus)
...@@ -75,33 +74,31 @@ ...@@ -75,33 +74,31 @@
</div> </div>
<div class="card-body"> <div class="card-body">
<div class="tab-content" id="custom-tabs-four-tabContent"> <div class="tab-content" id="custom-tabs-four-tabContent">
@if($role->hasAnyPermission(["Basic View ID Details", "Basic View Passport Details", "Basic View Birth Details"])) @if($role->hasAnyPermission(["Basic View Passport Details"]))
<div class="tab-pane fade show active" id="custom-tabs-four-home" role="tabpanel" <div class="tab-pane fade show active" id="custom-tabs-four-home" role="tabpanel"
aria-labelledby="custom-tabs-four-home-tab"> aria-labelledby="custom-tabs-four-home-tab">
@include('livewire.search.partials.tabs.passport_tabs.document_data') @include('livewire.search.partials.tabs.passport_tabs.document_data')
</div> </div>
@endif @endif
@if($role->hasPermissionTo("Basic View ID Photo and Signature")) @if($role->hasPermissionTo("Basic View Passport Details"))
<div class="tab-pane fade" id="custom-tabs-four-photo" role="tabpanel" <div class="tab-pane fade" id="custom-tabs-four-photo" role="tabpanel"
aria-labelledby="custom-tabs-four-photo-tab"> aria-labelledby="custom-tabs-four-photo-tab">
@include('livewire.search.partials.tabs.passport_tabs.document_header_details') @include('livewire.search.partials.tabs.passport_tabs.document_header_details')
</div> </div>
@endif @endif
@if($role->hasAnyPermission(["Basic View Passport Documents"]))
@if($role->hasAnyPermission(["Basic View ID Documents", "Basic View Passport Documents", "Basic View Birth Documents"]))
<div class="tab-pane fade" id="custom-tabs-four-documents" role="tabpanel" <div class="tab-pane fade" id="custom-tabs-four-documents" role="tabpanel"
aria-labelledby="custom-tabs-four-documents-tab"> aria-labelledby="custom-tabs-four-documents-tab">
@include('livewire.search.partials.tabs.passport_tabs.document_header_details') @include('livewire.search.partials.tabs.passport_tabs.document_header_details')
</div> </div>
@endif @endif
@if($role->hasAnyPermission(["Basic View ID History", "Basic View Passport History", "Basic View Birth History"])) @if($role->hasAnyPermission(["Basic View Passport History"]))
<div class="tab-pane fade" id="custom-tabs-four-history" role="tabpanel" <div class="tab-pane fade" id="custom-tabs-four-history" role="tabpanel"
aria-labelledby="custom-tabs-four-history-tab"> aria-labelledby="custom-tabs-four-history-tab">
@include('livewire.search.partials.tabs.passport_tabs.document_header_details') @include('livewire.search.partials.tabs.passport_tabs.document_header_details')
</div> </div>
@endif @endif
</div> </div>
</div> </div>
</div> </div>
...@@ -113,4 +110,10 @@ ...@@ -113,4 +110,10 @@
</x-slot> </x-slot>
</x-adminlte-modal> </x-adminlte-modal>
<style>
#searchModalPassportBasic > .modal-dialog{
max-width: 95vw;
margin: auto;
}
</style>
</div> </div>
<div> <div>
<div id="overlaySpinner" wire:loading> <div id="overlaySpinner" wire:loading>
......
@php use Carbon\Carbon; @endphp
<div> <div>
<div class="col-10 offset-1" wire:loading> <div class="col-10 offset-1" wire:loading>
<div > <div >
...@@ -35,9 +35,6 @@ ...@@ -35,9 +35,6 @@
</div> </div>
</div> </div>
<div class="col-10 offset-1" wire:loading.remove> <div class="col-10 offset-1" wire:loading.remove>
@php
use Carbon\Carbon;
@endphp
@if(!is_null($humans)) @if(!is_null($humans))
<div class="row"> <div class="row">
...@@ -127,6 +124,29 @@ ...@@ -127,6 +124,29 @@
@foreach($humans as $human) @foreach($humans as $human)
@if($doctype === 'Birth')
<tr>
<td><h4 class="text-black">{{ $doc_human['o_pid'] ?? '-' }}</h4></td>
<td><h4 class="text-info">{{ $serial_number[$count] ?? '-' }}</h4></td>
<td>{{ $doc_human['name'] ?? '-' }}</td>
<td>{{ $doc_human['last_name'] ?? '-' }}</td>
<td>{{ $doc_human['surn'] ?? '-' }}</td>
<td>KENYAN <span class="fi fi-ke" style="font-size: 1rem;"></span></td>
<td>{{ $doc_human['sex'] ?? '-' }}</td>
<td></td>
<td>
<x-adminlte-button
label="Details"
theme="info"
id="humanbtn"
icon="fas fa-info-circle"
wire:click="birthresultsModal('{{ urlencode($serial_number[$count]) ?? '' }}')"
data-toggle="modal"
/>
</td>
</tr>
@endif
@if($doctype === 'Passport') @if($doctype === 'Passport')
<tr> <tr>
<td><h4 class="text-black">{{ $human["passport_no"] ?? '-'}}</h4></td> <td><h4 class="text-black">{{ $human["passport_no"] ?? '-'}}</h4></td>
...@@ -149,36 +169,19 @@ ...@@ -149,36 +169,19 @@
/> />
</td> </td>
</tr> </tr>
@else @endif
@if($doctype === 'ID')
@foreach($human as $doc_human) @foreach($human as $doc_human)
<tr> <tr>
<td> <td><h4 class="text-black">{{ $doc_human['o_pid'] ?? '-' }}</h4></td>
<h4 class="text-black"> <td><h4 class="text-info">{{ $serial_number[$count] ?? '-' }}</h4></td>
{{ $doc_human['o_pid'] ?? '-' }} <td>{{ $doc_human['name'] ?? '-' }}</td>
</h4> <td>{{ $doc_human['last_name'] ?? '-' }}</td>
</td> <td>{{ $doc_human['surn'] ?? '-' }}</td>
<td>
<h4 class="text-info">
{{ $serial_number[$count] ?? '-' }}
</h4>
</td>
<td>
{{ $doc_human['name'] ?? '-' }}
</td>
<td>
{{ $doc_human['last_name'] ?? '-' }}
</td>
<td>
{{ $doc_human['surn'] ?? '-' }}
</td>
<td>KENYAN <span class="fi fi-ke" style="font-size: 1rem;"></span></td> <td>KENYAN <span class="fi fi-ke" style="font-size: 1rem;"></span></td>
<td> <td>{{ $doc_human['sex'] ?? '-' }}</td>
{{ $doc_human['sex'] ?? '-' }} <td>{{ Carbon::parse($doc_human['date_birth'])->format("d-m-Y") ?? '-' }}</td>
</td>
<td>
{{ Carbon::parse($doc_human['date_birth'])->format("d-m-Y") ?? '-' }}
</td>
<td> <td>
<x-adminlte-button <x-adminlte-button
label="Details" label="Details"
......
...@@ -10,6 +10,7 @@ ...@@ -10,6 +10,7 @@
<livewire:search.searchform /> <livewire:search.searchform />
<livewire:search.tableresult lazy /> <livewire:search.tableresult lazy />
<livewire:search.passport-modal lazy /> <livewire:search.passport-modal lazy />
<livewire:search.birth-modal lazy />
<livewire:search.resultsmodal lazy /> <livewire:search.resultsmodal lazy />
@stop @stop
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment