<?php
class EstimativasUtil {
	public static function estimativaInterfaceDev($valor) {
	if($valor == "Simples")
		return 0.5;
	if ($valor == 'Media')
		return 1;
	if ($valor == "Complexa")
		return 2;
	return 0;
}
public static function estimativaDadosDev($valor) {
	if($valor == "Simples")
		return 0.5;
	if ($valor == 'Media')
		return 1;
	if ($valor == "Complexa")
		return 2;
	return 0;
}
public static function estimativaRelatorioDev($valor) {
	if($valor == "Simples")
		return 0.5;
	if ($valor == 'Media')
		return 3;
	if ($valor == "Complexa")
		return 5;
	return 0;
}
public static function estimativaRegrasDev($valor) {
	if($valor == "Simples")
		return 2;
	if ($valor == 'Media')
		return 3;
	if ($valor == "Complexa")
		return 5;
	return 0;
}
public static function estimativaTabelasDev($valor) {
	if($valor == "Simples")
		return 0.5;
	if ($valor == 'Media')
		return 1;
	if ($valor == "Complexa")
		return 2;
	return 0;
}
public static function estimativaInterfaceTestes($valor) {
	if($valor == "Simples")
		return 0.25;
	if ($valor == 'Media')
		return 0.5;
	if ($valor == "Complexa")
		return 1;
	return 0;
}
public static function estimativaDadosTestes($valor) {
	if($valor == "Simples")
		return 0.25;
	if ($valor == 'Media')
		return 5;
	if ($valor == "Complexa")
		return 0.8;
	return 0;
}
public static function estimativaRelatorioTestes($valor) {
	if($valor == "Simples")
		return 0.25;
	if ($valor == 'Media')
		return 0.5;
	if ($valor == "Complexa")
		return 0.7;
	return 0;
}
public static function estimativaRegrasTestes($valor) {
	if($valor == "Simples")
		return 1;
	if ($valor == 'Media')
		return 1.5;
	if ($valor == "Complexa")
		return 2;
	return 0;
}
public static function estimativaTabelasTestes($valor) {
	if($valor == "Simples")
		return 0.25;
	if ($valor == 'Media')
		return 0.5;
	if ($valor == "Complexa")
		return 0.8;
	return 0;
}
public static function estimativaDev($estimativa) {
	$Esforco = (
		self::estimativaInterfaceDev($estimativa->EST_INTERFACE_DEV) +
		self::estimativaDadosDev($estimativa->EST_DADOS_DEV) +
		self::estimativaRelatorioDev($estimativa->EST_RELATORIO_DEV) +
		self::estimativaRegrasDev($estimativa->EST_REGRAS_DEV) +
		self::estimativaTabelasDev($estimativa->EST_TABELAS_DEV)
	);
	$EnvironmentDimension = 2;
	$Coeficiente = 2;
	return self::estimativa($Esforco,$EnvironmentDimension,$Coeficiente);
}
public static function estimativaTestes($estimativa) {
	$Esforco = (
		self::estimativaInterfaceTestes($estimativa->EST_INTERFACE_TESTES) +
		self::estimativaDadosTestes($estimativa->EST_DADOS_TESTES) +
		self::estimativaRelatorioTestes($estimativa->EST_RELATORIO_TESTES) +
		self::estimativaRegrasTestes($estimativa->EST_REGRAS_TESTES) +
		self::estimativaTabelasTestes($estimativa->EST_TABELAS_TESTES)
	);
	$EnvironmentDimension = 1.5;
	$Coeficiente = 1.5;
	return self::estimativa($Esforco,$EnvironmentDimension,$Coeficiente);
}
public static function estimativa($Esforco,$EnvironmentDimension,$Coeficiente) {

	$EsforcoAjustado = $Esforco * $Coeficiente;
	
	$EsforcoComEd = $EsforcoAjustado * $EnvironmentDimension / 12;

	$PontosAjustados = 0;
	if($EsforcoComEd % 1 > 0 && $EsforcoComEd % 1 < 0.5) {
		$PontosAjustados = $EsforcoComEd - $EsforcoComEd % 1;
	} else if($EsforcoComEd % 1 > 0.5) {
		$PontosAjustados = $EsforcoComEd + (1 - $EsforcoComEd % 1);
	} else {
		$PontosAjustados = $EsforcoComEd;
	}

	$TempoMinutos = $EsforcoComEd * $EnvironmentDimension * 60;
	$horas = intval($TempoMinutos / 60);          
    $minutos = $TempoMinutos % 60;
    $TempoFormatado = self::padDigit($horas).':'.self::padDigit($minutos);

	return $TempoFormatado;
}
public static function padDigit($value) {
    return ($value < 10) ? '0' . $value : $value;
}
public static function getNotNull($val) {
        if(!empty($val) && $val != 'null')
            return $val;
        return '';
    }
}