<?php
namespace App\Http\Controllers;
use App\Helpers\WaHelpers;
use App\Models\Jadwal;
use App\Models\JadwalHarian;
use App\Models\KegiatanHarian;
use App\Models\Petugas;
use App\Models\Siswa;
use App\Models\TargetCapaian;
use App\Models\User;
use Carbon\Carbon;
use DateTime;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\DB;
class JadwalController extends Controller
{
/**
* Display a listing of the resource.
*/
protected $title = 'Jadwal Kegiatan';
protected $url = 'jadwal';
public function index()
{
//
$data['title'] = $this->title;
$data['url'] = $this->url;
if (Auth::user()->hasRole('Admin'))
{
if(isset($_GET['siswa_id'])) {
$data['menu'] = "jadwal kegiatan";
$JadwalHarian = JadwalHarian::where('user_id', $_GET['siswa_id'])->count();
if($JadwalHarian <= 0) {
$hari = ['Senin', 'Selasa', 'Rabu', 'Kamis', 'Jumat', 'Sabtu', 'Minggu'];
foreach($hari as $index => $a) {
JadwalHarian::create([
'user_id' => $_GET['siswa_id'],
'hari_ke' => $index + 1,
'hari' => $a,
]);
}
}
$data['hari'] = JadwalHarian::where('user_id', $_GET['siswa_id'])->get();
if(isset($_GET['hari'])) {
$day = $_GET['hari'];
} else {
$day = date('N');
}
$data['day'] = $day;
$hariPilihan = JadwalHarian::where('user_id', $_GET['siswa_id'])->where('hari_ke', $day)->first();
// dd($hariPilihan);
$data['jadwal'] = KegiatanHarian::where('jadwal_harian_id', $hariPilihan->id)->get();
// $jadwalKegiatan = JadwalHarian::with('jenisKegiatan')->where('user_id', $_GET['siswa_id'])->get();
// $data['jadwal'] = Jadwal::where('user_id', $_GET['siswa_id'])->WhereNull("tes_tryout_cat_online_id")->get();
return view('pages.jadwal.index', $data);
} else {
$data['siswa'] = User::whereHas('siswa')->get();
$data['menu'] = "siswa";
return view('pages.jadwal.index', $data);
}
// Tindakan untuk pengguna dengan role 'Orang Tua'
} else {
if (Auth::user()->hasRole('Petugas')) {
$data['menu'] = "jadwal kegiatan";
$data['hari'] = DB::table('jadwal_harians')->select('hari', 'hari_ke',DB::raw('count(*) as total'))->groupBy('hari', 'hari_ke')->get();
if(isset($_GET['hari'])) {
$day = $_GET['hari'];
} else {
$day = date('N');
}
$data['day'] = $day;
$hariPilihan = DB::table('jadwal_harians')->select('hari', 'hari_ke', DB::raw('count(*) as total'))->where('hari_ke', $day)->groupBy('hari', 'hari_ke')->first();
// dd($hariPilihan);
// $data['jadwal'] = KegiatanHarian::where('jadwal_harian_id', $hariPilihan->id)->get();
$petugas = Petugas::where('user_id', Auth::user()->id)->first();
// $data['jadwal'] = KegiatanHarian::whereHas('jadwal_harians', function($query, $hariPilihan) {
// $query->where('hari_ke', $hariPilihan->hari_ke);
// })->get();
$data['jadwal'] = KegiatanHarian::whereHas('jadwal_harians', function($query) use ($hariPilihan) {
$query->where('hari_ke', $hariPilihan->hari_ke);
})->where('petugas_id', $petugas->id)->get();
// dd($data['jadwal']);
// $data['jadwal'] = Jadwal::where('petugas_id', $petugas->id)->get();
} else {
$data['menu'] = "jadwal kegiatan";
$siswa = Siswa::where('user_id', Auth::user()->id)->first();
if($siswa->status != 'aktif') {
return redirect()->back()->with('error', 'Halaman ini tidak dapat diakses karena data anda masih belum dikonfirmasi!.');
}
$JadwalHarian = JadwalHarian::where('user_id', Auth::user()->id)->count();
if($JadwalHarian <= 0) {
$hari = ['Senin', 'Selasa', 'Rabu', 'Kamis', 'Jumat', 'Sabtu', 'Minggu'];
foreach($hari as $index => $a) {
JadwalHarian::create([
'user_id' => Auth::user()->id,
'hari_ke' => $index + 1,
'hari' => $a,
]);
}
}
$data['hari'] = JadwalHarian::where('user_id', Auth::user()->id)->get();
if(isset($_GET['hari'])) {
$day = $_GET['hari'];
} else {
$day = date('N');
}
$data['day'] = $day;
$hariPilihan = JadwalHarian::where('user_id', $siswa->user->id)->where('hari_ke', $day)->first();
$data['jadwal'] = KegiatanHarian::where('jadwal_harian_id', $hariPilihan->id)->get();
}
return view('pages.jadwal.index', $data);
}
}
/**
* Show the form for creating a new resource.
*/
public function create()
{
//
$siswa = Siswa::where('user_id', Auth::user()->id)->first();
if($siswa->status != 'aktif') {
return redirect()->back()->with('error', 'Halaman ini tidak dapat diakses karena data anda masih belum dikonfirmasi!.');
}
$data['title'] = $this->title;
$data['url'] = $this->url;
$data['pengawas'] = Petugas::where('user_id', '<>',1)->get();
$data['hari'] = JadwalHarian::where('user_id', Auth::user()->id)->get();
if(isset($_GET['hari'])) {
$day = $_GET['hari'];
} else {
$day = date('N');
}
$data['day'] = $day;
$hariPilihan = JadwalHarian::where('user_id', $siswa->user->id)->where('hari_ke', $day)->first();
return view('pages.jadwal.create', $data);
}
/**
* Store a newly created resource in storage.
*/
public function store(Request $request)
{
$request->validate([
'jadwal_harian_id' => 'required',
'kegiatan' => 'required',
'location' => 'required',
'all_day' => 'required',
'start' => 'required',
'ends' => 'required',
'petugas_id' => 'required',
]);
// $start = Carbon::parse($request->start);
// $end = Carbon::parse($request->ends);
// $StartTime12hr = date('h:i:s A', strtotime($request->start));
// $StartTime24hr = Carbon::parse($StartTime12hr)->format('H:i:s');
// $EndTime12hr = date('h:i:s A', strtotime($request->ends));
// $EndTime24hr = Carbon::parse($EndTime12hr)->format('H:i:s');
// $jadwal = Jadwal::create([
// 'user_id' => Auth::user()->id,
// 'kegiatan' => $request->kegiatan,
// 'location' => $request->location,
// 'all_day' => $request->all_day,
// 'start' => $request->start,
// 'ends' => $request->ends,
// 'petugas_id' => $request->petugas_id,
// 'notes' => $request->notes,
// 'target' => 0,
// ]);
// while ($start <= $end) {
// // $dates[] = $start->format('Y-m-d'); // Format date as 'Y-m-d'
// TargetCapaian::create([
// 'jadwal_id' => $jadwal->id,
// 'tanggal' => $start->format('Y-m-d'),
// 'waktu_awal' => $StartTime24hr,
// 'waktu_akhir' => $EndTime24hr,
// 'capaian' => 0,
// ]);
// $start->addDay(); // Move to the next day
// }
// $start = Carbon::parse($request->start);
// $end = Carbon::parse($request->ends);
$jadwals = KegiatanHarian::create([
'jadwal_harian_id' => $request->jadwal_harian_id,
'kegiatan' => $request->kegiatan,
'location' => $request->location,
'start' => $request->start,
'ends' => $request->ends,
'notes' => $request->notes,
'petugas_id' => $request->petugas_id,
]);
$hariInggris = ["empty" ,"Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"];
$jadwalHarian = JadwalHarian::find($request->jadwal_harian_id);
// dd($request->jadwal_harian_id);
// Ambil tanggal dari minggu ini
$hari = $jadwalHarian->hari_ke;
$tanggal = strtotime($hariInggris[$hari] . " this week");
// Jika tanggal sudah lewat dari hari ini, ambil minggu depan
if ($tanggal < strtotime('today')) {
$tanggal = strtotime($hariInggris[$hari] . " next week");
}
$user = Auth::user();
$kegiatan = Jadwal::create([
'user_id' => $user->id,
'kegiatan' => $request->kegiatan,
'location' => $request->location,
'all_day' => 0,
'start' => date('Y-m-d h:i:s', strtotime($request->start)),
'ends' => date('Y-m-d h:i:s', strtotime($request->ends)),
'petugas_id' => $request->petugas_id,
'notes' => $request->notes,
'kegiatan_harian_id' => $jadwals->id,
'target' => 0,
]);
$apalah = TargetCapaian::create([
'jadwal_id' => $kegiatan->id,
'tanggal' => date("Y-m-d", $tanggal),
'waktu_awal' => $request->start,
'waktu_akhir' => $request->ends,
'feedback_orang_tua' => '-',
'capaian' => 0,
// 'waktu_alarm' => date("Y-m-d", $tanggal),
]);
$siswa = Siswa::where('user_id', Auth::user()->id)->first();
$pesan = "Siswa anda bernama ".$siswa->nama_siswa." menambah kegiatan baru bernama ".$request->kegiatan. "berlokasi di ".$request->location." mulai dari ".$request->start." sampai ".$request->ends.".";
WaHelpers::sendWa($siswa->no_hp_orang_tua , $pesan);
$petugas = Petugas::find($request->petugas_id);
$pesan = "Seorang siswa bernama ".$siswa->nama_siswa." dengan nomor identitas ".$siswa->no_identitas." memilih anda sebagai pengawas dalam kegiatan ".$request->kegiatan. "berlokasi di ".$request->location." mulai dari ".$request->start." sampai ".$request->ends.".";
WaHelpers::sendWa($petugas->no_hp , $pesan);
return redirect($this->url)->with('success', 'Jadwal kegiatan berhasil ditambahkan.');
}
/**
* Display the specified resource.
*/
public function show(string $id)
{
$data['title'] = $this->title;
$data['url'] = $this->url;
$data['jadwal'] = Jadwal::find($id);
$target = TargetCapaian::where('jadwal_id',$id)->first();
$jadwal = Jadwal::where('id', $target->jadwal_id)->first();
$kegiatan = KegiatanHarian::where('id', $jadwal->kegiatan_harian_id)->first();
$hariInggris = ["empty" ,"Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"];
$jadwalHarian = JadwalHarian::find($kegiatan->jadwal_harian_id);
// Ambil tanggal dari minggu ini
$hari = $jadwalHarian->hari_ke;
$tanggal = strtotime($hariInggris[$hari] . " this week");
// // Jika tanggal sudah lewat dari hari ini, ambil minggu depan
// if ($tanggal < time()) {
// $tanggal = strtotime($hariInggris[$hari] . " next week");
// }
// $tanggal = strtotime($hariInggris[$hari] . " next week");
$checkTargetCapaian = TargetCapaian::where('tanggal', date('Y-m-d', $tanggal))->where('jadwal_id', $id)->count();
if($checkTargetCapaian == 0) {
$apalah = TargetCapaian::create([
'jadwal_id' => $target->jadwal_id,
'tanggal' => date("Y-m-d", $tanggal),
'waktu_awal' => $target->waktu_awal,
'waktu_akhir' => $target->waktu_akhir,
'feedback_orang_tua' => '-',
'capaian' => 0,
// 'waktu_alarm' => date("Y-m-d")." 21:24:00",
]);
}
$data['menu'] = "jadwal kegiatan";
// dd($data['jadwal']->target);
return view('pages.jadwal.show', $data);
}
/**
* Show the form for editing the specified resource.
*/
public function edit(string $id)
{
$siswa = Siswa::where('user_id', Auth::user()->id)->first();
if($siswa->status != 'aktif') {
return redirect()->back()->with('error', 'Halaman ini tidak dapat diakses karena data anda masih belum dikonfirmasi!.');
}
$data['title'] = $this->title;
$data['url'] = $this->url;
$data['pengawas'] = Petugas::where('user_id', '<>',1)->get();
$data['jadwal'] = KegiatanHarian::find($id);
$data['hari'] = JadwalHarian::where('user_id', Auth::user()->id)->get();
if(isset($_GET['hari'])) {
$day = $_GET['hari'];
} else {
$day = date('N');
}
$data['day'] = $data['jadwal']->jadwal_harian_id;
$hariPilihan = JadwalHarian::where('user_id', $siswa->user->id)->where('hari_ke', $day)->first();
return view('pages.jadwal.edit', $data);
}
/**
* Update the specified resource in storage.
*/
public function update(Request $request, string $id)
{
if(isset($_GET['target'])) {
TargetCapaian::where('id', $_GET['target'])->update([
'capaian' => 1,
]);
$jadwal = Jadwal::find($id);
$target = TargetCapaian::find($_GET['target']);
$siswa = Siswa::where('user_id', $jadwal->user_id)->first();
$pointAdd = Siswa::find($siswa->id);
$pointAdd->point = $pointAdd->point + 10;
$pointAdd->save();
$pesan = "Siswa anda bernama ".$siswa->nama_siswa." untuk kegiatan bernama ".$jadwal->kegiatan. "berlokasi di ".$jadwal->location." pada tanggal ".date('d, F Y', strtotime($target->tanggal))." targetnya telah tercapai.";
WaHelpers::sendWa($siswa->no_hp_orang_tua , $pesan);
$petugas = Petugas::find($jadwal->petugas_id);
$pesan = "Seorang siswa bernama ".$siswa->nama_siswa." dengan nomor identitas ".$siswa->no_identitas." memilih anda sebagai pengawas dalam kegiatan ".$jadwal->kegiatan. "berlokasi di ".$jadwal->location." pada tanggal ".date('d, F Y', strtotime($target->tanggal))." targetnya telah tercapai.";
WaHelpers::sendWa($petugas->no_hp , $pesan);
if(isset($_GET['kelender'])) {
return response()->json([
'target' => $target,
'status' => true,
// 'jadwal' => $jadwal,
]);
} else {
return redirect()->back()->with('success', 'Target anda telah tercapai pada Jadwal kegiatan ini! (Point 10+)');
}
} else {
$request->validate([
'jadwal_harian_id' => 'required',
'kegiatan' => 'required',
'location' => 'required',
'all_day' => 'required',
'start' => 'required',
'ends' => 'required',
'petugas_id' => 'required',
]);
// $jadwals = KegiatanHarian::where('id', $id)->update([
// 'jadwal_harian_id' => $request->jadwal_harian_id,
// 'kegiatan' => $request->kegiatan,
// 'location' => $request->location,
// 'start' => $request->start,
// 'ends' => $request->ends,
// 'notes' => $request->notes,
// 'petugas_id' => $request->petugas_id,
// ]);
// $jadwal = Jadwal::where('kegiatan_harian_id', $id)->first();
// Jadwal::where('id', $id)->update([
// 'user_id' => Auth::user()->id,
// 'kegiatan' => $request->kegiatan,
// 'location' => $request->location,
// 'all_day' => $request->all_day,
// 'start' => $request->start,
// 'ends' => $request->ends,
// 'petugas_id' => $request->petugas_id,
// 'notes' => $request->notes,
// ]);
// $start = Carbon::parse($request->start);
// $end = Carbon::parse($request->ends);
// $StartTime12hr = date('h:i:s A', strtotime($request->start));
// $StartTime24hr = Carbon::parse($StartTime12hr)->format('H:i:s');
// $EndTime12hr = date('h:i:s A', strtotime($request->ends));
// $EndTime24hr = Carbon::parse($EndTime12hr)->format('H:i:s');
// // dd(strtotime($request->start));
// if(strtotime($request->start) != strtotime($jadwal->start) || strtotime($request->ends) != strtotime($jadwal->ends)) {
// TargetCapaian::where('jadwal_id', $jadwal->id)->delete();
// while ($start <= $end) {
// // $dates[] = $start->format('Y-m-d'); // Format date as 'Y-m-d'
// TargetCapaian::create([
// 'jadwal_id' => $jadwal->id,
// 'tanggal' => $start->format('Y-m-d'),
// 'waktu_awal' => $StartTime24hr,
// 'waktu_akhir' => $EndTime24hr,
// 'capaian' => 0,
// ]);
// $start->addDay(); // Move to the next day
// }
// }
$jadwals = KegiatanHarian::where('id', $id)->update([
'jadwal_harian_id' => $request->jadwal_harian_id,
'kegiatan' => $request->kegiatan,
'location' => $request->location,
'start' => $request->start,
'ends' => $request->ends,
'notes' => $request->notes,
'petugas_id' => $request->petugas_id,
]);
$kegiatanHarian = KegiatanHarian::find($id);
$user = Auth::user();
$checkJadwal = Jadwal::where('kegiatan_harian_id', $kegiatanHarian->id)->first();
if($checkJadwal) {
// $kegiatan = Jadwal::where('kegiatan_harian_id', $kegiatanHarian->id)->update([
// 'kegiatan' => $request->kegiatan,
// 'location' => $request->location,
// 'start' => date('Y-m-d h:i:s', strtotime($request->start)),
// 'ends' => date('Y-m-d h:i:s', strtotime($request->ends)),
// 'notes' => $request->notes,
// 'petugas_id' => $request->petugas_id,
// ]);
$kegiatan = Jadwal::where('kegiatan_harian_id', $kegiatanHarian->id)->first();
} else {
$kegiatan = Jadwal::create([
'user_id' => $user->id,
'kegiatan' => $request->kegiatan,
'location' => $request->location,
'all_day' => 0,
'start' => date('Y-m-d h:i:s', strtotime($request->start)),
'ends' => date('Y-m-d h:i:s', strtotime($request->ends)),
'petugas_id' => $request->petugas_id,
'notes' => $request->notes,
'kegiatan_harian_id' => $kegiatanHarian->id,
'target' => 0,
]);
}
// $StartTime12hr = date('h:i:s A', strtotime($request->start));
// $StartTime24hr = Carbon::parse($StartTime12hr)->format('H:i:s');
// $EndTime12hr = date('h:i:s A', strtotime($request->ends));
// $EndTime24hr = Carbon::parse($EndTime12hr)->format('H:i:s');
$hariInggris = ["empty" ,"Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"];
$jadwalHarian = JadwalHarian::find($request->jadwal_harian_id);
// Ambil tanggal dari minggu ini
$hari = $jadwalHarian->hari_ke;
$tanggal = strtotime($hariInggris[$hari] . " this week");
// Jika tanggal sudah lewat dari hari ini, ambil minggu depan
if ($tanggal < strtotime('today')) {
$tanggal = strtotime($hariInggris[$hari] . " next week");
}
// dd(date("Y-m-d", $tanggal));
$checkAplah = TargetCapaian::where('jadwal_id', $kegiatan->id)->orderBy('created_at', 'DESC')->first();
if($checkAplah) {
TargetCapaian::where('id', $checkAplah->id)->update([
'jadwal_id' => $kegiatan->id,
'tanggal' => date("Y-m-d", $tanggal),
'waktu_awal' => date("Y-m-d", $tanggal)." ".$request->start,
'waktu_akhir' => date("Y-m-d", $tanggal)." ".$request->ends,
'feedback_orang_tua' => '-',
'capaian' => 0,
// 'waktu_alarm' => date("Y-m-d", $tanggal)." ".date('h:i:s',strtotime($request->start)),
]);
Jadwal::where('id', $checkAplah->jadwal_id)->update([
'kegiatan' => $request->kegiatan,
'location' => $request->location,
'start' => date("Y-m-d", $tanggal)." ".$request->start,
'ends' => date("Y-m-d", $tanggal)." ".$request->ends,
'notes' => $request->notes,
'petugas_id' => $request->petugas_id,
]);
$apalah = $checkAplah;
// $edit = TargetCapaian::find($checkAplah->id);
// $edit->waktu_alarm = date("Y-m-d", $tanggal)." ".$apalah->waktu_awal;
// $edit->save();
} else {
$apalah = TargetCapaian::create([
'jadwal_id' => $kegiatan->id,
'tanggal' => date("Y-m-d", $tanggal),
'waktu_awal' => date("Y-m-d", $tanggal)." ".$request->start,
'waktu_akhir' => date("Y-m-d", $tanggal)." ".$request->ends,
'feedback_orang_tua' => '-',
'capaian' => 0,
// 'waktu_alarm' => date("Y-m-d", $tanggal)." ".date('h:i:s',strtotime($request->start)),
]);
// $edit = TargetCapaian::find($apalah->id);
// $edit->waktu_alarm = date("Y-m-d", $tanggal)." ".$apalah->waktu_awal;
// $edit->save();
}
$jadwal = $kegiatan;
$siswa = Siswa::where('user_id', Auth::user()->id)->first();
$pesan = "Siswa anda bernama ".$siswa->nama_siswa." melakukan perubahan kegiatan bernama ".$jadwal->kegiatan." menjadi ".$request->kegiatan. "berlokasi di ".$request->location." mulai dari ".$request->start." sampai ".$request->ends.".";
WaHelpers::sendWa($siswa->no_hp_orang_tua , $pesan);
if($request->petugas_id != $jadwal->petugas_id) {
$petugasLama = Petugas::find($jadwal->petugas_id);
$petugasBaru = Petugas::find($request->petugas_id);
$pesan = "Seorang siswa bernama ".$siswa->nama_siswa." dengan nomor identitas ".$siswa->no_identitas." mengganti pengawas yang awalnya adalah ".$petugasLama->nama_petugas." menjadi ".$petugasBaru->nama_petugas." sebagai pengawas dalam kegiatan ".$request->kegiatan. "berlokasi di ".$request->location." mulai dari ".$request->start." sampai ".$request->ends.".";
WaHelpers::sendWa($petugasLama->no_hp , $pesan);
$pesan = "Seorang siswa bernama ".$siswa->nama_siswa." dengan nomor identitas ".$siswa->no_identitas." memilih anda sebagai pengawas dalam kegiatan ".$request->kegiatan. "berlokasi di ".$request->location." mulai dari ".$request->start." sampai ".$request->ends.".";
WaHelpers::sendWa($petugasBaru->no_hp , $pesan);
}
return redirect($this->url)->with('success', 'Jadwal kegiatan berhasil diubah.');
}
}
/**
* Remove the specified resource from storage.
*/
public function destroy(string $id)
{
//
$jadwal = KegiatanHarian::find($id);
$siswa = Siswa::where('user_id', Auth::user()->id)->first();
$pesan = "Siswa anda bernama ".$siswa->nama_siswa." Menghapus kegiatan yang bernama ".$jadwal->kegiatan. "berlokasi di ".$jadwal->location." mulai dari ".$jadwal->start." sampai ".$jadwal->ends.".";
WaHelpers::sendWa($siswa->no_hp_orang_tua , $pesan);
$petugas = Petugas::find($jadwal->petugas_id);
$pesan = "Seorang siswa bernama ".$siswa->nama_siswa." yang anda awasi telah menghapus kegiatan yang bernama ".$jadwal->kegiatan. "berlokasi di ".$jadwal->location." mulai dari ".$jadwal->start." sampai ".$jadwal->ends.".";
WaHelpers::sendWa($petugas->no_hp , $pesan);
TargetCapaian::where('jadwal_id', $id)->delete();
$jadwal->delete();
return redirect($this->url)->with('success', 'Jadwal kegiatan berhasil dihapus.');
}
}
Anons79 File Manager Version 1.0, Coded By Anons79
Email: [email protected]