|
|
@@ -1434,80 +1434,97 @@ Route::get('/get_course_members', function () {
|
|
|
});
|
|
|
|
|
|
Route::get('/get_receipts', function () {
|
|
|
- $receiptColumns = Schema::getColumnListing('receipts');
|
|
|
- $groupByColumns = array_map(function($column) {
|
|
|
- return 'receipts.' . $column;
|
|
|
- }, $receiptColumns);
|
|
|
+ $baseQuery = \App\Models\Receipt::select('receipts.id')
|
|
|
+ ->leftJoin('members', 'receipts.member_id', '=', 'members.id');
|
|
|
|
|
|
- // 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"])) {
|
|
|
+ if (isset($_GET["search"]["value"]) && !empty($_GET["search"]["value"])) {
|
|
|
$v = str_replace("'", "\'", stripcslashes($_GET["search"]["value"]));
|
|
|
$member_ids = \App\Models\Member::where(function ($query) use ($v) {
|
|
|
$query->whereRaw("CONCAT(first_name, ' ', last_name) like '%" . $v . "%'")
|
|
|
->orWhereRaw("CONCAT(last_name, ' ', first_name) like '%" . $v . "%'");
|
|
|
})->pluck('id');
|
|
|
- $x = $x->whereIn('member_id', $member_ids);
|
|
|
+ $baseQuery = $baseQuery->whereIn('receipts.member_id', $member_ids);
|
|
|
}
|
|
|
|
|
|
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"] != "")
|
|
|
- $x = $x->where('date', '>=', $_GET["filterFrom"]);
|
|
|
+ $baseQuery = $baseQuery->where('receipts.date', '>=', $_GET["filterFrom"]);
|
|
|
|
|
|
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"] != "")
|
|
|
- $x = $x->where('receipts.member_id', $_GET["filterMember"]);
|
|
|
-
|
|
|
- $count = $x->count();
|
|
|
+ $baseQuery = $baseQuery->where('receipts.member_id', $_GET["filterMember"]);
|
|
|
+
|
|
|
+ $count = $baseQuery->count();
|
|
|
+
|
|
|
+ $receiptIds = $baseQuery->pluck('receipts.id');
|
|
|
+
|
|
|
+ $dataQuery = \App\Models\Receipt::select(
|
|
|
+ 'receipts.id',
|
|
|
+ 'receipts.year',
|
|
|
+ 'receipts.number',
|
|
|
+ 'receipts.status',
|
|
|
+ 'receipts.created_at',
|
|
|
+ 'receipts.record_id',
|
|
|
+ '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')
|
|
|
+ ->whereIn('receipts.id', $receiptIds)
|
|
|
+ ->groupBy(
|
|
|
+ 'receipts.id',
|
|
|
+ 'receipts.year',
|
|
|
+ 'receipts.number',
|
|
|
+ 'receipts.status',
|
|
|
+ 'receipts.created_at',
|
|
|
+ 'receipts.record_id',
|
|
|
+ 'members.first_name',
|
|
|
+ 'members.last_name'
|
|
|
+ );
|
|
|
|
|
|
if (isset($_GET["order"])) {
|
|
|
$column = '';
|
|
|
if ($_GET["order"][0]["column"] == 0)
|
|
|
- $column = 'year';
|
|
|
+ $column = 'receipts.year';
|
|
|
if ($_GET["order"][0]["column"] == 1)
|
|
|
- $column = 'number';
|
|
|
+ $column = 'receipts.number';
|
|
|
if ($_GET["order"][0]["column"] == 2)
|
|
|
- $column = 'last_name';
|
|
|
+ $column = 'members.last_name';
|
|
|
if ($_GET["order"][0]["column"] == 3)
|
|
|
- $column = 'first_name';
|
|
|
+ $column = 'members.first_name';
|
|
|
if ($_GET["order"][0]["column"] == 4)
|
|
|
- $column = 'status';
|
|
|
+ $column = 'receipts.status';
|
|
|
if ($_GET["order"][0]["column"] == 5)
|
|
|
- $column = 'date';
|
|
|
- if ($_GET["order"][0]["column"] == 6)
|
|
|
+ $column = 'receipts.created_at';
|
|
|
+ if ($_GET["order"][0]["column"] == 6)
|
|
|
$column = 'totals';
|
|
|
+
|
|
|
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
|
|
|
- $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();
|
|
|
+ if (isset($_GET["start"]) && isset($_GET["length"]))
|
|
|
+ $dataQuery = $dataQuery->offset($_GET["start"])->limit($_GET["length"]);
|
|
|
+
|
|
|
+ $results = $dataQuery->get();
|
|
|
|
|
|
$datas = [];
|
|
|
- foreach ($x as $idx => $r) {
|
|
|
+ foreach ($results as $idx => $r) {
|
|
|
$ids = $r->id . "|" . $r->record_id;
|
|
|
$datas[] = array(
|
|
|
'year' => $r->year,
|
|
|
'number' => $r->number,
|
|
|
- 'last_name' => $r->member->last_name,
|
|
|
- 'first_name' => $r->member->first_name,
|
|
|
+ 'last_name' => $r->last_name ?? '',
|
|
|
+ 'first_name' => $r->first_name ?? '',
|
|
|
'status' => $r->status,
|
|
|
'date' => date("d/m/Y", strtotime($r->created_at)),
|
|
|
'totals' => formatPrice($r->totals),
|
|
|
@@ -1515,10 +1532,15 @@ Route::get('/get_receipts', function () {
|
|
|
);
|
|
|
}
|
|
|
|
|
|
- return json_encode(array("data" => $datas, "recordsTotal" => $count, "recordsFiltered" => $count));
|
|
|
+ return response()->json([
|
|
|
+ "data" => $datas,
|
|
|
+ "recordsTotal" => $count,
|
|
|
+ "recordsFiltered" => $count
|
|
|
+ ]);
|
|
|
});
|
|
|
|
|
|
|
|
|
+
|
|
|
function getColor($months, $m)
|
|
|
{
|
|
|
$class = "wgrey";
|