Files
rkm-conectasus-ci-sandbox/api/app/Services/Geral/ImcService.php
Antonio Lopes dos Santos afec302c3e
All checks were successful
build-api-image / build (push) Successful in 51s
init commit
2026-08-04 16:52:02 -03:00

33 lines
1011 B
PHP

<?php
namespace App\Services\Geral;
use App\Enums\Cadastro\UnidadeMedida;
use App\Models\Geral\InterpretacaoImc;
use App\Utils\ConversaoUnidadeMedidaUtil;
class ImcService
{
public static function calculate($unidadeMedidaMassaId, $massa, $unidadeMedidaAlturaId, $altura) : array
{
if ($unidadeMedidaMassaId == UnidadeMedida::GRAMAS) {
$massa = ConversaoUnidadeMedidaUtil::gramasParaQuilogramas($massa);
}
if ($unidadeMedidaAlturaId == UnidadeMedida::CENTIMETROS) {
$altura = ConversaoUnidadeMedidaUtil::centimetrosParaMetros($altura);
}
$imc = number_format($altura == 0 ? 0 : ($massa / ($altura * $altura)), 1, '.', '');
$interpretacao = InterpretacaoImc::where('min', '<=', $imc)->where('max', '>=', $imc)->first();
return [
'imc' => $imc,
'classificacao' => $interpretacao->classificacao ?? null,
'grau_obesidade' => $interpretacao->grau_obesidade ?? null,
];
}
}