diff --git a/app/Services/Dashboard/Province/ReportService.php b/app/Services/Dashboard/Province/ReportService.php index bba6ddd..7bdbfd2 100644 --- a/app/Services/Dashboard/Province/ReportService.php +++ b/app/Services/Dashboard/Province/ReportService.php @@ -25,7 +25,14 @@ class ReportService COUNT(CASE WHEN lastapp = 'Busy' THEN 1 END) AS dnd, COUNT(CASE WHEN dst BETWEEN 502 AND 599 THEN 1 END) AS trans, COUNT(CASE WHEN disposition <> 'BUSY' AND dst BETWEEN 101 AND 105 THEN 1 END) AS all_calls, - AVG(CASE WHEN dcontext = 'from-internal' AND disposition = 'ANSWERED' THEN billsec END) AS avg + AVG(CASE WHEN dcontext = 'from-internal' AND disposition = 'ANSWERED' THEN billsec END) AS avg, + ( + COUNT(CASE WHEN disposition <> 'BUSY' AND dst BETWEEN 101 AND 105 THEN 1 END) + - ( + COUNT(CASE WHEN dcontext = 'from-internal' AND disposition = 'ANSWERED' AND dst BETWEEN 101 AND 104 THEN 1 END) + + COUNT(CASE WHEN dcontext = 'from-internal' AND disposition = 'NO ANSWER' AND dst BETWEEN 101 AND 104 AND duration > 14 THEN 1 END) + ) + ) AS fail ")->groupByRaw('DATE(calldate)'); $data = DataTableFacade::run( @@ -33,7 +40,6 @@ class ReportService $request, allowedFilters: ['*'], allowedSortings: ['*'], - allowedGroupBy: ['d'] ); $data = collect($data); @@ -91,20 +97,39 @@ class ReportService public function operatorPerformanceDaily(Request $request) { - $query = DB::table(DB::raw("(SELECT *, CAST(dst AS UNSIGNED) AS dst_num FROM asteriskcdrdb.cdr) AS cdr")) + $query = DB::table('asteriskcdrdb.cdr') ->selectRaw(" - DATE(calldate) AS d, + DATE(calldate) as d, dst, - COUNT(CASE WHEN dcontext = 'from-internal' AND disposition = 'ANSWERED' AND dst_num BETWEEN 1 AND 104 THEN 1 END) AS ok, - COUNT(CASE WHEN dcontext = 'from-internal' AND disposition = 'NO ANSWER' AND dst_num BETWEEN 1 AND 104 AND duration > 14 THEN 1 END) AS nok, - COUNT(CASE WHEN dcontext = 'from-internal' AND disposition = 'ANSWERED' AND dst_num BETWEEN 1 AND 104 AND billsec > 9 THEN 1 END) AS b10, + COUNT(CASE WHEN dcontext = 'from-internal' + AND disposition = 'ANSWERED' + AND dst > 100 AND dst < 105 THEN 1 END) AS ok, + COUNT(CASE WHEN dcontext = 'from-internal' + AND disposition = 'NO ANSWER' + AND dst > 100 AND dst < 105 + AND duration > 14 THEN 1 END) AS nok, + COUNT(CASE WHEN dcontext = 'from-internal' + AND disposition = 'ANSWERED' + AND dst > 100 AND dst < 105 + AND billsec > 9 THEN 1 END) AS b10, COUNT(CASE WHEN lastapp = 'Busy' THEN 1 END) AS dnd, - COUNT(CASE WHEN dst_num BETWEEN 502 AND 599 THEN 1 END) AS trans, - COUNT(CASE WHEN disposition <> 'BUSY' AND dst_num BETWEEN 1 AND 105 THEN 1 END) AS total_calls + COUNT(CASE WHEN dst > 501 AND dst < 600 THEN 1 END) AS trans, + COUNT(CASE WHEN disposition <> 'BUSY' + AND dst BETWEEN 101 AND 105 THEN 1 END) AS total, + (COUNT(CASE WHEN disposition <> 'BUSY' + AND dst BETWEEN 101 AND 105 THEN 1 END) + - (COUNT(CASE WHEN dcontext = 'from-internal' + AND disposition = 'ANSWERED' + AND dst > 100 AND dst < 105 THEN 1 END) + + COUNT(CASE WHEN dcontext = 'from-internal' + AND disposition = 'NO ANSWER' + AND dst > 100 AND dst < 105 + AND duration > 14 THEN 1 END) + ) + ) AS fail ") - ->whereBetween('dst_num', [1, 105]) - ->groupBy(DB::raw('DATE(calldate)'), 'dst') - ->orderBy(DB::raw('DATE(calldate)')) + ->whereBetween('dst', [1, 104]) // dst>100 AND dst<105 + ->groupBy('dst', DB::raw('DATE(calldate)')) ->orderBy('dst'); return DataTableFacade::run( @@ -117,18 +142,37 @@ class ReportService public function operatorPerformanceTotal(Request $request) { - $query = DB::table(DB::raw("(SELECT *, CAST(dst AS UNSIGNED) AS dst_num FROM asteriskcdrdb.cdr) AS cdr")) + $query = DB::table('asteriskcdrdb.cdr') ->selectRaw(" - DATE(calldate) AS d, dst, - COUNT(CASE WHEN dcontext = 'from-internal' AND disposition = 'ANSWERED' AND dst_num BETWEEN 1 AND 104 THEN 1 END) AS ok, - COUNT(CASE WHEN dcontext = 'from-internal' AND disposition = 'NO ANSWER' AND dst_num BETWEEN 1 AND 104 AND duration > 14 THEN 1 END) AS nok, - COUNT(CASE WHEN dcontext = 'from-internal' AND disposition = 'ANSWERED' AND dst_num BETWEEN 1 AND 104 AND billsec > 9 THEN 1 END) AS b10, + COUNT(CASE WHEN dcontext = 'from-internal' + AND disposition = 'ANSWERED' + AND dst > 100 AND dst < 105 THEN 1 END) AS ok, + COUNT(CASE WHEN dcontext = 'from-internal' + AND disposition = 'NO ANSWER' + AND dst > 100 AND dst < 105 + AND duration > 14 THEN 1 END) AS nok, + COUNT(CASE WHEN dcontext = 'from-internal' + AND disposition = 'ANSWERED' + AND dst > 100 AND dst < 105 + AND billsec > 9 THEN 1 END) AS b10, COUNT(CASE WHEN lastapp = 'Busy' THEN 1 END) AS dnd, - COUNT(CASE WHEN dst_num BETWEEN 502 AND 599 THEN 1 END) AS trans, - COUNT(CASE WHEN disposition <> 'BUSY' AND dst_num BETWEEN 1 AND 105 THEN 1 END) AS total_calls + COUNT(CASE WHEN dst > 501 AND dst < 600 THEN 1 END) AS trans, + COUNT(CASE WHEN disposition <> 'BUSY' + AND dst BETWEEN 101 AND 105 THEN 1 END) AS total, + (COUNT(CASE WHEN disposition <> 'BUSY' + AND dst BETWEEN 101 AND 105 THEN 1 END) + - (COUNT(CASE WHEN dcontext = 'from-internal' + AND disposition = 'ANSWERED' + AND dst > 100 AND dst < 105 THEN 1 END) + + COUNT(CASE WHEN dcontext = 'from-internal' + AND disposition = 'NO ANSWER' + AND dst > 100 AND dst < 105 + AND duration > 14 THEN 1 END) + ) + ) AS fail ") - ->whereBetween('dst_num', [1, 105]) + ->whereBetween('dst', [1, 104]) ->groupBy('dst') ->orderBy(DB::raw('DATE(calldate)')) ->orderBy('dst'); diff --git a/routes/api.php b/routes/api.php index c68579a..a1c07a7 100644 --- a/routes/api.php +++ b/routes/api.php @@ -153,7 +153,7 @@ Route::middleware('auth') ->group(function () { Route::get('/', 'index')->name('index'); Route::get('/excel', 'excel')->name('excel'); - Route::post('/rate/{operatorDialogue}', 'rate')->name('rate'); + Route::post('/rate', 'rate')->name('rate'); Route::get('/{operatorDialogue}', 'show')->name('show'); }); });