36
app/Exports/FeedbakExport.php
Normal file
36
app/Exports/FeedbakExport.php
Normal file
@@ -0,0 +1,36 @@
|
||||
<?php
|
||||
|
||||
namespace App\Exports;
|
||||
|
||||
use App\Models\ManageFeedback;
|
||||
use Maatwebsite\Excel\Concerns\FromCollection;
|
||||
use Maatwebsite\Excel\Concerns\WithHeadings;
|
||||
|
||||
class FeedbakExport implements FromCollection, WithHeadings
|
||||
{
|
||||
public function collection()
|
||||
{
|
||||
return ManageFeedback::with(['principal', 'feedbackReaction'])->get()->map(function ($feedback) {
|
||||
return [
|
||||
'Customer Id' => $feedback->principal ? $feedback->principal->id : 'N/A',
|
||||
'First Name' => $feedback->principal ? $feedback->principal->first_name : 'N/A',
|
||||
'Last Name' => $feedback->principal ? $feedback->principal->last_name : 'N/A',
|
||||
'Feedback Reaction' => $feedback->feedbackReaction ? $feedback->feedbackReaction->feedback_reaction_title : 'N/A',
|
||||
'Comment' => $feedback->comment,
|
||||
'Date Received' => $feedback->created_at,
|
||||
];
|
||||
});
|
||||
}
|
||||
|
||||
public function headings(): array
|
||||
{
|
||||
return [
|
||||
'Customer Id',
|
||||
'First Name',
|
||||
'Last Name',
|
||||
'Feedback Reaction',
|
||||
'Comment',
|
||||
'Date Received'
|
||||
];
|
||||
}
|
||||
}
|
||||
@@ -2,9 +2,12 @@
|
||||
|
||||
namespace App\Http\Controllers\Admin;
|
||||
|
||||
use App\Exports\FeedbakExport;
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Models\ManageFeedback;
|
||||
use Illuminate\Http\Request;
|
||||
use Maatwebsite\Excel\Facades\Excel;
|
||||
|
||||
|
||||
class ManageFeedbackController extends Controller
|
||||
{
|
||||
@@ -34,4 +37,22 @@ class ManageFeedbackController extends Controller
|
||||
$data = ManageFeedback::find($id)->delete();
|
||||
return redirect()->back()->with('success', '');
|
||||
}
|
||||
|
||||
/*
|
||||
Created By : Sayli Raut
|
||||
Created at : 17 June 2024
|
||||
Use : To download Excel.
|
||||
*/
|
||||
public function exportSelectedFeedback(Request $request)
|
||||
{
|
||||
// dd($request->all());
|
||||
try {
|
||||
if ($request->has('all_id')) {
|
||||
return Excel::download(new FeedbakExport, 'Feedback_data.xlsx');
|
||||
}
|
||||
|
||||
} catch (\Exception $e) {
|
||||
return response()->json(['error' => 'Export failed. Something went wrong.'], 500);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -24,58 +24,67 @@
|
||||
</div>
|
||||
<div class="col-xl-12 col-lg-12 col-sm-12 layout-spacing">
|
||||
<div class="widget-content widget-content-area br-8 position-btn">
|
||||
<table id="zero-config" class="table dt-table-hover" style="width:100%">
|
||||
<thead class="text-center">
|
||||
<tr>
|
||||
<th class="text-start">Sr No.</th>
|
||||
<th class="text-start">User ID</th>
|
||||
<th class="text-start">User Name</th>
|
||||
<th class="text-start">User Type</th>
|
||||
<th class="text-start">Reactions</th>
|
||||
<th class="text-start">Commnet</th>
|
||||
<th class="text-start">Date Received</th>
|
||||
<th class="no-content">Actions</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody class="text-center">
|
||||
@foreach ($feedback as $feedbacks)
|
||||
<form action="{{ route('export-selected-feedback') }}" method="POST" id="restaurant-form">
|
||||
@csrf
|
||||
<input type="hidden" name="all_id" id="all_id" value="all" disabled>
|
||||
<!-- ... existing table and content ... -->
|
||||
<table id="zero-config" class="table dt-table-hover" style="width:100%">
|
||||
<thead class="text-center">
|
||||
<tr>
|
||||
<td class="text-start">{{ $loop->iteration }}</td>
|
||||
<td class="text-start">{{ $feedbacks->principal->id }}</td>
|
||||
<td class="text-start">{{ $feedbacks->principal->first_name }}
|
||||
{{ $feedbacks->principal->last_name }}</td>
|
||||
<td class="text-start">
|
||||
@if ($feedbacks->principal->principal_type_xid == 3)
|
||||
Customer
|
||||
@elseif($feedbacks->principal->principal_type_xid == 4)
|
||||
Restaurant
|
||||
@else
|
||||
Unknown
|
||||
@endif
|
||||
</td>
|
||||
<td class="text-start">{{ $feedbacks->feedbackReaction->feedback_reaction_title }}
|
||||
|
||||
<td>
|
||||
<a class="view-btn m-0" href="#" data-toggle="modal"
|
||||
data-target="#comment-modal" data-ids="{{ $feedbacks->id }}"
|
||||
data-comment="{{ $feedbacks->comment }}">View</a>
|
||||
|
||||
</td>
|
||||
<td class="text-start">
|
||||
{{ \Carbon\Carbon::parse($feedbacks->principal->created_at)->format('m/d/Y') }}
|
||||
</td>
|
||||
<td>
|
||||
<a class="delete_feedback" data-id="{{ $feedbacks['id'] }}" style="gap: 7px;"
|
||||
href="" data-toggle="modal" data-target="#delete-modal">
|
||||
<img width="15"
|
||||
src="{{ asset('public/assets/img/delete-recycle.svg') }}" />
|
||||
<span>Delete</span>
|
||||
</a>
|
||||
</td>
|
||||
<th class="text-start">Sr No.</th>
|
||||
<th class="text-start">User ID</th>
|
||||
<th class="text-start">User Name</th>
|
||||
<th class="text-start">User Type</th>
|
||||
<th class="text-start">Reactions</th>
|
||||
<th class="text-start">Comment</th>
|
||||
<th class="text-start">Date Received</th>
|
||||
<th class="no-content">Actions</th>
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
</thead>
|
||||
<tbody class="text-center">
|
||||
@foreach ($feedback as $feedbacks)
|
||||
<tr>
|
||||
<td class="text-start">{{ $loop->iteration }}</td>
|
||||
<td class="text-start">{{ $feedbacks->principal->id }}</td>
|
||||
<td class="text-start">{{ $feedbacks->principal->first_name }}
|
||||
{{ $feedbacks->principal->last_name }}</td>
|
||||
<td class="text-start">
|
||||
@if ($feedbacks->principal->principal_type_xid == 3)
|
||||
Customer
|
||||
@elseif($feedbacks->principal->principal_type_xid == 4)
|
||||
Restaurant
|
||||
@else
|
||||
Unknown
|
||||
@endif
|
||||
</td>
|
||||
<td class="text-start">
|
||||
{{ $feedbacks->feedbackReaction->feedback_reaction_title }}</td>
|
||||
<td>
|
||||
<a class="view-btn m-0" href="#" data-toggle="modal"
|
||||
data-target="#comment-modal" data-ids="{{ $feedbacks->id }}"
|
||||
data-comment="{{ $feedbacks->comment }}">View</a>
|
||||
</td>
|
||||
<td class="text-start">
|
||||
{{ \Carbon\Carbon::parse($feedbacks->principal->created_at)->format('m/d/Y') }}
|
||||
</td>
|
||||
<td>
|
||||
<a class="delete_feedback" data-id="{{ $feedbacks['id'] }}"
|
||||
style="gap: 7px;" href="" data-toggle="modal"
|
||||
data-target="#delete-modal">
|
||||
<img width="15"
|
||||
src="{{ asset('public/assets/img/delete-recycle.svg') }}" />
|
||||
<span>Delete</span>
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
</form>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -145,12 +154,22 @@
|
||||
});
|
||||
</script>
|
||||
|
||||
{{-- <script>
|
||||
$(document).ready(function() {
|
||||
$('<button><ul class="navbar-item flex-row ms-lg-auto ms-0"><li class="nav-item dropdown action-dropdown order-lg-0 order-1"><a href="javascript:void(0);"class="nav-link dropdown-toggle user extra-btn" id="actionDropdown" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><div class="avatar-container"><div class="avatar avatar-sm avatar-indicators avatar-online"><h3>Filter</h3></div></div></a><div class="dropdown-menu position-absolute" aria-labelledby="actionDropdown"><div class="dropdown-item"><a href="#"><span>Customer</span></a></div><div class="dropdown-item"><a href="#"><span>Restraunt</span></a></div></div></li></ul></button>')
|
||||
.insertBefore("#zero-config_filter label");
|
||||
<script>
|
||||
$(document).ready(function() {
|
||||
// Create the button element with the correct structure
|
||||
var downloadButton = $('<button class="extra-btn width-max-content" id="download_all">Download Overview</button>');
|
||||
|
||||
// Insert the button before the #zero-config_filter label
|
||||
downloadButton.insertBefore("#zero-config_filter label");
|
||||
|
||||
// Handle the button click event
|
||||
$(document).on("click", "#download_all", function(e) {
|
||||
e.preventDefault();
|
||||
$('#all_id').prop('disabled', false); // Enable the hidden input
|
||||
$('#restaurant-form').submit(); // Submit the form
|
||||
});
|
||||
</script> --}}
|
||||
});
|
||||
</script>
|
||||
<script>
|
||||
$(document).ready(function() {
|
||||
$('.view-btn').click(function() {
|
||||
|
||||
@@ -150,6 +150,8 @@ Route::group(['middleware' => ['checkStatus']], function () {
|
||||
//*******************************************************manage feedback********************************************************
|
||||
Route::get('/manage-feedback', [ManageFeedbackController::class, 'index'])->name('manage.feedback');
|
||||
Route::post('/delete_feedback/{id}', [ManageFeedbackController::class, 'delete_feedback'])->name('delete.feedback');
|
||||
Route::post('/export_selected_feedback', [ManageFeedbackController::class, 'exportSelectedFeedback'])->name('export-selected-feedback');
|
||||
|
||||
|
||||
//*******************************************************manage notification********************************************************
|
||||
Route::get('/manage-notification', [ManageNotificationsController::class, 'index'])->name('manage.notification');
|
||||
|
||||
Reference in New Issue
Block a user