Merge pull request #155 from WDI-Ideas/sayli

Sayli
This commit is contained in:
Sayli Raut
2024-06-17 15:53:45 +05:30
committed by GitHub
4 changed files with 133 additions and 55 deletions

View 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'
];
}
}

View File

@@ -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);
}
}
}

View File

@@ -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() {

View File

@@ -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');