Untitled
unknown
plain_text
7 months ago
12 kB
1
Indexable
Never
<?php namespace App\Http\Controllers\Api; use App\Models\AbsenceEmploye; use App\Http\Controllers\Controller; use App\Http\Requests\StoreAbsenceEmployeRequest; use App\Http\Requests\UpdateAbsenceEmployeRequest; use App\Models\AbsenceActivity; use App\Models\Activities; use App\Models\Employee; use App\Models\Field; use App\Models\FieldAbsence; use App\Models\FieldOwner; use App\Models\GroupAbsence; use App\Models\Plant; use App\Models\PlantsAbsence; use App\Models\Wages; use Carbon\Carbon; use Illuminate\Http\Request; use Illuminate\Support\Facades\Validator; use Illuminate\Support\Str; class AbsenceEmployeApiController extends Controller { public function getByAbsenceId($id) { $data = AbsenceEmploye::with([ 'getEmploye', 'fieldAbsences.field', 'groupAbsences', 'groupAbsences.absenceActivities', 'groupAbsences.plantsAbsences', 'groupAbsences.plantsAbsences.plant', ])->findOrFail($id); $groupData = $data->groupAbsences->map(function ($group) { $plantsData = $group->plantsAbsences->map(function ($plantsAbsence) { return [ 'plants_id' => $plantsAbsence->plants_id, 'plant_name' => $plantsAbsence->plant->name, ]; }); $activityData = $group->absenceActivities->map(function ($activityAbsence) { return [ 'activity_id' => $activityAbsence->id, 'activities' => $activityAbsence->activities, ]; }); return [ 'name_lahan' => $group->name, 'activity' => $activityData->toArray(), 'plants' => $plantsData->toArray(), ]; }); $fieldData = $data->fieldAbsences->map(function ($field) { return [ 'field_id' => $field->id, 'name' => $field->field->name, ]; }); $response = [ 'employee' => $data->getEmploye, 'start_work' => $data->start_work, 'end_work' => $data->end_work, 'note' => $data->note, 'date' => $data->date, 'employees_id' => $data->employees_id, 'hok' => $data->hok, 'wages' => $data->wages, 'group' => $groupData->toArray(), 'field' => $fieldData->toArray(), ]; return response()->json(['data' => $response], 200); } public function getAll() { try { $data = Employee::get(); foreach ($data as $employee) { $employee->date = Carbon::parse($employee->date)->translatedFormat('d F Y'); } return response()->json(['data' => $data], 200); } catch (\Exception $e) { return response()->json(['error' => 'Failed to retrieve data', 'message' => $e->getMessage()], 500); } } public function getById($date) { try { $absences = AbsenceEmploye::whereDate('created_at', $date)->get(); $data = []; foreach ($absences as $absence) { $absenceData = AbsenceEmploye::join('employees', 'employees.id', '=', 'absence_employes.employees_id') ->where('absence_employes.employees_id', $absence->employees_id) ->select('employees.name', 'absence_employes.*') ->orderBy('absence_employes.created_at', 'desc') ->get(); $data = array_merge($data, $absenceData->toArray()); } if (empty($data)) { return response()->json(['message' => 'No records found for the specified date'], 404); } foreach ($data as $absence) { $absence['date'] = Carbon::parse($absence['date'])->translatedFormat('d F Y'); unset($absence['activity_1'], $absence['activity_2'], $absence['activity_3'], $absence['author_id'], $absence['fields_id']); } return response()->json(['data' => $data], 200); } catch (\Exception $e) { return response()->json(['error' => 'Failed to retrieve data', 'message' => $e->getMessage()], 500); } } public function update_absen(Request $request, $id) { try { $validator = Validator::make($request->all(), [ 'date' => 'required|date', 'employees_id' => 'required|exists:employees,id', 'hok' => 'required', 'wages' => 'required|integer', ]); if ($validator->fails()) { return response()->json(['errors' => $validator->errors()], 400); } $absenceEmploye = AbsenceEmploye::find($id); if (!$absenceEmploye) { return response()->json(['error' => 'Record not found'], 404); } $absenceEmploye->update($request->all()); return response()->json(['message' => 'Record updated successfully', 'data' => $absenceEmploye], 200); } catch (\Exception $e) { return response()->json(['error' => 'Failed to retrieve data', 'message' => $e->getMessage()], 500); } } public function delete($id) { try { $absenceEmploye = AbsenceEmploye::find($id); if (!$absenceEmploye) { return response()->json(['error' => 'Record not found'], 404); } $absenceEmploye->fieldAbsences()->delete(); $absenceEmploye->delete(); return response()->json(['message' => 'Record deleted successfully'], 200); } catch (\Exception $e) { return response()->json(['error' => 'Error deleting record'], 500); } } public function store_absen(Request $request) { try { // return $request; $validator = Validator::make($request->all(), [ 'date' => 'required|date', 'hok' => 'required', 'start_work' => 'required|date_format:H:i', 'end_work' => 'required|date_format:H:i|after:start_work', 'wages' => 'required|numeric', 'note' => 'required', 'author_id' => 'required|exists:users,id', // Adjust 'users' to your actual users table 'name' => 'required|string', // 'data' => 'required|array', 'name_lahan' => 'required|array', // 'name_lahan' => 'required|integer', 'label' => 'required|array', 'label.*' => 'required|integer', 'activities' => 'required|array', 'activities.*' => 'required|string', 'plants' => 'required|array', 'plants.*' => 'required|string', ]); if (is_array($request->name_lahan) && in_array(null, $request->name_lahan, true)) { return redirect()->back()->with('error', json_encode(['message' => 'Harap isi form Pilih Lahan'])); } if ($request['hok'] === "Pilih HOK") { return redirect()->back()->with('error', json_encode(['message' => 'Harap isi form HOK'])); } if ($validator->fails()) { $errors = $validator->errors(); if ($errors->has('plants') && $validator->errors()->count() === 1) { return redirect()->back()->with('error', json_encode(['message' => 'Harap isi form jenis tanaman'])); } return redirect()->back()->with('error', json_encode(['message' => 'Harap isi form absen dengan lengkap'])); } $wages = (int) str_replace('.', '', $request['wages']); $data = [ 'date' => $request['date'], 'start_work' => $request['start_work'], 'end_work' => $request['end_work'], 'hok' => $request['hok'], 'wages' => $wages, 'note' => $request['note'], 'author_id' => $request['author_id'] ]; $employee = Employee::firstOrCreate( ['name' => $request['name']], ['name' => $request['name'], 'gender' => 'male', 'address' => null, 'author_id' => $request['author_id']] ); $data['employees_id'] = $employee->id; $data['fields_id'] = 1; $absenceEmploye = AbsenceEmploye::create($data); $name_lahans = []; foreach ($request['name_lahan'] as $key) { $name_lahans[] = Field::where('id', $key)->get(); } $form = [ 'name_lahan' => $name_lahans, 'label' => $request['label'], 'activities' => $request['activities'], 'plants' => $request['plants'], ]; foreach ($form['label'] as $index => $a) { $label = $form['label'][$index]; $plant = $form['plants'][$index]; $name_lahan = $form['name_lahan'][$index]; $names = $name_lahan->pluck('name')->toArray(); foreach ($names as $name) { $field = Field::firstOrCreate( ['name' => $name], ['name' => $name] ); } FieldOwner::firstOrCreate( ['fields_id' => $field->id], ['user_id' => $request['author_id']] ); $activities = $form['activities'][$index]; $group = GroupAbsence::create([ 'name' => 'Data #' . $label . '', 'absence_employes_id' => $absenceEmploye->id, ]); $fieldAbsence = FieldAbsence::create([ 'absence_employes_id' => $absenceEmploye->id, 'employees_id' => $employee->id, 'fields_id' => $field->id, 'group_absences_id' => $group->id, ]); $activity = Activities::firstOrCreate( ['activities' => $activities], ); foreach ($form['activities'] as $activities) { $absence_id = AbsenceActivity::create([ 'absence_employes_id' => $absenceEmploye->id, 'activities' => $activities, 'group_absences_id' => $group->id ]); } foreach ($form['plants'] as $plantss) { $slug = Str::slug($plantss); $plantModel = Plant::firstOrCreate( ['name' => $plantss], ['slug' => $slug] ); $plantModel->update(['last_update' => Carbon::now()->format('Y-m-d')]); $field_id = PlantsAbsence::create([ 'absence_employes_id' => $absenceEmploye->id, 'plants_id' => $plantModel->id, 'group_absences_id' => $group->id ]); } } return redirect()->back()->with('success', json_encode(['message' => 'Absen berhasil'])); } catch (\Exception $e) { return redirect()->back()->with('error', json_encode(['message' => 'Absen gagal'])); } } }
Leave a Comment