Implement endpoint to view a customer's unit listing.

This commit is contained in:
Djonathan 2022-06-22 12:15:45 -03:00
parent 3fa0440b31
commit d1e3574501
5 changed files with 39 additions and 17 deletions

View File

@ -20,6 +20,18 @@ class OperationSummaryController extends Controller
{ {
} }
public function index(Request $request)
{
try {
$response = $this->dadosTeContract->search($request->all(), true);
return (new OperationSummaryResource($response))
->response()
->setStatusCode(Response::HTTP_OK);
} catch (\Exception $ex) {
return $this->errorResponse(false, $ex->getMessage(), Response::HTTP_INTERNAL_SERVER_ERROR);
}
}
public function operationSummary(Request $request) public function operationSummary(Request $request)
{ {
try { try {

View File

@ -10,5 +10,5 @@ interface ContractInterface
public function update(array $params, $id); public function update(array $params, $id);
public function destroy($id); public function destroy($id);
public function withRelationsByAll($relations); public function withRelationsByAll($relations);
public function search($params); public function search($params, $distinct = false);
} }

View File

@ -20,19 +20,9 @@ class DadosTeRepository extends AbstractRepository implements DadosTeContractInt
parent::__construct($dadosTe); parent::__construct($dadosTe);
} }
private function execute($params): Builder private function execute($fields, $params): Builder
{ {
$query = $this->model $query = $this->model->select($fields);
->select(
DB::raw("TO_CHAR(TO_DATE(dados_te.mes, 'YYMM'), 'MM/YYYY') as mes"),
'dados_te.cod_smart_unidade',
'dados_te.operacao',
'dados_te.tipo',
'dados_te.perfil_contr as contraparte',
'dados_te.montante_nf',
'dados_te.preco_nf',
'dados_te.nf_c_icms'
);
if (!empty($params)) { if (!empty($params)) {
$query = static::getFilterBuilder($params)->applyFilter($query); $query = static::getFilterBuilder($params)->applyFilter($query);
@ -43,8 +33,19 @@ class DadosTeRepository extends AbstractRepository implements DadosTeContractInt
public function getOperationSummary($params): Collection|array public function getOperationSummary($params): Collection|array
{ {
$fields = [
DB::raw("TO_CHAR(TO_DATE(dados_te.mes, 'YYMM'), 'MM/YYYY') as mes"),
'dados_te.cod_smart_unidade',
'dados_te.operacao',
'dados_te.tipo',
'dados_te.perfil_contr as contraparte',
'dados_te.montante_nf',
'dados_te.preco_nf',
'dados_te.nf_c_icms'
];
$params = static::filterRow($params); $params = static::filterRow($params);
return $this->execute($params)->get(); return $this->execute($fields, $params)->get();
} }
public static function filterRow($params, $field = 'mes'): array public static function filterRow($params, $field = 'mes'): array

View File

@ -38,12 +38,20 @@ trait MethodsTrait
return $this->model->with($relations)->get(); return $this->model->with($relations)->get();
} }
public function search($params) public function search($params, $distinct = false)
{ {
$filter = static::getFilterBuilder($params); $filter = static::getFilterBuilder($params);
$filter->setFields(collect($filter->getFields())->transform(fn($value) => $this->model->qualifyColumn($value))->all());
$query = $this->model->select($filter->getFields()); $query = $this->model->select($filter->getFields());
return $filter->applyFilter($query)->get(); $response = $filter->applyFilter($query);
if (isset($distinct)){
$response = $response->distinct();
}
return $response->get();
} }
} }

View File

@ -52,7 +52,8 @@ Route::middleware(['auth:sanctum', 'ability:Client'])->group(function () {
Route::post('economy/estimates', [\App\Http\Controllers\EconomyController::class, 'captiveMonthlyEconomy']); Route::post('economy/estimates', [\App\Http\Controllers\EconomyController::class, 'captiveMonthlyEconomy']);
Route::post('economy/MWh', [\App\Http\Controllers\EconomyController::class, 'costMWhEconomy']); Route::post('economy/MWh', [\App\Http\Controllers\EconomyController::class, 'costMWhEconomy']);
Route::post('operation', [\App\Http\Controllers\OperationSummaryController::class, 'operationSummary']); Route::post('operation/summary', [\App\Http\Controllers\OperationSummaryController::class, 'operationSummary']);
Route::post('operation', [\App\Http\Controllers\OperationSummaryController::class, 'index']);
}); });