From 846b07c7414b31a7ec69fb278ec1965a1be7c195 Mon Sep 17 00:00:00 2001 From: Djonathan Date: Mon, 11 Jul 2022 18:28:23 -0300 Subject: [PATCH] Fixed Moving Average Endpoint Implementation. --- app/Models/Pld.php | 3 +-- app/Repositories/Pld/PldRepository.php | 26 +++++++++++++++----------- 2 files changed, 16 insertions(+), 13 deletions(-) diff --git a/app/Models/Pld.php b/app/Models/Pld.php index f11d7e8..7137478 100644 --- a/app/Models/Pld.php +++ b/app/Models/Pld.php @@ -14,7 +14,7 @@ use OwenIt\Auditing\Auditable; class Pld extends Model implements Auditing { - use HasFactory, SoftDeletes, Auditable; + use HasFactory, Auditable; protected $table = "pld"; @@ -42,5 +42,4 @@ class Pld extends Model implements Auditing return $date->format('d/m/Y H:i:s'); } - } diff --git a/app/Repositories/Pld/PldRepository.php b/app/Repositories/Pld/PldRepository.php index 3824041..79f5483 100644 --- a/app/Repositories/Pld/PldRepository.php +++ b/app/Repositories/Pld/PldRepository.php @@ -159,18 +159,19 @@ class PldRepository extends AbstractRepository implements PldContractInterface 'pld.submercado as submarket', DB::raw("AVG(pld.valor) as value"), DB::raw("pld.mes_ref as year_month"), - DB::raw("TO_CHAR(TO_DATE(pld.mes_ref, 'YYMM'::text)::timestamp with time zone, 'MM/YYYY'::text) as year_month_formatted"), + DB::raw("TO_CHAR(TO_DATE(pld.mes_ref, 'YYMM'::text)::timestamp with time zone, 'MM/YYYY'::text) as year_month_formatted") ]; - $i = 0; - foreach ($params['filters'] as $param) { - if ($param['field'] === $field) { - $params['filters'][$i]['field'] = "TO_CHAR(TO_DATE(pld.{$param['field']}, 'YYMM'), 'MM/YYYY')"; - } - $i++; - } + $fields2 = ['day_formatted', + 'day_calc', + 'submarket', + 'year_month', + 'year_month_formatted', + 'value', + DB::raw('avg(value) over(ORDER BY day_formatted) as mMovel') + ]; - return $this->execute($fields, $params) + $query = $this->execute($fields) ->groupBy( DB::raw("(to_char(('1899-12-30'::date + ('1 day'::interval day * (pld.dia_num)::double precision)), 'DD'::text))"), DB::raw("('1899-12-30'::date + ('1 day'::interval day * (pld.dia_num)::double precision))"), @@ -178,9 +179,12 @@ class PldRepository extends AbstractRepository implements PldContractInterface "pld.mes_ref", DB::raw("(to_char((to_date(pld.mes_ref, 'YYMM'::text))::timestamp with time zone, 'MM/YYYY'::text))") ) - ->orderByRaw("('1899-12-30'::date + ('1 day'::interval day * (pld.dia_num)::double precision))") - ->get(); + ->orderByRaw("('1899-12-30'::date + ('1 day'::interval day * (pld.dia_num)::double precision))"); + return $this->execute($fields2, $params) + ->from($query, 'plds') + ->orderBy('day_calc', 'asc') + ->get(); } public function getConsumptionBySchedule($params, $field = "dia_num"): Collection|array