intial commit

This commit is contained in:
2026-06-07 19:10:00 +07:00
commit 37bf240d23
230 changed files with 37141 additions and 0 deletions
+248
View File
@@ -0,0 +1,248 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\Anak;
use App\Models\User;
use Illuminate\Support\Facades\Auth;
use Illuminate\Validation\Rule;
class DataAnakController extends Controller
{
/**
* Display the registration view.
*
* @return \Illuminate\View\View
*/
public function show(Request $request)
{
$validator = validator($request->all(), [
'offset' => ['integer'],
'limit' => ['integer']
]);
if ($validator->fails()) {
return $this->errorValidationResponse("validation failed", $validator->errors());
}
$limit = $request->exists('limit') ? $request->limit : 10;
$offset = $request->exists('offset') ? $request->offset : 0;
$kaderPosyandu = User::getUser(Auth::user());
if ($kaderPosyandu->role->role == "ORANG_TUA") {
return $this->showOrangTua($request);
}
if ($kaderPosyandu->role->role == "DESA") {
return $this->showDesa($request);
}
$total = $kaderPosyandu->posyandu->anak()->count();
$anak = $kaderPosyandu->posyandu->anak();
if ($request->exists('limit')) {
$anak = $anak->limit($limit);
}
if ($request->exists('offset')) {
$anak = $anak->offset($offset);
}
$anak = $anak->get();
$laporan = [
'berat' => $kaderPosyandu->posyandu->laporanBerat(),
'tinggi' => $kaderPosyandu->posyandu->laporanTinggi(),
'lingkar_kepala' => $kaderPosyandu->posyandu->laporanLingkarKepala(),
];
$response = [
'limit' => $limit,
'offset' => $offset,
'total' => $total,
'data' => $anak,
'laporan' => $laporan,
];
return view('dashboard', $response);
}
public function showOrangTua(Request $request)
{
$validator = validator($request->all(), [
'offset' => ['integer'],
'limit' => ['integer']
]);
if ($validator->fails()) {
return $this->errorValidationResponse("validation failed", $validator->errors());
}
$limit = $request->exists('limit') ? $request->limit : 10;
$offset = $request->exists('offset') ? $request->offset : 0;
$orangTua = User::getUser(Auth::user());
$total = $orangTua->anak()->count();
$anak = $orangTua->anak();
if ($request->exists('limit')) {
$anak = $anak->limit($limit);
}
if ($request->exists('offset')) {
$anak = $anak->offset($offset);
}
$anak = $anak->get();
$response = [
'limit' => $limit,
'offset' => $offset,
'total' => $total,
'data' => $anak,
];
return view('dashboard-orang-tua', $response);
}
public function showDesa(Request $request)
{
$validator = validator($request->all(), [
'offset' => ['integer'],
'limit' => ['integer']
]);
if ($validator->fails()) {
return $this->errorValidationResponse("validation failed", $validator->errors());
}
$limit = $request->exists('limit') ? $request->limit : 10;
$offset = $request->exists('offset') ? $request->offset : 0;
$desa = User::getUser(Auth::user());
$total = $desa->desa->anak()->count();
$anak = $desa->desa->anak();
if ($request->exists('limit')) {
$anak = $anak->limit($limit);
}
if ($request->exists('offset')) {
$anak = $anak->offset($offset);
}
$anak = $anak->get();
$dataPosyandu = $desa->desa->posyandu;
$lapPosyandu = collect([]);
foreach ($dataPosyandu as $posyandu) {
$laporan = [
'berat' => $posyandu->laporanBerat($posyandu['berat_terakhir']),
'tinggi' => $posyandu->laporanTinggi($posyandu['tinggi_terakhir']),
'lingkar_kepala' => $posyandu->laporanLingkarKepala($posyandu['lingkar_kepala_terakhir']),
];
$lapPosyandu[$posyandu->nama] = $laporan;
}
$response = [
'limit' => $limit,
'offset' => $offset,
'total' => $total,
'data' => $anak,
'lap_posyandu' => $lapPosyandu,
];
return view('dashboard-desa', $response);
}
/**
* Handle an incoming registration request.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\RedirectResponse
*
* @throws \Illuminate\Validation\ValidationException
*/
public function store(Request $request)
{
$user = Auth::user();
$request->validate(
[
'nama' => ['required', 'string', 'min:3'],
'panggilan' => ['string'],
'tanggal_lahir' => ['required', 'date'],
/* 'tinggi' => ['required'], */
/* 'berat' => ['required'], */
/* 'lingkar_kepala' => ['required'], */
'nama_orang_tua' => ['required', 'string'],
'alamat' => ['string'],
'gender' => ['required', Rule::in(['LAKI_LAKI', 'PEREMPUAN'])],
'image' => ['string']
]
);
$anak = new Anak;
$anak->fill([
'nama' => $request->nama,
'panggilan' => $request->panggilan,
'tanggal_lahir' => $request->tanggal_lahir,
'alamat' => $request->alamat,
'nama_orang_tua' => $request->nama_orang_tua,
'gender' => $request->gender,
'image' => $request->image,
]);
$anak->desa()->associate($user->desa);
$anak->posyandu()->associate($user->posyandu);
$anak->save();
$anak->statistik()->create([
'tinggi' => $request->tinggi,
'berat' => $request->berat,
'lingkar_kepala' => $request->lingkar_kepala,
'z_score' => $request->z_score,
'date' => now(),
]);
$anak->push();
return redirect("/dashboard");
}
public function storeOrangTua(Request $request)
{
$user = Auth::user();
$request->validate(
[
'nama' => ['required', 'string', 'min:3'],
'panggilan' => ['string'],
'tanggal_lahir' => ['required', 'date'],
/* 'tinggi' => ['required'], */
/* 'berat' => ['required'], */
/* 'lingkar_kepala' => ['required'], */
/* 'nama_orang_tua' => ['required', 'string'], */
'alamat' => ['string'],
'gender' => ['required', Rule::in(['LAKI_LAKI', 'PEREMPUAN'])],
'image' => ['string']
]
);
$anak = new Anak;
$anak->fill([
'nama' => $request->nama,
'panggilan' => $request->panggilan,
'tanggal_lahir' => $request->tanggal_lahir,
'alamat' => $user->alamat,
'nama_orang_tua' => $user->nama,
'gender' => $request->gender,
'image' => $request->image,
]);
$anak->desa()->associate($user->desa);
$anak->posyandu()->associate($user->posyandu);
$anak->orangTua()->associate($user);
$anak->save();
$anak->statistik()->create([
'tinggi' => $request->tinggi,
'berat' => $request->berat,
'lingkar_kepala' => $request->lingkar_kepala,
'z_score' => $request->z_score,
'date' => now(),
]);
$anak->push();
return redirect("/dashboard");
}
}