/home/brandsfa/.trash/app/Http/Controllers/Admin/ProfileController.php
<?php
namespace App\Http\Controllers\Admin;
use App\Contracts\Repositories\AdminRepositoryInterface;
use App\Enums\ViewPaths\Admin\Profile;
use App\Http\Controllers\BaseController;
use App\Http\Requests\Admin\AdminPasswordRequest;
use App\Http\Requests\Admin\AdminRequest;
use App\Services\AdminService;
use Brian2694\Toastr\Facades\Toastr;
use Illuminate\Contracts\View\View;
use Illuminate\Database\Eloquent\Collection;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
use Illuminate\Pagination\LengthAwarePaginator;
class ProfileController extends BaseController
{
public function __construct(
private readonly AdminRepositoryInterface $adminRepo,
private readonly AdminService $adminService,
)
{
}
public function index(?Request $request, string $type = null): View|Collection|LengthAwarePaginator|null|callable|RedirectResponse
{
return $this->getListView();
}
public function getListView():View
{
$admin = $this->adminRepo->getFirstWhere(['id'=>auth('admin')->id()]);
return view(Profile::INDEX[VIEW],compact('admin'));
}
/**
* @param string|int $id
* @return View|RedirectResponse
*/
public function getUpdateView(string|int $id):View|RedirectResponse
{
$admin = $this->adminRepo->getFirstWhere(['id' => $id]);
$shopBanner = getWebConfig('shop_banner');
return view(Profile::UPDATE[VIEW],compact('admin','shopBanner'));
}
/**
* @param AdminRequest $request
* @param string|int $id
* @return RedirectResponse
*/
public function update(AdminRequest $request, string|int $id):RedirectResponse
{
$admin = $this->adminRepo->getFirstWhere(['id' => $id]);
$this->adminRepo->update(id: $id, data: $this->adminService->getAdminDataForUpdate(request: $request, admin: $admin));
Toastr::success(translate('profile_updated_successfully'));
return redirect()->back();
}
/**
* @param AdminPasswordRequest $request
* @param string|int $id
* @return RedirectResponse
*/
public function updatePassword(AdminPasswordRequest $request , string|int $id):RedirectResponse
{
$this->adminRepo->update(id:$id,data:$this->adminService->getAdminPasswordData(request:$request));
Toastr::success(translate('admin_password_updated_successfully'));
return redirect()->back();
}
}