create receipt report logic
This commit is contained in:
106
app/Services/Cartables/AccidentReceiptTableService.php
Normal file
106
app/Services/Cartables/AccidentReceiptTableService.php
Normal file
@@ -0,0 +1,106 @@
|
||||
<?php
|
||||
|
||||
namespace App\Services\Cartables;
|
||||
|
||||
use App\Facades\DataTable\DataTableFacade;
|
||||
use App\Http\Traits\ApiResponse;
|
||||
use App\Models\Accident;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
class AccidentReceiptTableService
|
||||
{
|
||||
use ApiResponse;
|
||||
|
||||
public function dataTable(Request $request)
|
||||
{
|
||||
$user = auth()->user();
|
||||
$query = null;
|
||||
|
||||
if ($user->hasPermissionTo('show-receipt')) {
|
||||
$query = Accident::query();
|
||||
}
|
||||
else {
|
||||
if (is_null($user->province_id)) {
|
||||
return $this->errorResponse('استانی برای شما در سامانه ثبت نشده است!');
|
||||
}
|
||||
|
||||
$query = Accident::query()->where('province_id', '=', $user->province_id);
|
||||
}
|
||||
|
||||
return DataTableFacade::run(
|
||||
$query,
|
||||
$request,
|
||||
allowedFilters: ['*'],
|
||||
allowedSortings: ['*']
|
||||
);
|
||||
}
|
||||
|
||||
public function provinceReport(Request $request): array
|
||||
{
|
||||
$data = DB::select(
|
||||
'SELECT
|
||||
"کشوری" as province_fa,
|
||||
-1 as province_id,
|
||||
COUNT(id) AS tedade,
|
||||
COUNT(CASE WHEN report_base = 0 THEN 1 END) AS police_rah,
|
||||
COUNT(CASE WHEN report_base = 1 THEN 1 END) AS gozaresh_gasht,
|
||||
SUM(`sum`) AS kol_sabt_shode,
|
||||
SUM(CASE WHEN STATUS > 3 THEN `sum` END) AS vasel_shode,
|
||||
SUM(CASE WHEN STATUS > 3 THEN `deposit_insurance_amount` END) AS vasel_shode_bimeh,
|
||||
SUM(CASE WHEN STATUS > 3 THEN `deposit_daghi_amount` END) AS vasel_shode_daghi,
|
||||
SUM(CASE WHEN STATUS > 3 THEN `final_amount` END) AS vasel_shode_final
|
||||
FROM `accidents`
|
||||
where created_at BETWEEN "'.$request->from_date.'" AND "'.$request->date_to.'"
|
||||
union
|
||||
SELECT
|
||||
province_fa,
|
||||
province_id,
|
||||
COUNT(id) AS tedade,
|
||||
COUNT(CASE WHEN report_base = 0 THEN 1 END) AS police_rah,
|
||||
COUNT(CASE WHEN report_base = 1 THEN 1 END) AS gozaresh_gasht,
|
||||
SUM(`sum`) AS kol_sabt_shode,
|
||||
SUM(CASE WHEN STATUS > 3 THEN `sum` END) AS vasel_shode,
|
||||
SUM(CASE WHEN STATUS > 3 THEN `deposit_insurance_amount` END) AS vasel_shode_bimeh,
|
||||
SUM(CASE WHEN STATUS > 3 THEN `deposit_daghi_amount` END) AS vasel_shode_daghi,
|
||||
SUM(CASE WHEN STATUS > 3 THEN `final_amount` END) AS vasel_shode_final
|
||||
FROM `accidents`
|
||||
where created_at BETWEEN "'.$request->from_date.'" AND "'.$request->date_to.'"
|
||||
GROUP BY province_id
|
||||
'
|
||||
);
|
||||
|
||||
return [
|
||||
'data' => collect($data),
|
||||
'fromDate' => $request->from_date,
|
||||
'toDate' => $request->date_to,
|
||||
];
|
||||
}
|
||||
|
||||
public function cityReport(Request $request): array
|
||||
{
|
||||
$data = DB::select(
|
||||
'SELECT
|
||||
city_fa,
|
||||
city_id,
|
||||
COUNT(id) AS tedade,
|
||||
COUNT(CASE WHEN report_base = 0 THEN 1 END) AS police_rah,
|
||||
COUNT(CASE WHEN report_base = 1 THEN 1 END) AS gozaresh_gasht,
|
||||
SUM(`sum`) AS kol_sabt_shode,
|
||||
SUM(CASE WHEN STATUS > 3 THEN `sum` END) AS vasel_shode,
|
||||
SUM(CASE WHEN STATUS > 3 THEN `deposit_insurance_amount` END) AS vasel_shode_bimeh,
|
||||
SUM(CASE WHEN STATUS > 3 THEN `deposit_daghi_amount` END) AS vasel_shode_daghi,
|
||||
SUM(CASE WHEN STATUS > 3 THEN `final_amount` END) AS vasel_shode_final
|
||||
FROM `accidents`
|
||||
where created_at BETWEEN "'.$request->from_date.'" AND "'.$request->date_to.'" AND province_id ='.$request->province_id.'
|
||||
GROUP BY city_id
|
||||
'
|
||||
);
|
||||
|
||||
return [
|
||||
'data' => collect($data),
|
||||
'fromDate' => $request->from_date,
|
||||
'toDate' => $request->date_to,
|
||||
];
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
<?php
|
||||
|
||||
namespace App\Services\Reports;
|
||||
namespace App\Services\Cartables;
|
||||
|
||||
use App\Facades\DataTable\DataTableFacade;
|
||||
use App\Models\InfoItem;
|
||||
@@ -9,7 +9,7 @@ use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Collection;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
class RoadItemReportService
|
||||
class RoadItemTableService
|
||||
{
|
||||
public function supervisorCartableReport(Request $request, $loadRelations = false)
|
||||
{
|
||||
@@ -1,13 +1,13 @@
|
||||
<?php
|
||||
|
||||
namespace App\Services\Reports;
|
||||
namespace App\Services\Cartables;
|
||||
|
||||
use App\Facades\DataTable\DataTableFacade;
|
||||
use App\Models\RoadPatrol;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
class RoadPatrolReportService
|
||||
class RoadPatrolTableService
|
||||
{
|
||||
public function supervisorCartableReport(Request $request, $loadRelations = false)
|
||||
{
|
||||
Reference in New Issue
Block a user