protected override ValidationResult IsValid(object value, ValidationContext validationContext) { IndicadorViewModel indicadorViewModel = (IndicadorViewModel)value; if ((indicadorViewModel != null && indicadorViewModel.MetaAceptableViewModel != null) || indicadorViewModel.Id > 0) { IMedicionService medicionService = DependencyResolver.Current.GetService <IMedicionService>(); EscalaGraficosViewModel escalas = medicionService.ObtenerEscalasGrafico(indicadorViewModel); decimal[] escalaValores = escalas.EscalaValores; if (escalaValores[0] <= escalaValores[1] && escalaValores[1] <= escalaValores[2] && escalaValores[2] <= escalaValores[3] && escalaValores[3] <= escalaValores[4] && escalaValores[4] <= escalaValores[5]) { return(null); } else { return(new ValidationResult("Verifique que los rangos de las metas sean correctos.")); } } else { return(null); } }
private string ObtenerColorCeldaHeatMap(MedicionViewModel medicion) { EscalaGraficosViewModel escalas = ObtenerEscalasGrafico(medicion.IndicadorViewModel); decimal valor = escalas.EscalaValores[0]; int i = 0; decimal valorMedicion = decimal.Parse(medicion.Valor.Replace(".", ",")); while (valorMedicion >= valor && i < 5) { i++; valor = escalas.EscalaValores[i]; } if (i == 0) { i++; } int j = DesempatarColor(medicion, escalas); if (j > 0) { i = j; } return(escalas.EscalaColores[i - 1]); }
private void CompletarEscalasGauge(GaugeViewModel gauge, MedicionViewModel medicion) { EscalaGraficosViewModel escalas = ObtenerEscalasGrafico(medicion.IndicadorViewModel); gauge.Escala = escalas.EscalaValores; gauge.Colores = escalas.EscalaColores; if (decimal.Parse(gauge.Valor.Replace(".", ",")) < gauge.Escala[0]) { string valor = (gauge.Escala[0] != 0 ? gauge.Escala[0].ToString().Replace(",", ".") : "0"); valor = (valor.Contains(".") ? valor.TrimEnd('0').TrimEnd('.') : valor); gauge.Valor = valor; } else if (decimal.Parse(gauge.Valor.Replace(".", ",")) > gauge.Escala[5]) { string valor = (gauge.Escala[5] != 0 ? gauge.Escala[5].ToString().Replace(",", ".") : "0"); valor = (valor.Contains(".") ? valor.TrimEnd('0').TrimEnd('.') : valor); gauge.Valor = valor; } }
public bool ValidaMedicion(MedicionViewModel medicionViewModel) { if (medicionViewModel.NoAplica) { return(true); } EscalaGraficosViewModel escalas = ObtenerEscalasGrafico(medicionViewModel.IndicadorViewModel); decimal valor = escalas.EscalaValores[0]; int i = 0; decimal valorMedicion = decimal.Parse(medicionViewModel.Valor.Replace(".", ",")); while (valorMedicion >= valor && i < 5) { i++; valor = escalas.EscalaValores[i]; } if (i == 0) { i++; } int j = DesempatarColor(medicionViewModel, escalas); if (j > 0) { i = j; } if (i == 1 || i == 5) { if (escalas.EscalaDeInaceptableAExcelente) { if (i == 1) { Meta meta = AutoMapper.Mapper.Map <Meta>(medicionViewModel.IndicadorViewModel.MetaInaceptableViewModel); return(ValidaMedicionBorde(meta, valorMedicion)); } else { Meta meta = AutoMapper.Mapper.Map <Meta>(medicionViewModel.IndicadorViewModel.MetaExcelenteViewModel); return(ValidaMedicionBorde(meta, valorMedicion)); } } else { if (i == 1) { Meta meta = AutoMapper.Mapper.Map <Meta>(medicionViewModel.IndicadorViewModel.MetaExcelenteViewModel); return(ValidaMedicionBorde(meta, valorMedicion)); } else { Meta meta = AutoMapper.Mapper.Map <Meta>(medicionViewModel.IndicadorViewModel.MetaInaceptableViewModel); return(ValidaMedicionBorde(meta, valorMedicion)); } } } else { return(true); } }
private int DesempatarColor(MedicionViewModel medicion, EscalaGraficosViewModel escalas) { decimal valorMedicion = decimal.Parse(medicion.Valor.Replace(".", ",")); int i = -1; if (escalas.EscalaDeInaceptableAExcelente) { Meta meta = AutoMapper.Mapper.Map <Meta>(medicion.IndicadorViewModel.MetaInaceptableViewModel); bool estaEnLaMeta = ValorEnLaMeta(meta, valorMedicion); if (estaEnLaMeta) { i = 1; } else { meta = AutoMapper.Mapper.Map <Meta>(medicion.IndicadorViewModel.MetaAMejorarViewModel); estaEnLaMeta = ValorEnLaMeta(meta, valorMedicion); if (estaEnLaMeta) { i = 2; } else { meta = AutoMapper.Mapper.Map <Meta>(medicion.IndicadorViewModel.MetaAceptableViewModel); estaEnLaMeta = ValorEnLaMeta(meta, valorMedicion); if (estaEnLaMeta) { i = 3; } else { meta = AutoMapper.Mapper.Map <Meta>(medicion.IndicadorViewModel.MetaSatisfactoriaViewModel); estaEnLaMeta = ValorEnLaMeta(meta, valorMedicion); if (estaEnLaMeta) { i = 4; } else { meta = AutoMapper.Mapper.Map <Meta>(medicion.IndicadorViewModel.MetaExcelenteViewModel); estaEnLaMeta = ValorEnLaMeta(meta, valorMedicion); if (estaEnLaMeta) { i = 5; } } } } } } else { Meta meta = AutoMapper.Mapper.Map <Meta>(medicion.IndicadorViewModel.MetaExcelenteViewModel); bool estaEnLaMeta = ValorEnLaMeta(meta, valorMedicion); if (estaEnLaMeta) { i = 1; } else { meta = AutoMapper.Mapper.Map <Meta>(medicion.IndicadorViewModel.MetaSatisfactoriaViewModel); estaEnLaMeta = ValorEnLaMeta(meta, valorMedicion); if (estaEnLaMeta) { i = 2; } else { meta = AutoMapper.Mapper.Map <Meta>(medicion.IndicadorViewModel.MetaAceptableViewModel); estaEnLaMeta = ValorEnLaMeta(meta, valorMedicion); if (estaEnLaMeta) { i = 3; } else { meta = AutoMapper.Mapper.Map <Meta>(medicion.IndicadorViewModel.MetaAMejorarViewModel); estaEnLaMeta = ValorEnLaMeta(meta, valorMedicion); if (estaEnLaMeta) { i = 4; } else { meta = AutoMapper.Mapper.Map <Meta>(medicion.IndicadorViewModel.MetaInaceptableViewModel); estaEnLaMeta = ValorEnLaMeta(meta, valorMedicion); if (estaEnLaMeta) { i = 5; } } } } } } return(i); }
public EscalaGraficosViewModel ObtenerEscalasGrafico(IndicadorViewModel indicador) { EscalaGraficosViewModel escalas = new EscalaGraficosViewModel(); decimal valorExcelente = ObtenerValorEscala(indicador.MetaExcelenteViewModel, indicador.MetaSatisfactoriaViewModel); decimal valorSatisfactorio = ObtenerValorEscala(indicador.MetaSatisfactoriaViewModel, indicador.MetaAceptableViewModel); decimal valorAceptable = ObtenerValorEscala(indicador.MetaAceptableViewModel, indicador.MetaAMejorarViewModel); decimal valorAMejorar = ObtenerValorEscala(indicador.MetaAMejorarViewModel, indicador.MetaInaceptableViewModel); if (valorExcelente >= valorSatisfactorio) { decimal minimoEscala = 0; if (!string.IsNullOrEmpty(indicador.MetaInaceptableViewModel.Valor1) && !string.IsNullOrEmpty(indicador.MetaInaceptableViewModel.Valor2)) { minimoEscala = decimal.Parse(indicador.MetaInaceptableViewModel.Valor1.Replace(".", ",")) < decimal.Parse(indicador.MetaInaceptableViewModel.Valor2.Replace(".", ",")) ? decimal.Parse(indicador.MetaInaceptableViewModel.Valor1.Replace(".", ",")) : decimal.Parse(indicador.MetaInaceptableViewModel.Valor2.Replace(".", ",")); } else { minimoEscala = string.IsNullOrEmpty(indicador.MetaInaceptableViewModel.Valor1) ? decimal.Parse(indicador.MetaInaceptableViewModel.Valor2.Replace(".", ",")) : decimal.Parse(indicador.MetaInaceptableViewModel.Valor1.Replace(".", ",")); } decimal maximoEscala = 0; if (!string.IsNullOrEmpty(indicador.MetaExcelenteViewModel.Valor1) && !string.IsNullOrEmpty(indicador.MetaExcelenteViewModel.Valor2)) { maximoEscala = decimal.Parse(indicador.MetaExcelenteViewModel.Valor1.Replace(".", ",")) > decimal.Parse(indicador.MetaExcelenteViewModel.Valor2.Replace(".", ",")) ? decimal.Parse(indicador.MetaExcelenteViewModel.Valor1.Replace(".", ",")) : decimal.Parse(indicador.MetaExcelenteViewModel.Valor2.Replace(".", ",")); } else { maximoEscala = string.IsNullOrEmpty(indicador.MetaExcelenteViewModel.Valor1) ? decimal.Parse(indicador.MetaExcelenteViewModel.Valor2.Replace(".", ",")) : decimal.Parse(indicador.MetaExcelenteViewModel.Valor1.Replace(".", ",")); } escalas.EscalaValores = new decimal[6] { minimoEscala, valorAMejorar, valorAceptable, valorSatisfactorio, valorExcelente, maximoEscala }; escalas.EscalaColores = ColorMetaInaceptableExcelente; escalas.EscalaDeInaceptableAExcelente = true; } else { decimal maximoEscala = 0; if (!string.IsNullOrEmpty(indicador.MetaInaceptableViewModel.Valor1) && !string.IsNullOrEmpty(indicador.MetaInaceptableViewModel.Valor2)) { maximoEscala = decimal.Parse(indicador.MetaInaceptableViewModel.Valor1.Replace(".", ",")) > decimal.Parse(indicador.MetaInaceptableViewModel.Valor2.Replace(".", ",")) ? decimal.Parse(indicador.MetaInaceptableViewModel.Valor1.Replace(".", ",")) : decimal.Parse(indicador.MetaInaceptableViewModel.Valor2.Replace(".", ",")); } else { maximoEscala = string.IsNullOrEmpty(indicador.MetaInaceptableViewModel.Valor1) ? decimal.Parse(indicador.MetaInaceptableViewModel.Valor2.Replace(".", ",")) : decimal.Parse(indicador.MetaInaceptableViewModel.Valor1.Replace(".", ",")); } decimal minimoEscala = 0; if (!string.IsNullOrEmpty(indicador.MetaExcelenteViewModel.Valor1) && !string.IsNullOrEmpty(indicador.MetaExcelenteViewModel.Valor2)) { minimoEscala = decimal.Parse(indicador.MetaExcelenteViewModel.Valor1.Replace(".", ",")) < decimal.Parse(indicador.MetaExcelenteViewModel.Valor2.Replace(".", ",")) ? decimal.Parse(indicador.MetaExcelenteViewModel.Valor1.Replace(".", ",")) : decimal.Parse(indicador.MetaExcelenteViewModel.Valor2.Replace(".", ",")); } else { minimoEscala = string.IsNullOrEmpty(indicador.MetaExcelenteViewModel.Valor1) ? decimal.Parse(indicador.MetaExcelenteViewModel.Valor2.Replace(".", ",")) : decimal.Parse(indicador.MetaExcelenteViewModel.Valor1.Replace(".", ",")); } escalas.EscalaValores = new decimal[6] { minimoEscala, valorExcelente, valorSatisfactorio, valorAceptable, valorAMejorar, maximoEscala }; escalas.EscalaColores = ColorMetaExcelenteInaceptable; escalas.EscalaDeInaceptableAExcelente = false; } return(escalas); }