diff --git a/app/Http/Controllers/ReportController.php b/app/Http/Controllers/ReportController.php new file mode 100644 index 0000000..adf5512 --- /dev/null +++ b/app/Http/Controllers/ReportController.php @@ -0,0 +1,43 @@ +middleware('auth'); + } + + public function index(){ + return view("reports.index"); + } + + public function generate(Request $request){ + //validation + $this->validate($request,[ + "from" => "required", + "to" => "required" + ]); + //get date + //database dd-mm-yyyy 00:00:00 but $request dd/mm/yyyy + $startDate = date("Y-m-d H:i:s",strtotime($request->from."00:00:00")); + $endDate = date("Y-m-d H:i:s",strtotime($request->to."23:59:59")); + $sales = Sale::whereBetween("created_at",[$startDate,$endDate]) + ->where("payment_status","Paid")->get(); + return view("reports.index")->with([ + "startDate" => $startDate, + "endDate" => $endDate, + "total" => $sales->sum("total_price"), + "sales" => $sales + ]); + } + + public function export(Request $request){ + return Excel::download(new SalesExport($request->from,$request->to), "sales.xlsx"); + } +} diff --git a/resources/views/reports/index.blade.php b/resources/views/reports/index.blade.php new file mode 100644 index 0000000..d5fd529 --- /dev/null +++ b/resources/views/reports/index.blade.php @@ -0,0 +1,142 @@ +@extends('layouts.app') + +@section('content') +
+
+
+
+
+
+
+ {{-- d-flex flex-row justify-content-center align-items-between border-buttom pd-1 --}} +
+
+ + + +
+

+ + Reports +

+
+
+
+
+
+
+ @csrf +
+ +
+
+ +
+
+ +
+
+
+
+
+
+ @isset($total) +

+ Report from {{ Str::substr($startDate, 0, 10) }} to {{ Str::substr($endDate, 0, 10) }} +

+ + + + + + + + + + + + + + + @foreach ($sales as $sale) + + + + + + + + + + + @endforeach + +
IdMenusQuantityTablesServersTotalPayment typePayment status
+ {{ $sale->id }} + + @foreach ($sale->menus()->where("sale_id",$sale->id)->get() as $menu) +
+
+
+ {{ $menu->title }} +
{{ $menu->title }}
+
{{ $menu->price }} DH
+
+
+
+ @endforeach +
+ @foreach ($sale->menus()->where("sale_id",$sale->id)->get() as $menu) +
{{ $menu->pivot->quantity }}
+ @endforeach +
+ @foreach ($sale->tables()->where("sale_id", $sale->id)->get() as $table) +
+
+ + {{ $table->name }} +
+
+ @endforeach +
+ {{ $sale->servant->name }} + + {{ $sale->total_price }} + + {{ $sale->payment_type === "cash"? "Cash" : "Credit Card" }} + + {{ $sale->payment_status }} +
+

+ Total : {{ $total }} DH +

+
+ @csrf +
+ +
+
+ +
+ +
+ @endisset +
+
+
+
+
+
+
+@endsection diff --git a/routes/web.php b/routes/web.php index 6c8d572..d6945df 100644 --- a/routes/web.php +++ b/routes/web.php @@ -8,7 +8,7 @@ use App\Http\Controllers\MenuController; use App\Http\Controllers\SaleController; use App\Http\Controllers\PaymentController; - +use App\Http\Controllers\ReportController; /* |-------------------------------------------------------------------------- @@ -42,6 +42,8 @@ Route::resource('menu', MenuController::class); Route::resource('sale', SaleController::class); Route::get('payment', [PaymentController::class, 'index']); - +Route::get('report', [ReportController::class, 'index']); +Route::post('report/generate', [ReportController::class, 'generate'])->name("report.generate"); +Route::post('report/export', [ReportController::class, 'export'])->name("report.export"); require __DIR__.'/auth.php';