web-dinda-private/database/seeders/PresensiSeeder.php

225 lines
12 KiB
PHP

<?php
namespace Database\Seeders;
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;
class PresensiSeeder extends Seeder
{
public function run(): void
{
$karyawanIds = range(1, 10); // 10 karyawan
$tanggalList = [
'2025-04-27',
'2025-04-28',
'2025-04-29',
'2025-04-30',
'2025-05-01',
'2025-05-02',
'2025-05-03',
'2025-05-05',
'2025-05-06',
'2025-05-07',
'2025-05-10',
'2025-05-11',
'2025-05-12',
'2025-05-13',
'2025-05-17',
'2025-05-18',
'2025-05-19',
'2025-05-20',
'2025-05-21',
'2025-05-22',
'2025-05-26',
'2025-05-27',
'2025-05-28',
'2025-05-29',
'2025-05-30',
'2025-06-03',
'2025-06-04',
'2025-06-05',
'2025-06-06',
'2025-06-07',
'2025-06-08',
'2025-06-09',
];
$kloterMapping = [
'2025-04-27' => 1,
'2025-04-28' => 1,
'2025-04-29' => 1,
'2025-04-30' => 1,
'2025-05-01' => 2,
'2025-05-02' => 2,
'2025-05-03' => 2,
'2025-05-05' => 2,
'2025-05-06' => 2,
'2025-05-07' => 2,
'2025-05-10' => 3,
'2025-05-11' => 3,
'2025-05-12' => 3,
'2025-05-13' => 3,
'2025-05-17' => 3,
'2025-05-18' => 3,
'2025-05-19' => 4,
'2025-05-20' => 4,
'2025-05-21' => 4,
'2025-05-22' => 4,
'2025-05-26' => 4,
'2025-05-27' => 4,
'2025-05-28' => 4,
'2025-05-29' => 5,
'2025-05-30' => 5,
'2025-06-03' => 5,
'2025-06-04' => 5,
'2025-06-05' => 5,
'2025-06-06' => 5,
'2025-06-07' => 6,
'2025-06-08' => 6,
'2025-06-09' => 6,
];
$presensiData = [];
foreach ($tanggalList as $tanggal) {
foreach ($karyawanIds as $karyawanId) {
// Simulasikan absensi sebagian orang di tanggal tertentu (optional)
if (
($tanggal === '2025-04-27' && $karyawanId == rand(1,10)) ||
($tanggal === '2025-04-27' && $karyawanId == rand(1,10)) ||
($tanggal === '2025-04-27' && $karyawanId == rand(1,10)) ||
($tanggal === '2025-04-27' && $karyawanId == rand(1,10)) ||
($tanggal === '2025-04-28' && $karyawanId == rand(1,10)) ||
($tanggal === '2025-04-28' && $karyawanId == rand(1,10)) ||
($tanggal === '2025-04-28' && $karyawanId == rand(1,10)) ||
($tanggal === '2025-04-28' && $karyawanId == rand(1,10)) ||
($tanggal === '2025-04-29' && $karyawanId == rand(1,10)) ||
($tanggal === '2025-04-29' && $karyawanId == rand(1,10)) ||
($tanggal === '2025-04-29' && $karyawanId == rand(1,10)) ||
($tanggal === '2025-04-29' && $karyawanId == rand(1,10)) ||
($tanggal === '2025-04-30' && $karyawanId == rand(1,10)) ||
($tanggal === '2025-04-30' && $karyawanId == rand(1,10)) ||
($tanggal === '2025-04-30' && $karyawanId == rand(1,10)) ||
($tanggal === '2025-04-30' && $karyawanId == rand(1,10)) ||
($tanggal === '2025-05-01' && $karyawanId == rand(1,10)) ||
($tanggal === '2025-05-01' && $karyawanId == rand(1,10)) ||
($tanggal === '2025-05-01' && $karyawanId == rand(1,10)) ||
($tanggal === '2025-05-01' && $karyawanId == rand(1,10)) ||
($tanggal === '2025-05-01' && $karyawanId == rand(1,10)) ||
($tanggal === '2025-05-02' && $karyawanId == rand(1,10)) ||
($tanggal === '2025-05-02' && $karyawanId == rand(1,10)) ||
($tanggal === '2025-05-02' && $karyawanId == rand(1,10)) ||
($tanggal === '2025-05-02' && $karyawanId == rand(1,10)) ||
($tanggal === '2025-05-03' && $karyawanId == rand(1,10)) ||
($tanggal === '2025-05-03' && $karyawanId == rand(1,10)) ||
($tanggal === '2025-05-03' && $karyawanId == rand(1,10)) ||
($tanggal === '2025-05-03' && $karyawanId == rand(1,10)) ||
($tanggal === '2025-05-05' && $karyawanId == rand(1,10)) ||
($tanggal === '2025-05-05' && $karyawanId == rand(1,10)) ||
($tanggal === '2025-05-05' && $karyawanId == rand(1,10)) ||
($tanggal === '2025-05-05' && $karyawanId == rand(1,10)) ||
($tanggal === '2025-05-05' && $karyawanId == rand(1,10)) ||
($tanggal === '2025-05-06' && $karyawanId == rand(1,10)) ||
($tanggal === '2025-05-06' && $karyawanId == rand(1,10)) ||
($tanggal === '2025-05-06' && $karyawanId == rand(1,10)) ||
($tanggal === '2025-05-06' && $karyawanId == rand(1,10)) ||
($tanggal === '2025-05-06' && $karyawanId == rand(1,10)) ||
($tanggal === '2025-05-06' && $karyawanId == rand(1,10)) ||
($tanggal === '2025-05-07' && $karyawanId == rand(1,10)) ||
($tanggal === '2025-05-07' && $karyawanId == rand(1,10)) ||
($tanggal === '2025-05-07' && $karyawanId == rand(1,10)) ||
($tanggal === '2025-05-10' && $karyawanId == rand(1,10)) ||
($tanggal === '2025-05-10' && $karyawanId == rand(1,10)) ||
($tanggal === '2025-05-10' && $karyawanId == rand(1,10)) ||
($tanggal === '2025-05-11' && $karyawanId == rand(1,10)) ||
($tanggal === '2025-05-11' && $karyawanId == rand(1,10)) ||
($tanggal === '2025-05-11' && $karyawanId == rand(1,10)) ||
($tanggal === '2025-05-12' && $karyawanId == rand(1,10)) ||
($tanggal === '2025-05-12' && $karyawanId == rand(1,10)) ||
($tanggal === '2025-05-12' && $karyawanId == rand(1,10)) ||
($tanggal === '2025-05-13' && $karyawanId == rand(1,10)) ||
($tanggal === '2025-05-13' && $karyawanId == rand(1,10)) ||
($tanggal === '2025-05-13' && $karyawanId == rand(1,10)) ||
($tanggal === '2025-05-17' && $karyawanId == rand(1,10)) ||
($tanggal === '2025-05-17' && $karyawanId == rand(1,10)) ||
($tanggal === '2025-05-17' && $karyawanId == rand(1,10)) ||
($tanggal === '2025-05-18' && $karyawanId == rand(1,10)) ||
($tanggal === '2025-05-18' && $karyawanId == rand(1,10)) ||
($tanggal === '2025-05-18' && $karyawanId == rand(1,10)) ||
($tanggal === '2025-05-19' && $karyawanId == rand(1,10)) ||
($tanggal === '2025-05-19' && $karyawanId == rand(1,10)) ||
($tanggal === '2025-05-19' && $karyawanId == rand(1,10)) ||
($tanggal === '2025-05-20' && $karyawanId == rand(1,10)) ||
($tanggal === '2025-05-20' && $karyawanId == rand(1,10)) ||
($tanggal === '2025-05-20' && $karyawanId == rand(1,10)) ||
($tanggal === '2025-05-21' && $karyawanId == rand(1,10)) ||
($tanggal === '2025-05-21' && $karyawanId == rand(1,10)) ||
($tanggal === '2025-05-21' && $karyawanId == rand(1,10)) ||
($tanggal === '2025-05-22' && $karyawanId == rand(1,10)) ||
($tanggal === '2025-05-22' && $karyawanId == rand(1,10)) ||
($tanggal === '2025-05-22' && $karyawanId == rand(1,10)) ||
($tanggal === '2025-05-22' && $karyawanId == rand(1,10)) ||
($tanggal === '2025-05-20' && $karyawanId == rand(1,10)) ||
($tanggal === '2025-05-20' && $karyawanId == rand(1,10)) ||
($tanggal === '2025-05-20' && $karyawanId == rand(1,10)) ||
($tanggal === '2025-05-26' && $karyawanId == rand(1,10)) ||
($tanggal === '2025-05-26' && $karyawanId == rand(1,10)) ||
($tanggal === '2025-05-26' && $karyawanId == rand(1,10)) ||
($tanggal === '2025-05-27' && $karyawanId == rand(1,10)) ||
($tanggal === '2025-05-27' && $karyawanId == rand(1,10)) ||
($tanggal === '2025-05-27' && $karyawanId == rand(1,10)) ||
($tanggal === '2025-05-28' && $karyawanId == rand(1,10)) ||
($tanggal === '2025-05-28' && $karyawanId == rand(1,10)) ||
($tanggal === '2025-05-28' && $karyawanId == rand(1,10)) ||
($tanggal === '2025-05-29' && $karyawanId == rand(1,10)) ||
($tanggal === '2025-05-29' && $karyawanId == rand(1,10)) ||
($tanggal === '2025-05-29' && $karyawanId == rand(1,10)) ||
($tanggal === '2025-05-30' && $karyawanId == rand(1,10)) ||
($tanggal === '2025-05-30' && $karyawanId == rand(1,10)) ||
($tanggal === '2025-05-30' && $karyawanId == rand(1,10)) ||
($tanggal === '2025-05-30' && $karyawanId == rand(1,10)) ||
($tanggal === '2025-05-30' && $karyawanId == rand(1,10)) ||
($tanggal === '2025-06-03' && $karyawanId == rand(1,10)) ||
($tanggal === '2025-06-03' && $karyawanId == rand(1,10)) ||
($tanggal === '2025-06-04' && $karyawanId == rand(1,10)) ||
($tanggal === '2025-06-04' && $karyawanId == rand(1,10)) ||
($tanggal === '2025-06-05' && $karyawanId == rand(1,10)) ||
($tanggal === '2025-06-05' && $karyawanId == rand(1,10)) ||
($tanggal === '2025-06-05' && $karyawanId == rand(1,10)) ||
($tanggal === '2025-06-06' && $karyawanId == rand(1,10)) ||
($tanggal === '2025-06-06' && $karyawanId == rand(1,10)) ||
($tanggal === '2025-06-07' && $karyawanId == rand(1,10)) ||
($tanggal === '2025-06-08' && $karyawanId == rand(1,10)) ||
($tanggal === '2025-06-09' && $karyawanId == rand(1,10))
) {
continue; // skip, tidak hadir
}
$presensiData[] = [
'karyawan_id' => $karyawanId,
'kloter_id' => $kloterMapping[$tanggal],
'tanggal' => $tanggal,
'jam_masuk' => $this->getJamMasuk($karyawanId),
'jam_pulang' => $this->getJamPulang($karyawanId),
'created_at' => now(),
'updated_at' => now(),
];
}
}
DB::table('presensis')->insert($presensiData);
}
// Bisa diatur berdasarkan ID untuk variasi jam masuk dan pulang
private function getJamMasuk(int $karyawanId): string
{
return in_array($karyawanId, [1, 6]) ? '08:40:32' : '05:19:13';
}
private function getJamPulang(int $karyawanId): string
{
return in_array($karyawanId, [1, 6]) ? '17:12:28' : '18:24:42';
}
}