|
@@ -7,6 +7,9 @@ use Illuminate\Support\Facades\DB;
|
|
|
use Illuminate\Support\Facades\Artisan;
|
|
use Illuminate\Support\Facades\Artisan;
|
|
|
use Illuminate\Support\Facades\Log;
|
|
use Illuminate\Support\Facades\Log;
|
|
|
use Illuminate\Support\Facades\Schema;
|
|
use Illuminate\Support\Facades\Schema;
|
|
|
|
|
+use Illuminate\Support\Facades\Mail;
|
|
|
|
|
+use Illuminate\Support\Facades\Storage;
|
|
|
|
|
+use Illuminate\Support\Facades\Config;
|
|
|
|
|
|
|
|
/*
|
|
/*
|
|
|
|--------------------------------------------------------------------------
|
|
|--------------------------------------------------------------------------
|
|
@@ -1463,72 +1466,82 @@ Route::get('/get_course_members', function () {
|
|
|
});
|
|
});
|
|
|
|
|
|
|
|
Route::get('/get_receipts', function () {
|
|
Route::get('/get_receipts', function () {
|
|
|
- $receiptColumns = Schema::getColumnListing('receipts');
|
|
|
|
|
- $groupByColumns = array_map(function($column) {
|
|
|
|
|
- return 'receipts.' . $column;
|
|
|
|
|
- }, $receiptColumns);
|
|
|
|
|
-
|
|
|
|
|
- // Add member columns
|
|
|
|
|
- $groupByColumns[] = 'members.first_name';
|
|
|
|
|
- $groupByColumns[] = 'members.last_name';
|
|
|
|
|
-
|
|
|
|
|
- $x = \App\Models\Receipt::select('receipts.*', 'members.first_name', 'members.last_name', DB::raw('SUM(receipts_rows.amount) AS totals'))
|
|
|
|
|
- ->leftJoin('members', 'receipts.member_id', '=', 'members.id')
|
|
|
|
|
- ->leftJoin('receipts_rows', 'receipts.id', '=', 'receipts_rows.receip_id')
|
|
|
|
|
- ->groupBy($groupByColumns);
|
|
|
|
|
- if (isset($_GET["search"]["value"])) {
|
|
|
|
|
|
|
+ // Start with a base query - but without the GROUP BY for counting
|
|
|
|
|
+ $baseQuery = \App\Models\Receipt::select('receipts.*')
|
|
|
|
|
+ ->leftJoin('members', 'receipts.member_id', '=', 'members.id');
|
|
|
|
|
+
|
|
|
|
|
+ // Apply filters
|
|
|
|
|
+ if (isset($_GET["search"]["value"]) && !empty($_GET["search"]["value"])) {
|
|
|
$v = str_replace("'", "\'", stripcslashes($_GET["search"]["value"]));
|
|
$v = str_replace("'", "\'", stripcslashes($_GET["search"]["value"]));
|
|
|
$member_ids = \App\Models\Member::where(function ($query) use ($v) {
|
|
$member_ids = \App\Models\Member::where(function ($query) use ($v) {
|
|
|
$query->whereRaw("CONCAT(first_name, ' ', last_name) like '%" . $v . "%'")
|
|
$query->whereRaw("CONCAT(first_name, ' ', last_name) like '%" . $v . "%'")
|
|
|
->orWhereRaw("CONCAT(last_name, ' ', first_name) like '%" . $v . "%'");
|
|
->orWhereRaw("CONCAT(last_name, ' ', first_name) like '%" . $v . "%'");
|
|
|
})->pluck('id');
|
|
})->pluck('id');
|
|
|
- $x = $x->whereIn('member_id', $member_ids);
|
|
|
|
|
|
|
+ $baseQuery = $baseQuery->whereIn('receipts.member_id', $member_ids);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
if (isset($_GET["filterStatus"]) && $_GET["filterStatus"] != '')
|
|
if (isset($_GET["filterStatus"]) && $_GET["filterStatus"] != '')
|
|
|
- $x = $x->where('receipts.status', $_GET["filterStatus"]);
|
|
|
|
|
|
|
+ $baseQuery = $baseQuery->where('receipts.status', $_GET["filterStatus"]);
|
|
|
|
|
|
|
|
if (isset($_GET["filterFrom"]) && $_GET["filterFrom"] != "")
|
|
if (isset($_GET["filterFrom"]) && $_GET["filterFrom"] != "")
|
|
|
- $x = $x->where('date', '>=', $_GET["filterFrom"]);
|
|
|
|
|
|
|
+ $baseQuery = $baseQuery->where('receipts.date', '>=', $_GET["filterFrom"]);
|
|
|
|
|
|
|
|
if (isset($_GET["filterTo"]) && $_GET["filterTo"] != "")
|
|
if (isset($_GET["filterTo"]) && $_GET["filterTo"] != "")
|
|
|
- $x = $x->where('date', '<=', $_GET["filterTo"]);
|
|
|
|
|
|
|
+ $baseQuery = $baseQuery->where('receipts.date', '<=', $_GET["filterTo"]);
|
|
|
|
|
|
|
|
if (isset($_GET["filterMember"]) && $_GET["filterMember"] != "")
|
|
if (isset($_GET["filterMember"]) && $_GET["filterMember"] != "")
|
|
|
- $x = $x->where('receipts.member_id', $_GET["filterMember"]);
|
|
|
|
|
-
|
|
|
|
|
- $count = $x->count();
|
|
|
|
|
-
|
|
|
|
|
|
|
+ $baseQuery = $baseQuery->where('receipts.member_id', $_GET["filterMember"]);
|
|
|
|
|
+
|
|
|
|
|
+ // Count BEFORE applying the GROUP BY
|
|
|
|
|
+ $count = $baseQuery->distinct()->count('receipts.id');
|
|
|
|
|
+
|
|
|
|
|
+ // Clone the base query and add the group by and joins for the data
|
|
|
|
|
+ $dataQuery = clone $baseQuery;
|
|
|
|
|
+ $dataQuery = $dataQuery->select(
|
|
|
|
|
+ 'receipts.*',
|
|
|
|
|
+ 'members.first_name',
|
|
|
|
|
+ 'members.last_name',
|
|
|
|
|
+ DB::raw('SUM(receipts_rows.amount) AS totals')
|
|
|
|
|
+ )
|
|
|
|
|
+ ->leftJoin('receipts_rows', 'receipts.id', '=', 'receipts_rows.receip_id')
|
|
|
|
|
+ ->groupBy('receipts.id');
|
|
|
|
|
+
|
|
|
|
|
+ // Apply sorting
|
|
|
if (isset($_GET["order"])) {
|
|
if (isset($_GET["order"])) {
|
|
|
$column = '';
|
|
$column = '';
|
|
|
if ($_GET["order"][0]["column"] == 0)
|
|
if ($_GET["order"][0]["column"] == 0)
|
|
|
- $column = 'year';
|
|
|
|
|
|
|
+ $column = 'receipts.year';
|
|
|
if ($_GET["order"][0]["column"] == 1)
|
|
if ($_GET["order"][0]["column"] == 1)
|
|
|
- $column = 'number';
|
|
|
|
|
|
|
+ $column = 'receipts.number';
|
|
|
if ($_GET["order"][0]["column"] == 2)
|
|
if ($_GET["order"][0]["column"] == 2)
|
|
|
- $column = 'last_name';
|
|
|
|
|
|
|
+ $column = 'members.last_name';
|
|
|
if ($_GET["order"][0]["column"] == 3)
|
|
if ($_GET["order"][0]["column"] == 3)
|
|
|
- $column = 'first_name';
|
|
|
|
|
|
|
+ $column = 'members.first_name';
|
|
|
if ($_GET["order"][0]["column"] == 4)
|
|
if ($_GET["order"][0]["column"] == 4)
|
|
|
- $column = 'status';
|
|
|
|
|
|
|
+ $column = 'receipts.status';
|
|
|
if ($_GET["order"][0]["column"] == 5)
|
|
if ($_GET["order"][0]["column"] == 5)
|
|
|
- $column = 'date';
|
|
|
|
|
|
|
+ $column = 'receipts.date';
|
|
|
if ($_GET["order"][0]["column"] == 6)
|
|
if ($_GET["order"][0]["column"] == 6)
|
|
|
$column = 'totals';
|
|
$column = 'totals';
|
|
|
|
|
+
|
|
|
if ($column != '')
|
|
if ($column != '')
|
|
|
- $x = $x->orderBy($column, $_GET["order"][0]["dir"])->orderBy('receipts.id', 'DESC');
|
|
|
|
|
|
|
+ $dataQuery = $dataQuery->orderBy($column, $_GET["order"][0]["dir"])->orderBy('receipts.id', 'DESC');
|
|
|
else
|
|
else
|
|
|
- $x = $x->orderBy('receipts.id', 'DESC');
|
|
|
|
|
- } else
|
|
|
|
|
- $x = $x->orderBy('receipts.id', 'DESC');
|
|
|
|
|
|
|
+ $dataQuery = $dataQuery->orderBy('receipts.id', 'DESC');
|
|
|
|
|
+ } else {
|
|
|
|
|
+ $dataQuery = $dataQuery->orderBy('receipts.id', 'DESC');
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
- if (isset($_GET["start"]))
|
|
|
|
|
- $x = $x->offset($_GET["start"])->limit($_GET["length"])->get();
|
|
|
|
|
- else
|
|
|
|
|
- $x = $x->get();
|
|
|
|
|
|
|
+ // Apply pagination
|
|
|
|
|
+ if (isset($_GET["start"]) && isset($_GET["length"]))
|
|
|
|
|
+ $dataQuery = $dataQuery->offset($_GET["start"])->limit($_GET["length"]);
|
|
|
|
|
+
|
|
|
|
|
+ // Get the results
|
|
|
|
|
+ $results = $dataQuery->get();
|
|
|
|
|
|
|
|
|
|
+ // Format the data
|
|
|
$datas = [];
|
|
$datas = [];
|
|
|
- foreach ($x as $idx => $r) {
|
|
|
|
|
|
|
+ foreach ($results as $idx => $r) {
|
|
|
$ids = $r->id . "|" . $r->record_id;
|
|
$ids = $r->id . "|" . $r->record_id;
|
|
|
$datas[] = array(
|
|
$datas[] = array(
|
|
|
'year' => $r->year,
|
|
'year' => $r->year,
|
|
@@ -1542,7 +1555,12 @@ Route::get('/get_receipts', function () {
|
|
|
);
|
|
);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- return json_encode(array("data" => $datas, "recordsTotal" => $count, "recordsFiltered" => $count));
|
|
|
|
|
|
|
+ // Return the proper format with correct counts
|
|
|
|
|
+ return response()->json([
|
|
|
|
|
+ "data" => $datas,
|
|
|
|
|
+ "recordsTotal" => $count,
|
|
|
|
|
+ "recordsFiltered" => $count
|
|
|
|
|
+ ]);
|
|
|
});
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
@@ -1637,7 +1655,7 @@ Route::get('/send_sms', function () {
|
|
|
|
|
|
|
|
Route::get('/test_mail', function(){
|
|
Route::get('/test_mail', function(){
|
|
|
|
|
|
|
|
- $receipt = \App\Models\Receip::first();
|
|
|
|
|
|
|
+ $receipt = \App\Models\Receipt::first();
|
|
|
$pdf = PDF::loadView('receipt', array('receipt' => $receipt));
|
|
$pdf = PDF::loadView('receipt', array('receipt' => $receipt));
|
|
|
$pdfName = "ricevuta_" . $receipt->number . "_" . $receipt->year . ".pdf";
|
|
$pdfName = "ricevuta_" . $receipt->number . "_" . $receipt->year . ".pdf";
|
|
|
Storage::put('public/pdf/' . $pdfName, $pdf->output());
|
|
Storage::put('public/pdf/' . $pdfName, $pdf->output());
|