131 lines
5.6 KiB
PHP
131 lines
5.6 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use App\Models\DataBalita;
|
|
use App\Models\DataIbuHamil;
|
|
use App\Models\DataPeriksaIbuHamil;
|
|
use App\Models\DataVitamin;
|
|
use Illuminate\Http\Request;
|
|
use App\Rules\UniqueParents;
|
|
use Illuminate\Support\Facades\Validator;
|
|
use Illuminate\Support\Facades\DB;
|
|
use Illuminate\Validation\Rule;
|
|
use Illuminate\Validation\Rules\Unique;
|
|
use Carbon\Carbon;
|
|
|
|
class DataPasienController extends Controller
|
|
{
|
|
public function create()
|
|
{
|
|
return view('pages.tambah_pasien.tambah', [
|
|
"title" => "Tambah Data Pasien",
|
|
"heading" => "Tambah Data Pasien",
|
|
]);
|
|
}
|
|
|
|
public function store(Request $request)
|
|
{
|
|
// Memberikan Pesan kustom
|
|
$customMessages = [
|
|
'required_if' => 'Kolom :attribute wajib diisi jika status Sudah Melahirkan.',
|
|
'required' => 'Kolom :attribute wajib diisi.',
|
|
'min' => 'Kolom :attribute minimal harus :min karakter.',
|
|
'max' => 'Kolom :attribute maksimal harus :max karakter.',
|
|
'unique' => ':attribute telah terdaftar',
|
|
];
|
|
|
|
// Untuk pengecekan validasi
|
|
$validator = Validator::make(
|
|
$request->all(),
|
|
[
|
|
'nama_ibu' => [
|
|
'required', 'min:3', 'max:255', function ($attribute, $value, $fail) use ($request) {
|
|
$nama_ayah = $request->input('nama_ayah');
|
|
$count = DataIbuHamil::where('nama_ibu', $value)
|
|
->where('nama_ayah', $nama_ayah)
|
|
->count();
|
|
if ($count > 0) {
|
|
$fail('Nama Ibu dan Ayah sudah terdaftar');
|
|
}
|
|
}
|
|
],
|
|
|
|
'nik_ibu' => ['required', 'max:255', 'unique:data_ibu_hamil'],
|
|
// 'umur_ibu' => ['required', 'max:255'],
|
|
'tanggal_lahir_ibu' => ['required', 'max:255'],
|
|
'tanggal_lahir_ayah' => ['required', 'max:255'],
|
|
'nama_ayah' => ['required', 'max:255'],
|
|
// 'umur_ayah' => ['required', 'max:255'],
|
|
'alamat' => ['required', 'max:255'],
|
|
'status_ayah' => ['required', 'max:255'],
|
|
'status_ibu' => ['required', 'max:255'],
|
|
'anak_ke' => ['required', 'max:255'],
|
|
'nama_balita' => ['required_if:status_ibu,Sudah Melahirkan', 'max:255'],
|
|
// 'nik_balita' => ['nullable', 'required_if:status_ibu,Sudah Melahirkan', 'max:255', 'unique:data_balita'],
|
|
// 'nik_balita' => ['nullable', 'required_if:status_ibu,Sudah Melahirkan', 'required_if:status_nik_balita,Memiliki NIK', 'max:255', 'unique:data_balita'],
|
|
'status_nik_balita' => ['required_if:status_ibu,Sudah Melahirkan', 'max:255'],
|
|
'nik_balita' => [
|
|
'nullable',
|
|
'max:255',
|
|
'required_if:status_nik_balita,Memiliki NIK',
|
|
'unique:data_balita',
|
|
function ($attribute, $value, $fail) use ($request) {
|
|
if ($request->input('status_ibu') === 'Sudah Melahirkan' && $request->input('status_nik_balita') === 'Memiliki NIK' && empty($value)) {
|
|
$fail('Kolom NIK Balita wajib diisi jika Status NIK Balita adalah Memiliki NIK.');
|
|
}
|
|
}
|
|
],
|
|
'jenis_kelamin' => ['required_if:status_ibu,Sudah Melahirkan', 'max:255'],
|
|
'tanggal_lahir' => ['required_if:status_ibu,Sudah Melahirkan', 'max:255'],
|
|
'jam_lahir' => ['required_if:status_ibu,Sudah Melahirkan', 'max:255'],
|
|
|
|
],
|
|
$customMessages
|
|
);
|
|
|
|
|
|
|
|
// Jika validasi berhasil, lanjutkan proses penyimpanan data
|
|
$validatedData = $validator->validated();
|
|
|
|
// Hitung usia ibu
|
|
$tanggalLahirIbu = Carbon::parse($request->input('tanggal_lahir_ibu'));
|
|
$usiaIbu = $tanggalLahirIbu->diffInYears(Carbon::now());
|
|
$tanggalLahirAyah = Carbon::parse($request->input('tanggal_lahir_ayah'));
|
|
$usiaAyah = $tanggalLahirAyah->diffInYears(Carbon::now());
|
|
// $tanggalLahirAyah = Carbon::parse($request->input('tanggal_lahir_ibu'));
|
|
// $usiaAyah = $tanggalLahirAyah->diffInYears(Carbon::now());
|
|
|
|
$validatedData['umur_ibu'] = $usiaIbu;
|
|
$validatedData['umur_ayah'] = $usiaAyah;
|
|
// $validatedData['umur_ayah'] = $usiaAyah;
|
|
$newData = DataIbuHamil::create($validatedData);
|
|
$newId = $newData->id;
|
|
|
|
if ($validatedData['status_ibu'] === 'Sudah Melahirkan') {
|
|
$nikBalita = $request->nik_balita ?? $request->status_nik_balita;
|
|
DataBalita::create([
|
|
'nik_balita' => $nikBalita,
|
|
'status_nik_balita' => $request->status_nik_balita,
|
|
'nama_balita' => $request->nama_balita,
|
|
'jenis_kelamin' => $request->jenis_kelamin,
|
|
'tanggal_lahir' => $request->tanggal_lahir,
|
|
'jam_lahir' => $request->jam_lahir,
|
|
'ibu_hamil_id' => $newId,
|
|
'lingkar_kepala_balita' => $request->lingkar_kepala_balita,
|
|
'status' => 'Sudah Dilahirkan'
|
|
]);
|
|
}
|
|
if ($validatedData['status_ibu'] === 'Hamil') {
|
|
DataBalita::create([
|
|
'status' => 'Belum Dilahirkan',
|
|
'ibu_hamil_id' => $newId,
|
|
]);
|
|
}
|
|
|
|
// Jika berhasil arahkan halaman /data_laporan
|
|
return redirect('/data_pasien')->with('success', 'Data Berhasil Ditambah');
|
|
}
|
|
}
|