<?php

class AgruparObject
{
    public static function make($data)
    {
        $agrupacion =
            ConfPreNomina::config('id_metodo_distribucion') === MetodosDistribucion::COINCIDENTE ? true : false;

        // Agrupa las cuotas del asociado
        $result = [];
        foreach ($data as $cuota) {
            if ($agrupacion) {
                $cedula = $cuota['cedula'];
                $tipo_credito = $cuota['id_tipo_credito'];

                $result[$cedula][$tipo_credito]['cuotas'][] = $cuota;
            } else {
                $cedula = $cuota['cedula'];

                $result[$cedula]['cuotas'][] = $cuota;
            }
        }

        // Calcula el total de las cuotas del asociado agrupadas
        // Para agrupacion por cedula y tipo de prestamo
        if ($agrupacion) {
            foreach ($result as &$prestamos) {
                foreach ($prestamos as &$cuotas) {
                    $cuotas['total'] = (new Warp($cuotas['cuotas']))->sum('monto');
                }
            }
        } else {
            // Para agrupacion solo por cedula
            foreach ($result as &$cuotas) {
                $cuotas['total'] = (new Warp($cuotas['cuotas']))->sum('monto');
            }
        }

        return $result;
    }
}
