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
'entry_num' => 'required|string',
]);
//@Todo return on not found
$rid = Docum::where('ser_num', '=', $validatedData['entry_num'])->value('rid_h');
if($rid){
$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
#[On('openModal')]
public function openModal($doc_num, $serial_num, $doctype): void
{
$human_data=[];
try {
switch ($doctype){
case 'ID':
......@@ -64,6 +65,7 @@ class Resultsmodal extends Component
$human_data = $this->getHumanBirth($doc_num,$serial_num);
break;
}
//$human_data = $this->getHuman($doc_num, $serial_num);
if ($human_data) {
$this->human = $human_data[0];
......@@ -105,7 +107,6 @@ class Resultsmodal extends Component
$docums_data = $data['docums'];
$humanAllDocs = $data['all_docs'];
$family = $data['family'];
return [$human, $docums_data, $family, $humanAllDocs];
}
......@@ -192,6 +193,7 @@ class Resultsmodal extends Component
->orderBy('data_scan', 'desc')->first();
$relation = $this->birthfamilyRelation($rid);
return [$human, $docums_data, $relation];
}
......
......@@ -69,7 +69,6 @@ class Searchform extends Component
break;
case 'Birth' :
if(!empty($this->searchBirthEntryNum)){
$this->getBirthHuman();
}else{
session()->flash('error', 'Birth entry number not provided');
......@@ -235,6 +234,7 @@ class Searchform extends Component
if($rid){
$human = Human::where('rid','=', $rid)->whereColumn('rid', 'pid')
->get(['rid', 'pid', 'name', 'surn', 'last_name', 'sex', 'date_birth', 'date_death', 'o_pid']);
// dd($human);
if($human->isEmpty()){
throw new ModelNotFoundException('No record found');
}else{
......
......@@ -41,15 +41,22 @@ class Tableresult extends Component
}
public function triggerResultsModal($doc_num,$serial,$doctype)
{
//send $humans
$this->dispatch('openModal', $doc_num,$serial,$doctype);
}
//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]);
}
public function birthresultsModal($entry_num): void
{
$decodedId = urldecode($entry_num);
$this->dispatch('openBirthModal', ['entry_num' => $decodedId ]);
}
public function render()
{
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 @@
$modalStyle="display: block;";
}
@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>
<div class="modal-body">
<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"]))
<li class="nav-item">
@if($modalStatus)
......@@ -75,33 +74,31 @@
</div>
<div class="card-body">
<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"
aria-labelledby="custom-tabs-four-home-tab">
@include('livewire.search.partials.tabs.passport_tabs.document_data')
</div>
@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"
aria-labelledby="custom-tabs-four-photo-tab">
@include('livewire.search.partials.tabs.passport_tabs.document_header_details')
</div>
@endif
@if($role->hasAnyPermission(["Basic View ID Documents", "Basic View Passport Documents", "Basic View Birth Documents"]))
@if($role->hasAnyPermission(["Basic View Passport Documents"]))
<div class="tab-pane fade" id="custom-tabs-four-documents" role="tabpanel"
aria-labelledby="custom-tabs-four-documents-tab">
@include('livewire.search.partials.tabs.passport_tabs.document_header_details')
</div>
@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"
aria-labelledby="custom-tabs-four-history-tab">
@include('livewire.search.partials.tabs.passport_tabs.document_header_details')
</div>
@endif
</div>
</div>
</div>
......@@ -113,4 +110,10 @@
</x-slot>
</x-adminlte-modal>
<style>
#searchModalPassportBasic > .modal-dialog{
max-width: 95vw;
margin: auto;
}
</style>
</div>
<div>
<div id="overlaySpinner" wire:loading>
......
@php use Carbon\Carbon; @endphp
<div>
<div class="col-10 offset-1" wire:loading>
<div >
......@@ -35,9 +35,6 @@
</div>
</div>
<div class="col-10 offset-1" wire:loading.remove>
@php
use Carbon\Carbon;
@endphp
@if(!is_null($humans))
<div class="row">
......@@ -127,6 +124,29 @@
@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')
<tr>
<td><h4 class="text-black">{{ $human["passport_no"] ?? '-'}}</h4></td>
......@@ -149,36 +169,19 @@
/>
</td>
</tr>
@else
@endif
@if($doctype === 'ID')
@foreach($human as $doc_human)
<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><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>
{{ Carbon::parse($doc_human['date_birth'])->format("d-m-Y") ?? '-' }}
</td>
<td>{{ $doc_human['sex'] ?? '-' }}</td>
<td>{{ Carbon::parse($doc_human['date_birth'])->format("d-m-Y") ?? '-' }}</td>
<td>
<x-adminlte-button
label="Details"
......
......@@ -10,6 +10,7 @@
<livewire:search.searchform />
<livewire:search.tableresult lazy />
<livewire:search.passport-modal lazy />
<livewire:search.birth-modal lazy />
<livewire:search.resultsmodal lazy />
@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