Creation of a new R/MWh cost api route method.
This commit is contained in:
parent
ed4a74ab77
commit
67325f063c
@ -14,6 +14,7 @@ use Illuminate\Http\JsonResponse;
|
|||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use Illuminate\Http\Response;
|
use Illuminate\Http\Response;
|
||||||
use Illuminate\Support\Arr;
|
use Illuminate\Support\Arr;
|
||||||
|
use Illuminate\Support\Str;
|
||||||
|
|
||||||
class EconomyController extends Controller
|
class EconomyController extends Controller
|
||||||
{
|
{
|
||||||
@ -79,11 +80,6 @@ class EconomyController extends Controller
|
|||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
$response = $this->economyContract->getCostMWhEconomy($request->all());
|
$response = $this->economyContract->getCostMWhEconomy($request->all());
|
||||||
|
|
||||||
$res = static::checkDate($response);
|
|
||||||
|
|
||||||
dd($res);
|
|
||||||
|
|
||||||
return (new EconomyResource($response))
|
return (new EconomyResource($response))
|
||||||
->response()
|
->response()
|
||||||
->setStatusCode(Response::HTTP_OK);
|
->setStatusCode(Response::HTTP_OK);
|
||||||
@ -92,58 +88,4 @@ class EconomyController extends Controller
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function checkDate($value)
|
|
||||||
{
|
|
||||||
$start_date = current( $value);
|
|
||||||
|
|
||||||
dd($start_date);
|
|
||||||
|
|
||||||
|
|
||||||
$y = [];
|
|
||||||
foreach ($value as $val) {
|
|
||||||
$te = explode('/', $val->mes);
|
|
||||||
unset($te[0]);
|
|
||||||
$y[] = $te[1];
|
|
||||||
}
|
|
||||||
|
|
||||||
$val = collect($y)->unique();
|
|
||||||
|
|
||||||
$start_date = date_create("2021-01-01");
|
|
||||||
$end_date = date_create("2022-03-30"); // If you want to include this date, add 1 day
|
|
||||||
|
|
||||||
$interval = DateInterval::createFromDateString('1 months');
|
|
||||||
$daterange = new DatePeriod($start_date, $interval, $end_date);
|
|
||||||
|
|
||||||
$date = [];
|
|
||||||
foreach ($daterange as $date1) {
|
|
||||||
$date[] = $date1->format('m/Y');
|
|
||||||
}
|
|
||||||
|
|
||||||
$arr = collect($value)->toArray();
|
|
||||||
|
|
||||||
$i = 0;
|
|
||||||
foreach ($date as $dt) {
|
|
||||||
if (empty($arr[$i])){
|
|
||||||
$arr[] = ['mes' => $dt];
|
|
||||||
}
|
|
||||||
$i++;
|
|
||||||
}
|
|
||||||
|
|
||||||
sort($arr);
|
|
||||||
|
|
||||||
dd($arr);
|
|
||||||
|
|
||||||
// if (!in_array($dt, $arr[$i], true)) {
|
|
||||||
// $res[] = $dt;
|
|
||||||
// } else {
|
|
||||||
// $res[] = $arr[$i];
|
|
||||||
// }
|
|
||||||
|
|
||||||
|
|
||||||
dd($arr);
|
|
||||||
|
|
||||||
|
|
||||||
dd($arr, $date);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -6,9 +6,12 @@ namespace App\Repositories\Economy;
|
|||||||
|
|
||||||
use App\Models\Economy;
|
use App\Models\Economy;
|
||||||
use App\Repositories\AbstractRepository;
|
use App\Repositories\AbstractRepository;
|
||||||
|
use DateInterval;
|
||||||
|
use DatePeriod;
|
||||||
use Illuminate\Database\Eloquent\Builder;
|
use Illuminate\Database\Eloquent\Builder;
|
||||||
use Illuminate\Database\Eloquent\Collection;
|
use Illuminate\Database\Eloquent\Collection;
|
||||||
use Illuminate\Support\Facades\DB;
|
use Illuminate\Support\Facades\DB;
|
||||||
|
use Illuminate\Support\Str;
|
||||||
|
|
||||||
class EconomyRepository extends AbstractRepository implements EconomyContractInterface
|
class EconomyRepository extends AbstractRepository implements EconomyContractInterface
|
||||||
{
|
{
|
||||||
@ -93,7 +96,7 @@ class EconomyRepository extends AbstractRepository implements EconomyContractInt
|
|||||||
"economia.dad_estimado"
|
"economia.dad_estimado"
|
||||||
];
|
];
|
||||||
|
|
||||||
return $this->execute($params, $field)
|
$result = $this->execute($params, $field)
|
||||||
->whereBetween(
|
->whereBetween(
|
||||||
DB::raw("TO_DATE(economia.mes, 'YYMM')"),
|
DB::raw("TO_DATE(economia.mes, 'YYMM')"),
|
||||||
[
|
[
|
||||||
@ -103,24 +106,44 @@ class EconomyRepository extends AbstractRepository implements EconomyContractInt
|
|||||||
->groupBy(['mes', 'dad_estimado'])
|
->groupBy(['mes', 'dad_estimado'])
|
||||||
->get();
|
->get();
|
||||||
|
|
||||||
|
return static::checkDate($result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
protected function where($query)
|
public static function checkDate($value): array
|
||||||
{
|
{
|
||||||
return $query->where(
|
|
||||||
DB::raw()
|
$val = collect($value)->transform(fn($item, $value) => collect(Str::of($item['mes'])->explode('/')->offsetGet(1)))->unique()->toArray();
|
||||||
);
|
|
||||||
|
$date_stat = current($val);
|
||||||
|
$date_end = end($val);
|
||||||
|
$start_date = date_create("{$date_stat[0]}-01-01");
|
||||||
|
$end_date = date_create("{$date_end[0]}-03-30"); // If you want to include this date, add 1 day
|
||||||
|
|
||||||
|
$interval = DateInterval::createFromDateString('1 months');
|
||||||
|
$daterange = new DatePeriod($start_date, $interval, $end_date);
|
||||||
|
|
||||||
|
$date = [];
|
||||||
|
foreach ($daterange as $date1) {
|
||||||
|
$date[] = $date1->format('m/Y');
|
||||||
|
}
|
||||||
|
|
||||||
|
$arr = collect($value)->toArray();
|
||||||
|
|
||||||
|
$i = 0;
|
||||||
|
foreach ($date as $dt) {
|
||||||
|
if (empty($arr[$i])) {
|
||||||
|
$arr[] = ['mes' => $dt];
|
||||||
|
}
|
||||||
|
$i++;
|
||||||
|
}
|
||||||
|
sort($arr);
|
||||||
|
|
||||||
|
return $arr;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
protected function getRowField(): array
|
|
||||||
{
|
|
||||||
return [
|
|
||||||
DB::raw("TO_CHAR(TO_DATE(economia.mes, 'YYMM'), 'MM/YYYY') as mes"),
|
|
||||||
DB::raw("TRIM(TO_CHAR(economia.custo_cativo, '99999999.99')) as custo_cativo"),
|
|
||||||
DB::raw("TRIM(TO_CHAR(economia.custo_livre, '99999999.99')) as custo_livre"),
|
|
||||||
DB::raw("COALESCE(economia.economia_mensal / NULLIF(economia.custo_livre, 0), 0) as custo")
|
|
||||||
];
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -6,7 +6,6 @@ namespace App\Repositories\Pld;
|
|||||||
|
|
||||||
use App\Models\Pld;
|
use App\Models\Pld;
|
||||||
use App\Repositories\AbstractRepository;
|
use App\Repositories\AbstractRepository;
|
||||||
use Carbon\Carbon;
|
|
||||||
use Illuminate\Contracts\Container\BindingResolutionException;
|
use Illuminate\Contracts\Container\BindingResolutionException;
|
||||||
use Illuminate\Database\Eloquent\Builder;
|
use Illuminate\Database\Eloquent\Builder;
|
||||||
use Illuminate\Database\Eloquent\Collection;
|
use Illuminate\Database\Eloquent\Collection;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user