This commit is contained in:
sayliraut
2024-08-01 16:46:51 +05:30
parent 7e722421ae
commit e2141fb7c3
7 changed files with 379 additions and 329 deletions

View File

@@ -105,15 +105,15 @@ class ManageRestrauntController extends Controller
$restTimeInterval->time_interval = $request->timeInterval;
$restTimeInterval->quantity = $request->timeQuantity;
$restTimeInterval->save();
// Storing closed restaurant date and time
if ($request->filled('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();
if($request->filled('day_of_week')){
foreach ($request->day_of_week as $index => $day) {
RestaurantClosedHour::create([
'restaurant_id' => $restaurant->id,
'day_of_week' => $day,
'start_time' => $request->start_time[$index],
'end_time' => $request->end_time[$index],
]);
}
}
// Sending notifications
@@ -159,7 +159,7 @@ class ManageRestrauntController extends Controller
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();
$restaurantClosedTime = RestaurantClosedHour::with('restaurant')->where('restaurant_id', $id)->get();
$timeInterval = $restaurantItem->timeInterval->first();
$state = ManageState::where('is_active', 1)->get()->toArray();
@@ -181,6 +181,7 @@ class ManageRestrauntController extends Controller
}
}
/*
Created By : Sayli Raut
Created at : 29 May 2024
@@ -234,25 +235,15 @@ class ManageRestrauntController extends Controller
]);
}
$closedTime = RestaurantClosedHour::where('restaurant_id', $restaurant->id)->first();
$closedTime = RestaurantClosedHour::where('restaurant_id', $restaurant->id)->delete();
if ($closedTime) {
if ($request->filled('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') && !$request->filled('closed_start_time') && !$request->filled('closed_end_time')) {
$closedTime->delete();
}
} else {
if ($request->filled('closed_date')) {
if ($request->day_of_week) {
foreach ($request->day_of_week as $index => $day) {
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'),
'restaurant_id' => $request->id,
'day_of_week' => $day,
'start_time' => $request->start_time[$index],
'end_time' => $request->end_time[$index],
]);
}
}

View File

@@ -10,9 +10,8 @@ class RestaurantClosedHour extends Model
use HasFactory;
protected $table = 'restaurant_closed_hours';
protected $fillable = [
'restaurant_id', 'day', 'start_time', 'end_time'
];
protected $fillable = ['restaurant_id', 'day_of_week', 'start_time', 'end_time'];
public function restaurant()
{

View File

@@ -14,9 +14,13 @@ return new class extends Migration
Schema::create('restaurant_closed_hours', function (Blueprint $table) {
$table->id();
$table->unsignedBigInteger('restaurant_id');
$table->string('day')->nullable();
$table->time('start_time')->nullable();
$table->time('end_time')->nullable();
$table->unsignedTinyInteger('day_of_week'); // 0 = Sunday, 1 = Monday
$table->time('start_time');
$table->time('end_time');
$table->boolean('is_active')->default(1)->comment('1=Active, 0=Expired');
$table->integer('created_by')->nullable();
$table->integer('modified_by')->nullable();
$table->softDeletes();
$table->timestamps();
$table->foreign('restaurant_id')->references('id')->on('manage_restaurants')->onDelete('cascade');

View File

@@ -1,4 +1,4 @@
$(document).on("click", "#update_restaurant_btn", function (e) {
$(document).ready(function() {
$('#update_restaurant_form').validate({
ignore: [],
debug: false,
@@ -7,48 +7,48 @@ $(document).on("click", "#update_restaurant_btn", function (e) {
required: true
},
state_xid: {
required: true,
required: true
},
rest_id: {
required: true,
required: true
},
address: {
required: true,
required: true
},
image: {
required: true,
required: true
},
phone_number: {
required: true,
required: true
},
latitude: {
required: true,
number: true,
normalizer: function (value) {
normalizer: function(value) {
return $.trim(value);
}
},
longitude: {
required: true,
number: true,
normalizer: function (value) {
normalizer: function(value) {
return $.trim(value);
}
},
bio: {
required: true,
required: true
},
try_on_1: {
required: true,
required: true
},
try_on_2: {
required: true,
required: true
},
try_on_3: {
required: true,
required: true
},
try_on_4: {
required: true,
required: true
},
timeHours: {
required: true,
@@ -65,58 +65,60 @@ $(document).on("click", "#update_restaurant_btn", function (e) {
number: true,
min: 1
},
closed_start_time: {
required: function (element) {
return $('input[name="closed_date"]').val() !== '';
'start_time[]': {
required: function(element) {
return $(element).closest('.closed-hour-entry').find(
'select[name="day_of_week[]"]').val() !== '';
}
},
closed_end_time: {
required: function (element) {
return $('input[name="closed_date"]').val() !== '';
'end_time[]': {
required: function(element) {
return $(element).closest('.closed-hour-entry').find(
'select[name="day_of_week[]"]').val() !== '';
}
}
},
messages: {
name: {
required: "Enter restaurant Name",
required: "Enter restaurant Name"
},
state_xid: {
required: "Please Select state",
required: "Please Select state"
},
rest_id: {
required: "Enter restaurant Id",
required: "Enter restaurant Id"
},
address: {
required: "Please enter location",
required: "Please enter location"
},
image: {
required: "Please insert image",
required: "Please insert image"
},
phone_number: {
required: "Please enter phone number",
required: "Please enter phone number"
},
latitude: {
required: "Please enter latitude",
number: "Latitude must be a number without spaces",
number: "Latitude must be a number without spaces"
},
longitude: {
required: "Please enter longitude",
number: "Longitude must be a number without spaces",
number: "Longitude must be a number without spaces"
},
bio: {
required: "Enter Bio",
required: "Enter Bio"
},
try_on_1: {
required: "Please enter this field",
required: "Please enter this field"
},
try_on_2: {
required: "Please enter this field",
required: "Please enter this field"
},
try_on_3: {
required: "Please enter this field",
required: "Please enter this field"
},
try_on_4: {
required: "Please enter this field",
required: "Please enter this field"
},
timeHours: {
required: "Please enter the time in hours between redeeming two cocktails",
@@ -133,16 +135,15 @@ $(document).on("click", "#update_restaurant_btn", function (e) {
number: "Maximum number of cocktails must be a number",
min: "Maximum number of cocktails must be greater than 0"
},
closed_start_time: {
required: "Please select the start time for closing hours"
'start_time[]': {
required: "Please select a start time"
},
closed_end_time: {
required: "Please select the end time for closing hours"
'end_time[]': {
required: "Please select an end time"
}
},
errorClass: 'error-message',
submitHandler: function (form) {
e.preventDefault();
submitHandler: function(form) {
var form = $('#update_restaurant_form')[0];
var formData = new FormData(form);
@@ -160,31 +161,38 @@ $(document).on("click", "#update_restaurant_btn", function (e) {
data: formData,
processData: false,
contentType: false,
beforeSend: function () {
beforeSend: function() {
$('#update_restaurant_btn').html('Please wait...');
$('#update_restaurant_btn').attr('disabled', true);
},
success: function (result) {
success: function(result) {
if (result.status_code == 200) {
toastr.success('Restaurant Updated Successfully');
setTimeout(function () {
window.location.href = base_url + "/manage-restaurants";
setTimeout(function() {
window.location.href = base_url +
"/manage-restaurants";
}, 2000);
} else {
toastr.error('Something Went Wrong');
setTimeout(function () {
window.location.href = base_url + "/manage-restaurants";
setTimeout(function() {
window.location.href = base_url +
"/manage-restaurants";
}, 2000);
}
},
error: function (xhr, status, error) {
error: function(xhr, status, error) {
toastr.error('Something Went Wrong');
},
complete: function () {
complete: function() {
$('#update_restaurant_btn').attr('disabled', false);
$('#update_restaurant_btn').text('Submit');
}
});
}
});
$(document).on("click", "#update_restaurant_btn", function(e) {
e.preventDefault();
$('#update_restaurant_form').submit();
});
});

View File

@@ -119,51 +119,6 @@
<input type="text" class="form-control mb-3" name="try_on_4" required>
</div>
</div>
{{-- <div class="col-md-12">
<div class="form-group">
<label class="label">Operating Hours</label>
@foreach (['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'] as $day)
<div class="row mb-2">
<div class="col-md-3">
<label>{{ $day }} Start Time:</label>
<input type="time" class="form-control"
name="operating_hours[{{ $day }}][start_time]">
</div>
<div class="col-md-3">
<label>{{ $day }} End Time:</label>
<input type="time" class="form-control"
name="operating_hours[{{ $day }}][end_time]">
</div>
</div>
@endforeach
</div>
</div> --}}
<div class="col-md-6">
<div class="form-group">
<label for="closed_date" class="label">Date for Close Restaurant</label>
<input type="date" class="form-control" name="closed_date"
id="closed_date">
</div>
</div>
<!-- Close Hours of Restaurant Start Time -->
<div class="col-md-6">
<div class="form-group">
<label for="start-time" class="label">Close Hours of Restaurant Start
Time</label>
<input type="time" class="form-control" name="closed_start_time">
</div>
</div>
<!-- Close Hours of Restaurant End Time -->
<div class="col-md-6">
<div class="form-group">
<label for="end-time" class="label">Close Hours of Restaurant End
Time</label>
<input type="time" class="form-control" name="closed_end_time">
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label for="timeHours" class="label">Time in hours between redeeming two
@@ -181,6 +136,33 @@
</div>
</div>
</div>
<div class="col-md-12">
<div id="closed-hours-container">
<div class="closed-hour-entry">
<label for="day_of_week[]">Closed Day:</label>
<select name="day_of_week[]">
<option value="0">Sunday</option>
<option value="1">Monday</option>
<option value="2">Tuesday</option>
<option value="3">Wednesday</option>
<option value="4">Thursday</option>
<option value="5">Friday</option>
<option value="6">Saturday</option>
</select>
<label for="start_time[]">Start Time:</label>
<input type="time" name="start_time[]" required>
<label for="end_time[]">End Time:</label>
<input type="time" name="end_time[]" required>
<button type="button" class="remove-btn"
onclick="removeClosedHourEntry(this)">Remove</button>
</div>
</div>
<button type="button" onclick="addClosedHourEntry()">Add Another Time
Slot</button>
</div>
<div class="col-md-12">
<button id="update_restaurant_btn" type="submit"
@@ -225,5 +207,19 @@
var today = new Date().toISOString().split('T')[0];
document.getElementsByName("closed_date")[0].setAttribute('min', today);
});
</script>
</script>
<script>
function addClosedHourEntry() {
const container = document.getElementById('closed-hours-container');
const entry = document.querySelector('.closed-hour-entry').cloneNode(true);
entry.querySelectorAll('input, select').forEach(input => input.value = '');
container.appendChild(entry);
}
function removeClosedHourEntry(button) {
const entry = button.parentNode;
entry.parentNode.removeChild(entry);
}
</script>
@endsection

View File

@@ -197,30 +197,53 @@
</div>
</div> --}}
<div class="col-md-6">
<div class="form-group">
<label for="closed_date" class="label">Date for Close Restaurant</label>
<input type="date" class="form-control" name="closed_date"
id="closed_date" value="{{ $restaurantClosedTime->day ?? '' }}"
min="{{ date('Y-m-d') }}">
<div class="col-md-12">
<div id="closed-hours-container">
@foreach ($restaurantClosedTime as $closedHour)
<div class="closed-hour-entry">
<label for="day_of_week[]">Closed Day:</label>
<select name="day_of_week[]">
<option value="0"
{{ $closedHour->day_of_week == 0 ? 'selected' : '' }}>Sunday
</option>
<option value="1"
{{ $closedHour->day_of_week == 1 ? 'selected' : '' }}>Monday
</option>
<option value="2"
{{ $closedHour->day_of_week == 2 ? 'selected' : '' }}>Tuesday
</option>
<option value="3"
{{ $closedHour->day_of_week == 3 ? 'selected' : '' }}>Wednesday
</option>
<option value="4"
{{ $closedHour->day_of_week == 4 ? 'selected' : '' }}>Thursday
</option>
<option value="5"
{{ $closedHour->day_of_week == 5 ? 'selected' : '' }}>Friday
</option>
<option value="6"
{{ $closedHour->day_of_week == 6 ? 'selected' : '' }}>Saturday
</option>
</select>
<label for="start_time[]">Start Time:</label>
<input type="time" name="start_time[]"
value="{{ $closedHour->start_time }}">
<label for="end_time[]">End Time:</label>
<input type="time" name="end_time[]"
value="{{ $closedHour->end_time }}">
<button type="button" class="remove-btn"
onclick="removeClosedHourEntry(this)">Remove</button>
</div>
@endforeach
</div>
<button type="button" onclick="addClosedHourEntry()">Add Another Time
Slot</button>
</div>
<div class="col-md-6">
<div class="form-group">
<label for="closed_start_time" class="label">Close Start Time</label>
<input type="time" class="form-control" name="closed_start_time"
value="{{ $restaurantClosedTime->start_time ?? '' }}">
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label for="closed_end_time" class="label">Close End Time</label>
<input type="time" class="form-control" name="closed_end_time"
value="{{ $restaurantClosedTime->end_time ?? '' }}">
</div>
</div>
<div class="col-md-12">
<button class="download-btn "style="width: 30%;" id="update_restaurant">
<span>Submit</span>
@@ -284,8 +307,7 @@
@endsection
@section('section_script')
<script>
$(document).ready(function() {
$(document).ready(function() {
$('#update_voucher').validate({
ignore: [],
debug: false,
@@ -349,14 +371,14 @@
try_on_4: {
required: true,
},
closed_start_time: {
'start_time[]': {
required: function(element) {
return $('input[name="closed_date"]').val() !== '';
return $(element).closest('.closed-hour-entry').find('select[name="day_of_week[]"]').val() !== '';
}
},
closed_end_time: {
'end_time[]': {
required: function(element) {
return $('input[name="closed_date"]').val() !== '';
return $(element).closest('.closed-hour-entry').find('select[name="day_of_week[]"]').val() !== '';
}
}
},
@@ -414,11 +436,11 @@
try_on_4: {
required: "Please enter this field",
},
closed_start_time: {
required: "Please select the start time for closing hours"
'start_time[]': {
required: "Please select a start time",
},
closed_end_time: {
required: "Please select the end time for closing hours"
'end_time[]': {
required: "Please select an end time",
}
},
errorClass: 'error-message',
@@ -440,31 +462,28 @@
processData: false,
contentType: false,
success: function(result) {
if (result.status_code == 200) {
toastr.success('Restaurant Updated Sucessfully');
toastr.success('Restaurant Updated Successfully');
setTimeout(function() {
window.location.href =
"{{ route('manage.restaurants') }}";
window.location.href = "{{ route('manage.restaurants') }}";
}, 2000);
} else {
toastr.error('Something Went Wrong');
setTimeout(function() {
window.location.href =
"{{ route('manage.restaurants') }}";
window.location.href = "{{ route('manage.restaurants') }}";
}, 2000);
}
$('#update_restaurant').attr('disabled', false);
$('#update_restaurant').text('Submit');
},
});
$('#store_coupon').attr('disabled', false);
$('#store_coupon').text('Submit');
}
});
});
});
</script>
<script>
document.addEventListener('DOMContentLoaded', function() {
@@ -479,4 +498,37 @@
});
});
</script>
<script>
function addClosedHourEntry() {
const container = document.getElementById('closed-hours-container');
const entryTemplate = `
<div class="closed-hour-entry">
<label for="day_of_week[]">Closed Day:</label>
<select name="day_of_week[]">
<option value="0">Sunday</option>
<option value="1">Monday</option>
<option value="2">Tuesday</option>
<option value="3">Wednesday</option>
<option value="4">Thursday</option>
<option value="5">Friday</option>
<option value="6">Saturday</option>
</select>
<label for="start_time[]">Start Time:</label>
<input type="time" name="start_time[]">
<label for="end_time[]">End Time:</label>
<input type="time" name="end_time[]">
<button type="button" class="remove-btn" onclick="removeClosedHourEntry(this)">Remove</button>
</div>
`;
container.insertAdjacentHTML('beforeend', entryTemplate);
}
function removeClosedHourEntry(button) {
const entry = button.parentNode;
entry.parentNode.removeChild(entry);
}
</script>
@endsection

View File

@@ -93,7 +93,7 @@
<th class="text-start">Date of birth</th>
<th class="text-start">Phone Number</th>
<th class="text-start">Subscribe/Unsubscribe</th>
<th class="text-start">Subscribed/Unsubscribed</th>
<th class="text-start">Location</th>
<!-- <th class="text-start">Passports</th> -->