EVOLUTION-NINJA
Edit File: EmployeeController.php
<?php namespace App\Http\Controllers; use App\Models\employee; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; class EmployeeController extends Controller { public function AddEmployees(Request $request) { $validated = $request->validate([ 'name' => 'required|string', 'email' => 'required|email|unique:users,email', 'dob' => 'nullable|date', 'doj' => 'nullable|date', 'contact' => 'nullable|string', 'qualification' => 'nullable|string', 'gender' => 'nullable|string', 'experience' => 'nullable|string', 'address' => 'nullable|string', 'level_of_education' => 'nullable|string', 'salary'=>'nullable|string', 'nationalId'=>'nullable|string', 'role'=>'required', 'picture' => 'nullable|file|image|max:2048', ]); $role = $validated['role']; DB::beginTransaction(); try { if ($request->hasFile('picture')) { $path = $request->file('picture')->store('employee', 'public'); $validated['picture'] = $path; } $lastEmployee = DB::table('employees') ->orderBy('employee_id', 'desc') ->first(); if ($lastEmployee) { $lastNumber = (int) substr($lastEmployee->employee_id, 7); $nextNumber = $lastNumber + 1; } else { $nextNumber = 1; } $year = date('Y'); $EmployeeId = 'EMP' . $year . str_pad($nextNumber, 5, '0', STR_PAD_LEFT); $Employee = employee::create([ 'name' => $validated['name'], 'email' => $validated['email'], 'employee_id' => $EmployeeId, 'employee_role' => $validated['role'], 'DOB' => $validated['dob'], 'DOJ' => $validated['doj'], 'contact' => $validated['contact'], 'salary' => $validated['salary'], 'qualification' => $validated['qualification'], 'gender' => $validated['gender'], 'experience' => $validated['experience'], 'address' => $validated['address'], // 'level_of_education' => $validated['level_of_education'], 'nationality' => $validated['nationalId'], 'role' => $validated['role'], ]); $defaultPassword = bcrypt('Employee@123'); if($role == 2 || $role == 5 || $role== 6){ DB::table('users')->insert([ 'name' => $validated['name'], 'email' => $validated['email'], 'password' => $defaultPassword, 'role' => $validated['role'], 'created_at' => now(), 'updated_at' => now(), ]); } DB::commit(); return response()->json([ 'message' => 'Employee and login created successfully', 'Employee' => $Employee, 'login' => [ 'email' => $validated['email'], 'default_password' => 'Employee@123' ] ], 201); } catch (\Exception $e) { DB::rollBack(); return response()->json([ 'message' => 'Failed to add Employee: ' . $e->getMessage() ], 500); } } public function EmployeesList() { $employees = employee::join('roles', 'employees.employee_role', '=', 'roles.role') ->where('employee_role', 2) ->orderBy('employees.id', 'desc') ->select('employees.*', 'roles.role_name') ->get(); return response()->json([ 'Employee' => $employees ]); } public function EmployeesUpdate(Request $request, $id) { $validated = $request->validate([ 'name' => 'required|string', 'email' => 'required|email', 'role' => 'required|string', 'dob' => 'nullable|date', 'doj' => 'nullable|date', 'contact' => 'nullable|string', 'qualification' => 'nullable|string', 'gender' => 'nullable|string|in:Male,Female,Other', 'experience' => 'nullable|string', 'address' => 'nullable|string', 'salary' => 'nullable|string', 'nationalId' => 'nullable|string', 'picture' => 'nullable|file|image|max:2048', ]); try { $employee = Employee::findOrFail($id); // ✅ If picture uploaded → update file if ($request->hasFile('picture')) { $path = $request->file('picture')->store('employee', 'public'); $validated['picture'] = $path; } $employee->update([ 'name' => $validated['name'], 'email' => $validated['email'], 'employee_role' => $validated['role'], 'DOB' => $validated['dob'] ?? null, 'DOJ' => $validated['doj'] ?? null, 'contact' => $validated['contact'] ?? null, 'salary' => $validated['salary'] ?? null, 'qualification' => $validated['qualification'] ?? null, 'gender' => $validated['gender'] ?? null, 'experience' => $validated['experience'] ?? null, 'address' => $validated['address'] ?? null, 'nationality' => $request->input('nationalId') ?? null, 'picture' => $validated['picture'] ?? $employee->picture, ]); return response()->json([ 'message' => 'Employee updated successfully', 'employee' => $employee, ], 200); } catch (\Exception $e) { return response()->json([ 'message' => 'Failed to update employee: ' . $e->getMessage(), ], 500); } } public function EmployeesDelete($id) { $student = employee::findOrFail($id); $student->delete(); return response()->json(['message' => 'Student deleted successfully']); } public function nextEmployeesId() { $lastEmployee = employee::orderBy('id', 'desc')->first(); if ($lastEmployee && $lastEmployee->employee_id) { $lastSerial = intval(substr($lastEmployee->employee_id, -4)); } else { $lastSerial = 0; } $nextSerial = $lastSerial + 1; $nextSerialStr = str_pad($nextSerial, 4, '0', STR_PAD_LEFT); $year = now()->year; $nextEmployeeId = "EMP{$year}{$nextSerialStr}"; return response()->json([ 'nextEmployeeId' => $nextEmployeeId, ]); } }