purityselect/app/Http/Controllers/Admin/Api/AdminController.php
2024-10-25 01:05:27 +05:00

123 lines
3.9 KiB
PHP

<?php
namespace App\Http\Controllers\Admin\Api;
use App\Http\Controllers\Controller;
use App\Models\Admin;
use App\Models\Permission;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Storage;
use Illuminate\Routing\UrlGenerator;
use Illuminate\Support\Facades\Auth;
use Yajra\DataTables\DataTables;
use Illuminate\Auth\Access\AuthorizationException;
class AdminController extends Controller
{
protected $user;
protected $url;
public function __construct(UrlGenerator $url)
{
$this->url = $url;
$this->user = Auth::guard('admin')->user();
}
public function index(){
try {
$this->authorizeForUser($this->user,'list', new Admin);
$adminData = Admin::all();
foreach($adminData as $admin)
{
$admin->image_path = $this->url->to('/storage/profile_pictures/' . $admin->image_path);
}
return DataTables::of($adminData)->make(true);
} catch (AuthorizationException $e) {
return $e->getMessage();
}
}
public function getRoles()
{
$roles = Permission::select('id','role_name as role')->get();
return response()->json([
'data' => $roles
], 201);
}
public function saveAdmin(Request $request)
{
$this->authorize('add', new Admin);
$data =[
"name" => $request->get('name'),
"email" => $request->get('email'),
"password" => Hash::make($request->input('password')),
"last_name" => $request->get('last_name'),
"phone_no" => $request->get('phone_no'),
"role_id" => $request->get('role_id')
];
$admin = Admin::create($data);
$image = $request->get('profile_pic');
$fileName = 'profile-' . time();
$logo = base64_decode($image);
$ext = (explode('/', finfo_buffer(finfo_open(), $logo, FILEINFO_MIME_TYPE))[1]);
$imageName = $fileName . '.' . $ext;
Storage::disk('local')->put("/public/profile_pictures/" . $imageName, $logo);
$admin->image_path = $imageName;
$admin->save();
return response()->json([
'success' => "Data Saved! "
], 201);
}
public function editAdmin($id)
{
$adminData = Admin::find($id);
if($adminData->image_path)
$adminData->image_path = $this->url->to('/storage/profile_pictures/' . $adminData->image_path);
else
$adminData->image_path='';
return response()->json([
'data' => $adminData
], 201);
}
public function updateAdmin($id,Request $request)
{
$admin = Admin::find($id);
$admin->name = $request->get('name');
// $admin->email = $request->get('email');
if($request->input('password'))
$admin->password = Hash::make($request->input('password'));
$admin->last_name = $request->get('last_name');
$admin->phone_no = $request->get('phone_no');
$admin->role_id = $request->get('role_id');
if($request->get('profile_pic'))
{
$image = $request->get('profile_pic');
$fileName = 'profile-' . time();
$logo = base64_decode($image);
$ext = (explode('/', finfo_buffer(finfo_open(), $logo, FILEINFO_MIME_TYPE))[1]);
$imageName = $fileName . '.' . $ext;
Storage::disk('local')->put("/public/profile_pictures/" . $imageName, $logo);
$admin->image_path = $imageName;
}
$admin->save();
return response()->json([
'data' => $admin
], 201);
}
public function detailAdmin($id)
{
$admin = Admin::find($id);
$admin->image_path = $this->url->to('/storage/profile_pictures/' . $admin->image_path);
return response()->json([
'data' => $admin
], 201);
}
}