first commit
This commit is contained in:
271
app/Http/Controllers/AuthController.php
Normal file
271
app/Http/Controllers/AuthController.php
Normal file
@@ -0,0 +1,271 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Http\Resources\UserResource;
|
||||
use Auth;
|
||||
use Illuminate\Http\Request;
|
||||
use App\Models\User;
|
||||
use App\Traits\ApiResponseHelper;
|
||||
use App\Traits\ImageHelper;
|
||||
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
|
||||
use Illuminate\Foundation\Validation\ValidatesRequests;
|
||||
use Validator;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Illuminate\Support\Facades\Hash;
|
||||
use Illuminate\Support\Facades\Password;
|
||||
|
||||
class AuthController extends Controller
|
||||
{
|
||||
use AuthorizesRequests, ValidatesRequests;
|
||||
use ApiResponseHelper, ImageHelper;
|
||||
|
||||
public function login(Request $request)
|
||||
{
|
||||
$validator = Validator::make($request->all(), [
|
||||
'email' => ['required', 'email'],
|
||||
'password' => ['required', 'min:6'],
|
||||
'type' => ['required', 'in:super_admin,admin,waiter,client'],
|
||||
]);
|
||||
|
||||
if ($validator->fails()) {
|
||||
return $this->apiResponse(false, $validator->errors()->first(), $validator->errors());
|
||||
}
|
||||
|
||||
try {
|
||||
$user = User::where([['email', $request->email], ['type', $request->type]])->first();
|
||||
if (!$user || !Hash::check($request->password, $user->password)) {
|
||||
$message = __('messages.invalid_credentials');
|
||||
return $this->apiResponse(false, $message);
|
||||
}
|
||||
|
||||
if (!($user->status == "active")) {
|
||||
return $this->apiResponse(false, $user->status_reason);
|
||||
}
|
||||
|
||||
$token = $user->createToken($user->email)->plainTextToken;
|
||||
|
||||
$data = collect([
|
||||
'user' => new UserResource($user),
|
||||
'token' => $token
|
||||
]);
|
||||
$message = __('messages.authorized');
|
||||
return $this->apiResponse(true, $message, $data);
|
||||
} catch (\Throwable $exception) {
|
||||
return $this->apiResponse(false, $exception->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
public function register(Request $request)
|
||||
{
|
||||
|
||||
$validator = Validator::make($request->all(), [
|
||||
'name' => ['required', 'min: 3'],
|
||||
'email' => ['required', 'email', 'unique:users'],
|
||||
'password' => ['required', \Illuminate\Validation\Rules\Password::min(8)],
|
||||
'country_code' => ['required'],
|
||||
'phone' => ['required', 'min: 8', 'max:11'],
|
||||
'image' => ['nullable', 'image'],
|
||||
]);
|
||||
if ($validator->fails()) {
|
||||
return $this->apiResponse(false, $validator->errors()->first(), $validator->errors());
|
||||
}
|
||||
try {
|
||||
DB::beginTransaction();
|
||||
$user = new User();
|
||||
$user->name = $request->name;
|
||||
$user->email = strtolower($request->email);
|
||||
$user->password = Hash::make($request->password);
|
||||
$user->country_code = $request->country_code;
|
||||
$user->phone = $request->phone;
|
||||
$user->type = "client";
|
||||
$user->save();
|
||||
if ($request->image) {
|
||||
$prefix = 'profile';
|
||||
$profileImagePath = $this->uploadFile($request->image, $prefix, false);
|
||||
$user->image = $profileImagePath;
|
||||
$user->save();
|
||||
}
|
||||
DB::commit();
|
||||
$user->refresh();
|
||||
$token = $user->createToken($user->email)->plainTextToken;
|
||||
$data = collect([
|
||||
'user' => new UserResource($user),
|
||||
'token' => $token
|
||||
]);
|
||||
$message = __('messages.account_created');
|
||||
return $this->apiResponse(true, $message,$data);
|
||||
} catch (\Throwable $exception) {
|
||||
return $this->apiResponse(false, $exception->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
public function loggedInUser(Request $request)
|
||||
{
|
||||
try {
|
||||
$user = Auth::user();
|
||||
|
||||
if (!($user->status == "active")) {
|
||||
return $this->apiResponse(false, $user->status_reason);
|
||||
}
|
||||
|
||||
$token = $user->createToken($user->email)->plainTextToken;
|
||||
$data = collect([
|
||||
'user' => new UserResource($user),
|
||||
'token' => $token
|
||||
]);
|
||||
$message = __('messages.authorized');
|
||||
return $this->apiResponse(true, $message, $data);
|
||||
} catch (\Throwable $exception) {
|
||||
return $this->apiResponse(false, $exception->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
public function updatePassword(Request $request)
|
||||
{
|
||||
|
||||
$validator = Validator::make($request->all(), [
|
||||
'password' => ['required', 'min: 8'],
|
||||
'confirm_password' => ['required', 'min: 8'],
|
||||
]);
|
||||
|
||||
if ($validator->fails()) {
|
||||
return $this->apiResponse(false, $validator->errors()->first(), $validator->errors());
|
||||
}
|
||||
|
||||
try {
|
||||
$user = Auth::user();
|
||||
|
||||
if ($request->password != $request->confirm_password) {
|
||||
return $this->apiResponse(false, __('messages.passwords_not_same'));
|
||||
}
|
||||
|
||||
|
||||
|
||||
DB::beginTransaction();
|
||||
|
||||
$user->password = Hash::make($request->password);
|
||||
$user->tokens()->delete();
|
||||
$user->save();
|
||||
DB::commit();
|
||||
$message = __('messages.password_updated');
|
||||
|
||||
return $this->apiResponse(true, $message, new UserResource($user));
|
||||
} catch (\Throwable $exception) {
|
||||
return $this->apiResponse(false, $exception->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public function updateFcmToken(Request $request)
|
||||
{
|
||||
|
||||
$validator = Validator::make($request->all(), [
|
||||
'token' => ['required', 'min: 8'],
|
||||
]);
|
||||
|
||||
if ($validator->fails()) {
|
||||
return $this->apiResponse(false, $validator->errors()->first(), $validator->errors());
|
||||
}
|
||||
|
||||
try {
|
||||
$user = Auth::user();
|
||||
DB::beginTransaction();
|
||||
$user->notification_token = $request->token;
|
||||
$user->save();
|
||||
DB::commit();
|
||||
$message = __('messages.token_updated');
|
||||
|
||||
return $this->apiResponse(true, $message);
|
||||
} catch (\Throwable $exception) {
|
||||
return $this->apiResponse(false, $exception->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public function updateUser(Request $request)
|
||||
{
|
||||
$validator = Validator::make($request->all(), [
|
||||
'name' => ['sometimes', 'min: 3'],
|
||||
'email' => ['sometimes', 'email', 'unique:users'],
|
||||
'country_code' => ['sometimes'],
|
||||
'phone' => ['sometimes', 'min: 8', 'max:11'],
|
||||
'password' => ['sometimes', \Illuminate\Validation\Rules\Password::min(8)],
|
||||
'image' => ['nullable', 'image'],
|
||||
]);
|
||||
|
||||
if ($validator->fails()) {
|
||||
return $this->apiResponse(false, $validator->errors()->first(), $validator->errors());
|
||||
}
|
||||
|
||||
try {
|
||||
DB::beginTransaction();
|
||||
$user = Auth::user();
|
||||
|
||||
if ($request->name) {
|
||||
$user->name = $request->name;
|
||||
}
|
||||
|
||||
if ($request->country_code) {
|
||||
$user->country_code = $request->country_code;
|
||||
$user->phone_verified_at = null;
|
||||
}
|
||||
|
||||
if ($request->phone) {
|
||||
$user->phone = $request->phone;
|
||||
$user->phone_verified_at = null;
|
||||
}
|
||||
|
||||
if ($request->email) {
|
||||
$user->email = $request->email;
|
||||
$user->email_verified_at = null;
|
||||
}
|
||||
|
||||
$user->save();
|
||||
|
||||
if ($request->image) {
|
||||
$prefix = 'profile';
|
||||
$profileImagePath = $this->updateFile($request->image, $user->image,$prefix, false);
|
||||
$user->image = $profileImagePath;
|
||||
$user->save();
|
||||
}
|
||||
|
||||
DB::commit();
|
||||
$message = __('messages.user_updated');
|
||||
return $this->apiResponse(true, $message, );
|
||||
} catch (\Throwable $exception) {
|
||||
return $this->apiResponse(false, $exception->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
public function destroy($id)
|
||||
{
|
||||
|
||||
$user = Auth::user();
|
||||
if($id != $user->id) {
|
||||
return $this->apiResponse(false, __('messages.not_authorized'),);
|
||||
}
|
||||
|
||||
if($id == 1){
|
||||
return $this->apiResponse(false, __('messages.user_not_deletable'),);
|
||||
}else{
|
||||
//under_deletion
|
||||
try {
|
||||
DB::beginTransaction();
|
||||
$user = User::where('id',$id)->firstorfail();
|
||||
$user->status = 'under_deletion';
|
||||
$user->status_reason = __('messages.account_deletion_review');
|
||||
$user->save();
|
||||
DB::commit();
|
||||
return $this->apiResponse(true, __('messages.account_deletion_received'));
|
||||
} catch (\Throwable $exception) {
|
||||
DB::rollBack();
|
||||
return $this->apiResponse(false, $exception->getMessage());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
233
app/Http/Controllers/CategoryController.php
Normal file
233
app/Http/Controllers/CategoryController.php
Normal file
@@ -0,0 +1,233 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Models\Category;
|
||||
use App\Http\Resources\CategoryResource;
|
||||
use App\Traits\ApiResponseHelper;
|
||||
use App\Traits\ImageHelper;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Validator;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
class CategoryController extends Controller
|
||||
{
|
||||
use ApiResponseHelper, ImageHelper;
|
||||
|
||||
public function index(Request $request)
|
||||
{
|
||||
$perPage = $request->per_page ?? config('custom.paginationItem');
|
||||
$route = $request->route();
|
||||
$prefix = $route ? $route->getPrefix() : null;
|
||||
$isClient = $prefix && (str_contains($prefix, '/client') || $prefix === 'client');
|
||||
|
||||
$query = Category::orderBy('sortingIndex', 'desc');
|
||||
if ($isClient) {
|
||||
$query->where('isActive', true);
|
||||
}
|
||||
$categories = $query->paginate($perPage);
|
||||
|
||||
$data = array();
|
||||
$data['content'] = CategoryResource::collection($categories);
|
||||
$data['pagination'] = [
|
||||
'total' => $categories->total(),
|
||||
'per_page' => $categories->perPage(),
|
||||
'current_page' => $categories->currentPage(),
|
||||
'last_page' => $categories->lastPage(),
|
||||
'from' => $categories->firstItem(),
|
||||
'to' => $categories->lastItem()
|
||||
];
|
||||
return $this->apiResponse(
|
||||
true,
|
||||
__('messages.categories_retrieved'),
|
||||
$data
|
||||
);
|
||||
}
|
||||
|
||||
public function show($id)
|
||||
{
|
||||
$category = Category::find($id);
|
||||
|
||||
if (!$category) {
|
||||
return $this->apiResponse(
|
||||
false,
|
||||
__('messages.category_not_found')
|
||||
);
|
||||
}
|
||||
|
||||
return $this->apiResponse(
|
||||
true,
|
||||
__('messages.category_retrieved'),
|
||||
new CategoryResource($category)
|
||||
);
|
||||
}
|
||||
|
||||
public function store(Request $request)
|
||||
{
|
||||
$validator = Validator::make($request->all(), [
|
||||
'title.en' => ['required', 'string'],
|
||||
'title.it' => ['required', 'string'],
|
||||
'description.en' => ['nullable', 'string'],
|
||||
'description.it' => ['nullable', 'string'],
|
||||
'sortingIndex' => ['nullable', 'integer'],
|
||||
'isActive' => ['nullable', 'boolean'],
|
||||
'thumbnail' => ['nullable', 'image'],
|
||||
]);
|
||||
if ($validator->fails()) {
|
||||
return $this->apiResponse(false, $validator->errors()->first(), $validator->errors());
|
||||
}
|
||||
try {
|
||||
DB::beginTransaction();
|
||||
$category = new Category();
|
||||
$category->title = $request->title;
|
||||
$category->description = $request->description;
|
||||
$category->sortingIndex = $request->sortingIndex ?? 0;
|
||||
$category->isActive = $request->isActive ?? true;
|
||||
$category->save();
|
||||
if ($request->thumbnail) {
|
||||
$prefix = 'category';
|
||||
$thumbnailPath = $this->uploadFile($request->thumbnail, $prefix, false);
|
||||
$category->thumbnail = $thumbnailPath;
|
||||
$category->save();
|
||||
}
|
||||
DB::commit();
|
||||
$category->refresh();
|
||||
$data = new CategoryResource($category);
|
||||
$message = __('messages.category_created');
|
||||
return $this->apiResponse(true, $message, $data);
|
||||
} catch (\Throwable $exception) {
|
||||
DB::rollBack();
|
||||
return $this->apiResponse(false, $exception->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
public function update(Request $request, $id)
|
||||
{
|
||||
$validator = Validator::make($request->all(), [
|
||||
'title.en' => ['sometimes', 'string'],
|
||||
'title.it' => ['sometimes', 'string'],
|
||||
'description.en' => ['sometimes', 'string'],
|
||||
'description.it' => ['sometimes', 'string'],
|
||||
'sortingIndex' => ['sometimes', 'integer'],
|
||||
'isActive' => ['sometimes', 'boolean'],
|
||||
'thumbnail' => ['nullable', 'image'],
|
||||
]);
|
||||
if ($validator->fails()) {
|
||||
return $this->apiResponse(false, $validator->errors()->first(), $validator->errors());
|
||||
}
|
||||
try {
|
||||
DB::beginTransaction();
|
||||
$category = Category::findOrFail($id);
|
||||
if ($request->has('title')) {
|
||||
$category->title = $request->title;
|
||||
}
|
||||
if ($request->has('description')) {
|
||||
$category->description = $request->description;
|
||||
}
|
||||
if ($request->has('sortingIndex')) {
|
||||
$category->sortingIndex = $request->sortingIndex;
|
||||
}
|
||||
if ($request->has('isActive')) {
|
||||
$category->isActive = $request->isActive;
|
||||
}
|
||||
if ($request->thumbnail) {
|
||||
$prefix = 'category';
|
||||
$category->thumbnail = $this->updateFile($request->thumbnail, $category->thumbnail, $prefix, false);
|
||||
}
|
||||
$category->save();
|
||||
DB::commit();
|
||||
$category->refresh();
|
||||
$data = new CategoryResource($category);
|
||||
$message = __('messages.category_updated');
|
||||
return $this->apiResponse(true, $message, $data);
|
||||
} catch (\Throwable $exception) {
|
||||
DB::rollBack();
|
||||
return $this->apiResponse(false, $exception->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
public function destroy($id)
|
||||
{
|
||||
$category = Category::find($id);
|
||||
|
||||
if (!$category) {
|
||||
return $this->apiResponse(
|
||||
false,
|
||||
__('messages.category_not_found')
|
||||
);
|
||||
}
|
||||
|
||||
$category->delete();
|
||||
return $this->apiResponse(
|
||||
true,
|
||||
__('messages.category_deleted')
|
||||
);
|
||||
}
|
||||
|
||||
public function getAllData(Request $request)
|
||||
{
|
||||
$categories = \App\Models\Category::with('menus')->get();
|
||||
$data = \App\Http\Resources\AdminCategoryWithMenusResource::collection($categories);
|
||||
return $this->apiResponse(true, __('messages.categories_retrieved'), $data);
|
||||
}
|
||||
|
||||
public function importAllData()
|
||||
{
|
||||
try {
|
||||
$jsonPath = base_path('demo/bella_menu.json');
|
||||
if (!file_exists($jsonPath)) {
|
||||
return $this->apiResponse(false, 'bella_menu.json not found');
|
||||
}
|
||||
$json = file_get_contents($jsonPath);
|
||||
$categories = json_decode($json, true);
|
||||
if (!is_array($categories)) {
|
||||
return $this->apiResponse(false, 'Invalid JSON structure');
|
||||
}
|
||||
\DB::beginTransaction();
|
||||
foreach ($categories as $cat) {
|
||||
// Check if category exists by both en and it title
|
||||
$existingCategory = \App\Models\Category::whereJsonContains('title->en', $cat['title']['en'])
|
||||
->orWhereJsonContains('title->it', $cat['title']['it'])
|
||||
->first();
|
||||
if ($existingCategory) {
|
||||
$category = $existingCategory;
|
||||
} else {
|
||||
$category = new \App\Models\Category();
|
||||
$category->title = $cat['title'];
|
||||
$category->description = $cat['description'];
|
||||
$category->sortingIndex = 0;
|
||||
$category->isActive = $cat['isActive'] ?? true;
|
||||
$category->thumbnail = $cat['thumbnail'] ?? null;
|
||||
$category->save();
|
||||
}
|
||||
if (!empty($cat['menus']) && is_array($cat['menus'])) {
|
||||
foreach ($cat['menus'] as $item) {
|
||||
// Check if menu exists by both en and it title for this category
|
||||
$exists = \App\Models\Menu::where('category_id', $category->id)
|
||||
->where(function($query) use ($item) {
|
||||
$query->whereJsonContains('title->en', $item['title']['en'])
|
||||
->orWhereJsonContains('title->it', $item['title']['it']);
|
||||
})->exists();
|
||||
if ($exists) {
|
||||
continue;
|
||||
}
|
||||
$menu = new \App\Models\Menu();
|
||||
$menu->menu_id = $item['menu_id'] ?? null;
|
||||
$menu->title = $item['title'];
|
||||
$menu->description = $item['description'];
|
||||
$menu->price = $item['price'];
|
||||
$menu->image = $item['image'] ?? null;
|
||||
$menu->isActive = $item['isActive'] ?? true;
|
||||
$menu->category_id = $category->id;
|
||||
$menu->save();
|
||||
}
|
||||
}
|
||||
}
|
||||
\DB::commit();
|
||||
return $this->apiResponse(true, 'All data imported successfully');
|
||||
} catch (\Throwable $e) {
|
||||
\DB::rollBack();
|
||||
return $this->apiResponse(false, $e->getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
13
app/Http/Controllers/Controller.php
Normal file
13
app/Http/Controllers/Controller.php
Normal file
@@ -0,0 +1,13 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
|
||||
use Illuminate\Foundation\Bus\DispatchesJobs;
|
||||
use Illuminate\Foundation\Validation\ValidatesRequests;
|
||||
use Illuminate\Routing\Controller as BaseController;
|
||||
|
||||
class Controller extends BaseController
|
||||
{
|
||||
use AuthorizesRequests, DispatchesJobs, ValidatesRequests;
|
||||
}
|
||||
254
app/Http/Controllers/MenuController.php
Normal file
254
app/Http/Controllers/MenuController.php
Normal file
@@ -0,0 +1,254 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Models\Menu;
|
||||
use App\Models\Category;
|
||||
use Illuminate\Http\Request;
|
||||
use App\Http\Resources\MenuResource;
|
||||
use App\Http\Resources\CategoryResource;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Validator;
|
||||
use App\Traits\ApiResponseHelper;
|
||||
use App\Traits\ImageHelper;
|
||||
|
||||
class MenuController extends Controller
|
||||
{
|
||||
use ApiResponseHelper, ImageHelper;
|
||||
|
||||
public function index(Request $request)
|
||||
{
|
||||
$validator = Validator::make($request->all(), [
|
||||
'category_id' => ['nullable', 'exists:categories,id'],
|
||||
'per_page' => ['nullable', 'integer', 'min:1'],
|
||||
]);
|
||||
if ($validator->fails()) {
|
||||
return $this->apiResponse(false, $validator->errors()->first(), $validator->errors());
|
||||
}
|
||||
|
||||
$query = Menu::query();
|
||||
$route = $request->route();
|
||||
$prefix = $route ? $route->getPrefix() : null;
|
||||
$isClient = $prefix && (str_contains($prefix, '/client') || $prefix === 'client');
|
||||
|
||||
if ($isClient && $request->has('category_id')) {
|
||||
$category = \App\Models\Category::find($request->category_id);
|
||||
if (!$category || !$category->isActive) {
|
||||
return $this->apiResponse(false, __('messages.category_not_active'));
|
||||
}
|
||||
}
|
||||
|
||||
if ($isClient) {
|
||||
$query->where('isActive', true);
|
||||
}
|
||||
$query->orderBy('menu_id', 'asc');
|
||||
if ($request->has('category_id')) {
|
||||
$query->where('category_id', $request->category_id);
|
||||
}
|
||||
|
||||
$perPage = $request->per_page ?? config('custom.paginationItem');
|
||||
$menus = $query->paginate($perPage);
|
||||
|
||||
$data = [
|
||||
'content' => MenuResource::collection($menus),
|
||||
'pagination' => [
|
||||
'total' => $menus->total(),
|
||||
'per_page' => $menus->perPage(),
|
||||
'current_page' => $menus->currentPage(),
|
||||
'last_page' => $menus->lastPage(),
|
||||
'from' => $menus->firstItem(),
|
||||
'to' => $menus->lastItem(),
|
||||
]
|
||||
];
|
||||
return $this->apiResponse(true, __('messages.menus_fetched'), $data);
|
||||
}
|
||||
|
||||
public function store(Request $request)
|
||||
{
|
||||
$validator = Validator::make($request->all(), [
|
||||
'title.en' => ['required', 'string'],
|
||||
'title.it' => ['required', 'string'],
|
||||
'description.en' => ['nullable', 'string'],
|
||||
'description.it' => ['nullable', 'string'],
|
||||
'menu_id' => ['nullable', 'integer'],
|
||||
'price' => ['required', 'numeric'],
|
||||
'image' => ['nullable', 'image'],
|
||||
'isActive' => ['nullable', 'boolean'],
|
||||
'category_id' => ['required', 'exists:categories,id'],
|
||||
]);
|
||||
if ($validator->fails()) {
|
||||
return $this->apiResponse(false, $validator->errors()->first(), $validator->errors());
|
||||
}
|
||||
try {
|
||||
DB::beginTransaction();
|
||||
$menu = new Menu();
|
||||
$menu->title = $request->title;
|
||||
$menu->description = $request->description;
|
||||
$menu->menu_id = $request->menu_id;
|
||||
$menu->price = $request->price;
|
||||
$menu->isActive = $request->isActive ?? true;
|
||||
$menu->category_id = $request->category_id;
|
||||
$menu->save();
|
||||
|
||||
if ($request->has('menu_id')) {
|
||||
$menu->menu_id = $request->menu_id;
|
||||
}else{
|
||||
$menu->menu_id = $menu->id;
|
||||
}
|
||||
|
||||
if ($request->image) {
|
||||
$prefix = 'menu';
|
||||
$imagePath = $this->uploadFile($request->image, $prefix, false);
|
||||
$menu->image = $imagePath;
|
||||
$menu->save();
|
||||
}
|
||||
DB::commit();
|
||||
$menu->refresh();
|
||||
$data = new MenuResource($menu);
|
||||
$message = __('messages.menu_created');
|
||||
return $this->apiResponse(true, $message, $data);
|
||||
} catch (\Throwable $exception) {
|
||||
DB::rollBack();
|
||||
return $this->apiResponse(false, $exception->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public function showMcp($id)
|
||||
{
|
||||
$menu = Menu::where('menu_id', $id)->firstOrFail();
|
||||
|
||||
if (!$menu) {
|
||||
return $this->apiResponse(false, __('messages.menu_not_found'));
|
||||
}
|
||||
return $this->apiResponse(true, __('messages.menu_fetched'), new MenuResource($menu));
|
||||
}
|
||||
|
||||
|
||||
public function updateMcp(Request $request, $id)
|
||||
{
|
||||
$validator = Validator::make($request->all(), [
|
||||
'title.en' => ['sometimes', 'string'],
|
||||
'title.it' => ['sometimes', 'string'],
|
||||
'description.en' => ['sometimes', 'string'],
|
||||
'description.it' => ['sometimes', 'string'],
|
||||
'price' => ['sometimes', 'numeric'],
|
||||
'image' => ['nullable', 'image'],
|
||||
]);
|
||||
if ($validator->fails()) {
|
||||
return $this->apiResponse(false, $validator->errors()->first(), $validator->errors());
|
||||
}
|
||||
try {
|
||||
DB::beginTransaction();
|
||||
$menu = Menu::where('menu_id', $id)->firstOrFail();
|
||||
if ($request->has('title')) {
|
||||
$menu->title = $request->title;
|
||||
}
|
||||
if ($request->has('description')) {
|
||||
$menu->description = $request->description;
|
||||
}
|
||||
if ($request->has('price')) {
|
||||
$menu->price = $request->price;
|
||||
}
|
||||
|
||||
if ($request->image) {
|
||||
$prefix = 'menu';
|
||||
$menu->image = $this->updateFile($request->image, $menu->image, $prefix, false);
|
||||
}
|
||||
$menu->save();
|
||||
DB::commit();
|
||||
$menu->refresh();
|
||||
$data = new MenuResource($menu);
|
||||
$message = __('messages.menu_updated');
|
||||
return $this->apiResponse(true, $message, $data);
|
||||
} catch (\Throwable $exception) {
|
||||
DB::rollBack();
|
||||
return $this->apiResponse(false, $exception->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public function show($id)
|
||||
{
|
||||
$menu = Menu::find($id);
|
||||
if (!$menu) {
|
||||
return $this->apiResponse(false, __('messages.menu_not_found'));
|
||||
}
|
||||
return $this->apiResponse(true, __('messages.menu_fetched'), new MenuResource($menu));
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
public function update(Request $request, $id)
|
||||
{
|
||||
$validator = Validator::make($request->all(), [
|
||||
'title.en' => ['sometimes', 'string'],
|
||||
'title.it' => ['sometimes', 'string'],
|
||||
'description.en' => ['sometimes', 'string'],
|
||||
'description.it' => ['sometimes', 'string'],
|
||||
'menu_id' => ['sometimes', 'integer'],
|
||||
'price' => ['sometimes', 'numeric'],
|
||||
'image' => ['nullable', 'image'],
|
||||
'isActive' => ['sometimes', 'boolean'],
|
||||
'category_id' => ['sometimes', 'exists:categories,id'],
|
||||
]);
|
||||
if ($validator->fails()) {
|
||||
return $this->apiResponse(false, $validator->errors()->first(), $validator->errors());
|
||||
}
|
||||
try {
|
||||
DB::beginTransaction();
|
||||
$menu = Menu::findOrFail($id);
|
||||
if ($request->has('title')) {
|
||||
$menu->title = $request->title;
|
||||
}
|
||||
if ($request->has('description')) {
|
||||
$menu->description = $request->description;
|
||||
}
|
||||
if ($request->has('menu_id')) {
|
||||
$menu->menu_id = $request->menu_id;
|
||||
}
|
||||
if ($request->has('price')) {
|
||||
$menu->price = $request->price;
|
||||
}
|
||||
if ($request->has('isActive')) {
|
||||
$menu->isActive = $request->isActive;
|
||||
}
|
||||
if ($request->has('category_id')) {
|
||||
$menu->category_id = $request->category_id;
|
||||
}
|
||||
if ($request->image) {
|
||||
$prefix = 'menu';
|
||||
$menu->image = $this->updateFile($request->image, $menu->image, $prefix, false);
|
||||
}
|
||||
$menu->save();
|
||||
DB::commit();
|
||||
$menu->refresh();
|
||||
$data = new MenuResource($menu);
|
||||
$message = __('messages.menu_updated');
|
||||
return $this->apiResponse(true, $message, $data);
|
||||
} catch (\Throwable $exception) {
|
||||
DB::rollBack();
|
||||
return $this->apiResponse(false, $exception->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
public function destroy($id)
|
||||
{
|
||||
try {
|
||||
DB::beginTransaction();
|
||||
$menu = Menu::find($id);
|
||||
if (!$menu) {
|
||||
return $this->apiResponse(false, __('messages.menu_not_found'));
|
||||
}
|
||||
if ($menu->image) {
|
||||
$this->deleteFile($menu->image);
|
||||
}
|
||||
$menu->delete();
|
||||
DB::commit();
|
||||
return $this->apiResponse(true, __('messages.menu_deleted'));
|
||||
} catch (\Throwable $exception) {
|
||||
return $this->apiResponse(false, $exception->getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
24
app/Http/Controllers/SettingController.php
Normal file
24
app/Http/Controllers/SettingController.php
Normal file
@@ -0,0 +1,24 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
use App\Models\Setting;
|
||||
use App\Traits\ApiResponseHelper;
|
||||
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class SettingController extends Controller
|
||||
{
|
||||
use ApiResponseHelper;
|
||||
//
|
||||
public function index(Request $request)
|
||||
{
|
||||
try {
|
||||
$settings = Setting::latest()->get();
|
||||
$message = 'Success';
|
||||
return $this->apiResponse(true, $message, $settings);
|
||||
} catch (\Throwable $exception) {
|
||||
return $this->apiResponse(false, $exception->getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
68
app/Http/Controllers/SetupController.php
Normal file
68
app/Http/Controllers/SetupController.php
Normal file
@@ -0,0 +1,68 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
use App\Traits\ApiResponseHelper;
|
||||
use Artisan;
|
||||
|
||||
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class SetupController extends Controller
|
||||
{
|
||||
use ApiResponseHelper;
|
||||
//
|
||||
|
||||
public function migrateFreshSeed(Request $request)
|
||||
{
|
||||
try{
|
||||
Artisan::call("migrate:fresh --seed");
|
||||
return $this->apiResponse(true, "Fresh Database migrated + seeded successfully");
|
||||
}catch(e){
|
||||
return $this->apiResponse(false, e->getMessage());
|
||||
}
|
||||
|
||||
}
|
||||
public function migrateFresh(Request $request)
|
||||
{
|
||||
try{
|
||||
Artisan::call("migrate:fresh");
|
||||
return $this->apiResponse(true, "Fresh Database migrated successfully");
|
||||
}catch(e){
|
||||
return $this->apiResponse(false, e->getMessage());
|
||||
}
|
||||
|
||||
}
|
||||
public function migrate(Request $request)
|
||||
{
|
||||
try{
|
||||
Artisan::call("migrate");
|
||||
return $this->apiResponse(true, "Database migrated successfully");
|
||||
}catch(e){
|
||||
return $this->apiResponse(false, e->getMessage());
|
||||
}
|
||||
|
||||
}
|
||||
public function seed(Request $request)
|
||||
{
|
||||
try{
|
||||
Artisan::call("db:seed");
|
||||
return $this->apiResponse(true, "Data Seeding success");
|
||||
}catch(e){
|
||||
return $this->apiResponse(false, e->getMessage());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public function clearCache(Request $request)
|
||||
{
|
||||
try{
|
||||
Artisan::call("config:clear");
|
||||
Artisan::call("cache:clear");
|
||||
return $this->apiResponse(true, "Cache cleared successfully");
|
||||
}catch(e){
|
||||
return $this->apiResponse(false, e->getMessage());
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user