443 lines
16 KiB
PHP
443 lines
16 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\Admin;
|
|
|
|
use App\Exports\RestaurantExport;
|
|
use App\Exports\RestaurantExportSelected;
|
|
use App\Http\Controllers\Controller;
|
|
use App\Models\ManageRestaurant;
|
|
use App\Models\OperatingHour;
|
|
use Illuminate\Http\Request;
|
|
use Exception;
|
|
use App\Helpers\onesignalhelper;
|
|
use App\Models\IamPrincipal;
|
|
use App\Models\ManageState;
|
|
use App\Models\RestaurantClosedHour;
|
|
use App\Models\RestaurantTimeInterval;
|
|
use Illuminate\Support\Facades\Log;
|
|
use Maatwebsite\Excel\Facades\Excel;
|
|
use Illuminate\Support\Facades\DB;
|
|
|
|
class ManageRestrauntController extends Controller
|
|
{
|
|
/*
|
|
Created By : Sayli Raut
|
|
Created at : 29 May 2024
|
|
Use : To Get Restaurant Page.
|
|
*/
|
|
public function index(Request $request)
|
|
{
|
|
$activeQuery = $request->query('active');
|
|
if ($activeQuery == 1) {
|
|
|
|
$restaurant = ManageRestaurant::with('state')->where('is_active', 1)->latest()->get();
|
|
} else if ($activeQuery == 0 && $activeQuery != null) {
|
|
$restaurant = ManageRestaurant::with('state')->where('is_active', 0)->latest()->get();
|
|
} else {
|
|
$restaurant = ManageRestaurant::with('state')->latest()->get();
|
|
}
|
|
return view('Admin.pages.manage_restaurants.manage_restaurants', compact('restaurant'));
|
|
}
|
|
|
|
|
|
/*
|
|
Created By : Sayli Raut
|
|
Created at : 29 May 2024
|
|
Use : To Add Restaurant Page.
|
|
*/
|
|
public function add()
|
|
{
|
|
$state = ManageState::with('timeInterval')->where('is_active', 1)->get()->toArray();
|
|
return view('Admin.pages.manage_restaurants.add_restaurant', compact('state'));
|
|
}
|
|
|
|
|
|
/*
|
|
Created By : Sayli Raut
|
|
Created at : 29 May 2024
|
|
Use : To store resturant form.
|
|
*/
|
|
public function store_restaurant(Request $request)
|
|
{
|
|
try {
|
|
DB::beginTransaction();
|
|
|
|
// Handling image upload
|
|
if ($request->hasFile('image')) {
|
|
$image = $request->file('image');
|
|
$imagePath = saveSingleImageWithoutCrop($image, 'restaurant_images');
|
|
} else {
|
|
$imagePath = $request->image;
|
|
}
|
|
|
|
// Creating the restaurant
|
|
$restaurant = new ManageRestaurant();
|
|
$restaurant->name = $request->input('name');
|
|
$restaurant->image = $imagePath;
|
|
$restaurant->restaurant_id = $request->input('rest_id');
|
|
$restaurant->address = $request->input('address');
|
|
$restaurant->bio = $request->input('bio');
|
|
$restaurant->latitude = $request->input('latitude');
|
|
$restaurant->longtitude = $request->input('longitude');
|
|
$restaurant->exclusion = $request->input('exclusion');
|
|
$restaurant->phone_number = $request->input('phone_number');
|
|
$restaurant->state_xid = $request->input('state_xid');
|
|
$restaurant->try_on_1 = $request->input('try_on_1');
|
|
$restaurant->try_on_2 = $request->input('try_on_2');
|
|
$restaurant->try_on_3 = $request->input('try_on_3');
|
|
$restaurant->try_on_4 = $request->input('try_on_4');
|
|
$restaurant->save();
|
|
|
|
// Storing operating hours
|
|
foreach ($request->input('operating_hours') as $day => $hours) {
|
|
OperatingHour::create([
|
|
'manage_restaurant_xid' => $restaurant->id,
|
|
'day_of_week' => $day,
|
|
'start_time' => $hours['start_time'],
|
|
'end_time' => $hours['end_time']
|
|
]);
|
|
}
|
|
|
|
// Storing restaurant time interval
|
|
$restTimeInterval = new RestaurantTimeInterval();
|
|
$restTimeInterval->manage_restaurants_xid = $restaurant->id;
|
|
$restTimeInterval->time_hours = $request->timeHours;
|
|
$restTimeInterval->time_interval = $request->timeInterval;
|
|
$restTimeInterval->quantity = $request->timeQuantity;
|
|
$restTimeInterval->save();
|
|
|
|
// Storing closed restaurant date and time
|
|
if ($request->has('closed_date')) {
|
|
$ClosedTime = new RestaurantClosedHour();
|
|
$ClosedTime->restaurant_id = $restaurant->id;
|
|
$ClosedTime->day = $request->closed_date;
|
|
$ClosedTime->start_time = $request->closed_start_time;
|
|
$ClosedTime->end_time = $request->closed_end_time;
|
|
$ClosedTime->save();
|
|
}
|
|
|
|
// Sending notifications
|
|
$imagePath = ListingImageUrl('restaurant_images', $restaurant->image);
|
|
$allCustomerOneSignalIds = IamPrincipal::select('id', 'one_signal_player_id')->where('is_active', 1)->where('notification_status', 1)->where('principal_type_xid', 3)->get();
|
|
$title = "New " . $restaurant->name . " is added";
|
|
$message = "New Restaurant is Now Live.";
|
|
$content_type = 'New Restaurant Added';
|
|
$imageUrl = $imagePath;
|
|
|
|
foreach ($allCustomerOneSignalIds as $customerIdItem) {
|
|
if ($customerIdItem->one_signal_player_id) {
|
|
onesignalhelper::sendNotificationApi(
|
|
$customerIdItem->one_signal_player_id,
|
|
$title,
|
|
$message,
|
|
$content_type,
|
|
$imageUrl,
|
|
$id = null
|
|
);
|
|
}
|
|
onesignalhelper::StoreNotificationDetails($customerIdItem->id, $content_type, $title, $imagePath);
|
|
}
|
|
|
|
DB::commit();
|
|
return jsonResponseWithSuccessMessage(__('success.save_data'));
|
|
} catch (Exception $e) {
|
|
DB::rollBack();
|
|
Log::error("Restaurant Store Page Load Failed: " . $e->getMessage());
|
|
return jsonResponseWithErrorMessage(__('auth.something_went_wrong'), 500);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
Created By : Sayli Raut
|
|
Created at : 29 May 2024
|
|
Use : To edit Restaurant Page.
|
|
*/
|
|
public function edit_restaurant(Request $request, $id)
|
|
{
|
|
try {
|
|
$operating_hours = OperatingHour::where('manage_restaurant_xid', $id)->get()->keyBy('day_of_week');
|
|
$restaurantItem = ManageRestaurant::with('timeInterval')->where('id', $id)->first();
|
|
$restaurantClosedTime = RestaurantClosedHour::with('restaurant')->where('restaurant_id', $id)->first();
|
|
$timeInterval = $restaurantItem->timeInterval->first();
|
|
|
|
$state = ManageState::where('is_active', 1)->get()->toArray();
|
|
$restaurantItem['image'] = ListingImageUrl('restaurant_images', $restaurantItem['image']);
|
|
return view(
|
|
'Admin.pages.manage_restaurants.edit_restaurant',
|
|
compact(
|
|
'restaurantItem',
|
|
|
|
'operating_hours',
|
|
'state',
|
|
'timeInterval',
|
|
'restaurantClosedTime'
|
|
)
|
|
);
|
|
} catch (Exception $e) {
|
|
Log::error("edit voucher Page Load Failed " . $e->getMessage());
|
|
return jsonResponseWithErrorMessage(__('auth.something_went_wrong'), 500);
|
|
}
|
|
}
|
|
|
|
/*
|
|
Created By : Sayli Raut
|
|
Created at : 29 May 2024
|
|
Use : To Update Resturant Form.
|
|
*/
|
|
public function update(Request $request)
|
|
{
|
|
try {
|
|
DB::beginTransaction();
|
|
|
|
$restaurant = ManageRestaurant::where('id', $request->id)->first();
|
|
|
|
if ($request->hasFile('image')) {
|
|
$image = $request->file('image');
|
|
$imagePath = saveSingleImageWithoutCrop($image, 'restaurant_images');
|
|
} else {
|
|
$imagePath = $restaurant->image;
|
|
}
|
|
|
|
$restaurant->name = $request->input('name');
|
|
$restaurant->description = $request->input('description');
|
|
$restaurant->image = $imagePath;
|
|
$restaurant->restaurant_id = $request->input('restaurant_id');
|
|
$restaurant->address = $request->input('location_name');
|
|
$restaurant->exclusion = $request->input('exclusion');
|
|
$restaurant->phone_number = $request->input('phone_number');
|
|
$restaurant->state_xid = $request->input('state_xid');
|
|
$restaurant->latitude = $request->input('latitude');
|
|
$restaurant->longtitude = $request->input('longitude');
|
|
$restaurant->bio = $request->input('bio');
|
|
$restaurant->try_on_1 = $request->input('try_on_1');
|
|
$restaurant->try_on_2 = $request->input('try_on_2');
|
|
$restaurant->try_on_3 = $request->input('try_on_3');
|
|
$restaurant->try_on_4 = $request->input('try_on_4');
|
|
$restaurant->save();
|
|
|
|
// Handle operating hours
|
|
foreach ($request->input('operating_hours') as $day => $hours) {
|
|
$operatingHour = OperatingHour::where('manage_restaurant_xid', $restaurant->id)
|
|
->where('day_of_week', $day)
|
|
->first();
|
|
|
|
if ($operatingHour) {
|
|
// Update existing record
|
|
$operatingHour->update([
|
|
'start_time' => $hours['start_time'],
|
|
'end_time' => $hours['end_time']
|
|
]);
|
|
} else {
|
|
// Create new record
|
|
OperatingHour::create([
|
|
'manage_restaurant_xid' => $restaurant->id,
|
|
'day_of_week' => $day,
|
|
'start_time' => $hours['start_time'],
|
|
'end_time' => $hours['end_time']
|
|
]);
|
|
}
|
|
}
|
|
|
|
// Handle time interval
|
|
$timeInterval = RestaurantTimeInterval::where('manage_restaurants_xid', $restaurant->id)->first();
|
|
|
|
if ($timeInterval) {
|
|
// Update existing record
|
|
$timeInterval->update([
|
|
'time_hours' => $request->input('timeHours'),
|
|
'time_interval' => $request->input('timeInterval'),
|
|
'quantity' => $request->input('timeQuantity'),
|
|
]);
|
|
} else {
|
|
// Create new record
|
|
RestaurantTimeInterval::create([
|
|
'manage_restaurants_xid' => $restaurant->id,
|
|
'time_hours' => $request->input('timeHours'),
|
|
'time_interval' => $request->input('timeInterval'),
|
|
'quantity' => $request->input('timeQuantity'),
|
|
]);
|
|
}
|
|
|
|
// Handle closed restaurant data
|
|
$closedTime = RestaurantClosedHour::where('restaurant_id', $restaurant->id)->first();
|
|
|
|
if ($closedTime && $request->has('closed_date')) {
|
|
$closedTime->update([
|
|
'day' => $request->input('closed_date'),
|
|
'start_time' => $request->input('closed_start_time'),
|
|
'end_time' => $request->input('closed_end_time'),
|
|
]);
|
|
} elseif ($request->filled('closed_date')) {
|
|
RestaurantClosedHour::create([
|
|
'restaurant_id' => $restaurant->id,
|
|
'day' => $request->input('closed_date'),
|
|
'start_time' => $request->input('closed_start_time'),
|
|
'end_time' => $request->input('closed_end_time'),
|
|
]);
|
|
}
|
|
|
|
|
|
DB::commit();
|
|
|
|
return jsonResponseWithSuccessMessage(__('success.update_data'));
|
|
} catch (Exception $e) {
|
|
DB::rollBack();
|
|
Log::error("update Restaurant Services Page Load Failed " . $e->getMessage());
|
|
return jsonResponseWithErrorMessage(__('auth.something_went_wrong'), 500);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
Created By : Sayli Raut
|
|
Created at : 29 May 2024
|
|
Use : To view restaurant Page.
|
|
*/
|
|
public function viewRestaurant(Request $request, $id)
|
|
{
|
|
try {
|
|
|
|
$restaurantItem = ManageRestaurant::where('id', $id)->first();
|
|
$restaurantItem['image'] = ListingImageUrl('restaurant_images', $restaurantItem['image']);
|
|
$operating_hours = OperatingHour::where('manage_restaurant_xid', $id)->get()->keyBy('day_of_week');
|
|
|
|
return view('Admin.pages.manage_restaurants.view_restaurant', compact('restaurantItem', 'operating_hours'));
|
|
} catch (Exception $e) {
|
|
Log::error("view Voucher Load Failed" . $e->getMessage());
|
|
return jsonResponseWithErrorMessage(__('auth.something_went_wrong'), 500);
|
|
}
|
|
}
|
|
|
|
/*
|
|
Created By : Sayli Raut
|
|
Created at : 30 May 2024
|
|
Use : To Update status of restaurant.
|
|
*/
|
|
public function updateRestaurantStatus(Request $request)
|
|
{
|
|
dd($request);
|
|
try {
|
|
DB::beginTransaction();
|
|
$voucher_data = ManageRestaurant::where('id', $request->dataId)->first();
|
|
$voucher_data->is_active = $request->status ?? 0;
|
|
$voucher_data->save();
|
|
DB::commit();
|
|
|
|
return jsonResponseWithSuccessMessage(__('success.update_data'));
|
|
} catch (Exception $e) {
|
|
Log::error("Update Status function Load Failed " . $e->getMessage());
|
|
return jsonResponseWithErrorMessage(__('auth.something_went_wrong'), 500);
|
|
}
|
|
}
|
|
|
|
/*
|
|
Created By : Sayli Raut
|
|
Created at : 30 May 2024
|
|
Use : To Delete Restaurant.
|
|
*/
|
|
public function deleteRestaurant(Request $request, $id)
|
|
{
|
|
try {
|
|
|
|
DB::beginTransaction();
|
|
$update = ManageRestaurant::where('id', $id)->update(['is_active' => 0]);
|
|
$deleteRestaurant = ManageRestaurant::where('id', $id)->delete();
|
|
DB::commit();
|
|
|
|
return jsonResponseWithSuccessMessage(__('success.delete'));
|
|
} catch (Exception $e) {
|
|
Log::error("delete function Load Failed " . $e->getMessage());
|
|
return jsonResponseWithErrorMessage(__('auth.something_went_wrong'), 500);
|
|
}
|
|
}
|
|
/*
|
|
Created By : Sayli Raut
|
|
Created at : 30 May 2024
|
|
Use : To Get archieve restaurants.
|
|
*/
|
|
public function archive_restaurant()
|
|
{
|
|
|
|
try {
|
|
$restaurant = ManageRestaurant::onlyTrashed()->latest()->get();
|
|
return view('Admin.pages.manage_restaurants.archive_manage_restaurant', compact('restaurant'));
|
|
} catch (Exception $e) {
|
|
Log::error("Manage Voucher Page Not Load " . $e->getMessage());
|
|
return jsonResponseWithErrorMessage(__('auth.something_went_wrong'), 500);
|
|
}
|
|
}
|
|
|
|
|
|
/*
|
|
Created By : Sayli Raut
|
|
Created at : 30 May 2024
|
|
Use : To archieve restaurant.
|
|
*/
|
|
public function archive_delete_restaurant($id)
|
|
{
|
|
|
|
try {
|
|
DB::beginTransaction();
|
|
$restaurant = ManageRestaurant::find($id);
|
|
$restaurant->delete();
|
|
DB::commit();
|
|
|
|
return jsonResponseWithSuccessMessage(__('success.update_data'));
|
|
} catch (Exception $e) {
|
|
DB::rollBack();
|
|
Log::error("delete_passport function Load Failed " . $e->getMessage());
|
|
return response()->json(['success' => false, 'status' => 500, 'message' => __('auth.something_went_wrong')]);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
Created By : Sayli Raut
|
|
Created at : 30 May 2024
|
|
Use : To Deleted Data Restore.
|
|
*/
|
|
public function unarchive_restaurant($id)
|
|
{
|
|
|
|
try {
|
|
DB::beginTransaction();
|
|
ManageRestaurant::withTrashed()->where('id', $id)->restore();
|
|
|
|
DB::commit();
|
|
|
|
return response()->json(['success' => true, 'status' => 200]);
|
|
} catch (Exception $e) {
|
|
DB::rollBack();
|
|
Log::error("delete_passport function Load Failed " . $e->getMessage());
|
|
return response()->json(['success' => false, 'status' => 500, 'message' => __('auth.something_went_wrong')]);
|
|
}
|
|
}
|
|
|
|
/*
|
|
Created By : Sayli Raut
|
|
Created at : 17 June 2024
|
|
Use : To download Excel.
|
|
*/
|
|
public function exportSelectedRestaurant(Request $request)
|
|
{
|
|
try {
|
|
if ($request->has('all_id')) {
|
|
return Excel::download(new RestaurantExport, 'Restaurant_data.xlsx');
|
|
}
|
|
|
|
$ids = $request->selected_id;
|
|
// dd( $ids);
|
|
$fileName = 'selected_restaurant_data.xlsx';
|
|
return Excel::download(new RestaurantExportSelected($ids), $fileName);
|
|
} catch (\Exception $e) {
|
|
return response()->json(['error' => 'Export failed. Something went wrong.'], 500);
|
|
}
|
|
}
|
|
}
|