This commit is contained in:
32
api/app/Services/Geral/ImcService.php
Normal file
32
api/app/Services/Geral/ImcService.php
Normal file
@@ -0,0 +1,32 @@
|
||||
<?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,
|
||||
];
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user