Files
sccs_laravel/app/Http/Controllers/ManagerController.php
2025-11-04 16:23:40 +05:00

173 lines
5.5 KiB
PHP

<?php
namespace App\Http\Controllers;
use App\Models\User;
use App\Traits\ImageHelper;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Log;
use Illuminate\Validation\Rules\Password;
class ManagerController extends Controller
{
use ImageHelper;
public function create()
{
$pageConfigs = [
'pageHeader' => true,
'showMenu' => true
];
$breadcrumbs = [['link' => '/admin/admin/'.auth()->user()->id.'/edit', 'name' => 'Manager'], ['name' => 'Add']];
return view('content.admin.managers.create', [
'pageConfigs' => $pageConfigs,
'breadcrumbs' => $breadcrumbs,
]);
}
public function store(Request $request)
{
$request->validate([
'fullName' => ['required', 'min: 3'],
'fatherName' => ['nullable', 'min: 3'],
'email' => ['required', 'email', 'unique:users'],
'phone' => ['required', 'unique:users'],
'password' => ['required', 'confirmed', Password::min(8)],
'cnic' => ['nullable','integer','digits:13'],
'dob' => ['nullable'],
'address' => ['nullable'],
'gender' => ['required'],
'notes' => ['nullable'],
'profileImage' => ['nullable', 'image'],
]);
try {
DB::beginTransaction();
$user = new User();
$user->name = $request->fullName;
$user->father_name = $request->fatherName;
$user->email = $request->email;
$user->role = 'MANAGER';
$user->phone = $request->phone;
$user->dob = $request->dob;
$user->gender = $request->gender;
$user->cnic = $request->cnic;
$user->address = $request->address;
$user->notes = $request->notes;
$user->password = Hash::make($request->password);
$user->email_verified_at = now();
$user->save();
if ($request->profileImage) {
$prefix = 'profile';
$profileImagePath = $this->uploadFile($request->profileImage, $prefix, false);
$user->picture = $profileImagePath;
$user->save();
}
DB::commit();
return redirect()->route('admin.edit',auth()->user()->id)->with([
'success' => "Manager created successfully"
]);
} catch (\Throwable $exception) {
DB::rollBack();
report($exception);
Log::info($exception);
return redirect()->back()->with([
'error' => $exception->getMessage()
]);
}
}
public function edit(User $manager)
{
$pageConfigs = [
'pageHeader' => true,
'showMenu' => true
];
$breadcrumbs = [['link' => '/admin/admin/'.auth()->id().'/edit', 'name' => 'Manager'], ['name' => 'Edit']];
return view('content.admin.managers.edit', [
'pageConfigs' => $pageConfigs,
'breadcrumbs' => $breadcrumbs,
'user' => $manager,
]);
}
public function update(Request $request, User $manager)
{
$request->validate([
'fullName' => ['required', 'min: 3'],
'fatherName' => ['required', 'min: 3'],
'email' => ['required', 'email'],
'phone' => ['required'],
'password' => ['nullable', 'confirmed', Password::min(8)],
'cnic' => ['nullable','integer','digits:13'],
'dob' => ['nullable'],
'address' => ['nullable'],
'gender' => ['required'],
'notes' => ['nullable'],
'profileImage' => ['nullable', 'image'],
]);
try {
DB::beginTransaction();
$manager->name = $request->fullName;
$manager->father_name = $request->fatherName;
$manager->email = $request->email;
$manager->phone = $request->phone;
$manager->dob = $request->dob;
$manager->gender = $request->gender;
$manager->cnic = $request->cnic;
if ($request->password){
$manager->password = Hash::make($request->password);
}
if ($request->hasFile('profileImage')) {
$prefix = 'profileImage';
$bannerImagePath = $this->updateFile($request->profileImage, $manager->picture, $prefix, false);
$manager->picture = $bannerImagePath;
}
$manager->update();
DB::commit();
return redirect()->back()->with([
'success' => "Manager updated successfully"
]);
} catch (\Throwable $exception) {
DB::rollBack();
return redirect()->back()->with([
'error' => $exception->getMessage()
]);
}
}
public function destroy(User $manager)
{
try {
DB::beginTransaction();
if ($manager->picture){
$this->deleteFile($manager->picture);
}
$manager->delete();
DB::commit();
return redirect()->back()->with([
'success' => "Manager deleted successfully"
]);
} catch (\Throwable $exception) {
DB::rollBack();
return redirect()->back()->with([
'error' => $exception->getMessage()
]);
}
}
}