예제 #1
0
        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);
            }
        }
예제 #2
0
        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]);
        }
예제 #3
0
        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;
            }
        }
예제 #4
0
        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);
            }
        }
예제 #5
0
        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);
        }
예제 #6
0
        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);
        }