public static SegundaEntrevistaViewModel ConvertToSegundaEntrevistaViewModel(this Candidatura candidatura)
        {
            Entrevista segundaEntrevista;
            int?       motivoSegundaEntrevista       = null;
            string     motivoNombreSegundaEntrevista = "";
            bool       superaSegundaEntrevista       = false;
            bool       sinDecidir = false;
            SegundaEntrevistaViewModel segundaEntrevistaViewModel = new SegundaEntrevistaViewModel();

            if (candidatura.Entrevistas != null && (candidatura.Entrevistas.Any(x => x.TipoEntrevistaId == (int)TipoEntrevistaEnum.SegundaEntrevista)))
            {
                segundaEntrevista             = candidatura.Entrevistas.Single(x => x.TipoEntrevistaId == (int)TipoEntrevistaEnum.SegundaEntrevista);
                motivoSegundaEntrevista       = segundaEntrevista.MotivoId ?? null;
                motivoNombreSegundaEntrevista = segundaEntrevista.Motivo?.Nombre;
                superaSegundaEntrevista       = segundaEntrevista.SuperaEntrevista;
                sinDecidir = segundaEntrevista.SinDecision;

                segundaEntrevistaViewModel = new SegundaEntrevistaViewModel()
                {
                    AgendarSegundaEntrevista = segundaEntrevista.ConvertToAgendarSegundaEntrevistaViewModel(),

                    RangoSalarialesyDisponibilidades = candidatura.GetRangoSalarialesyDisponibilidades(),

                    ResultadoSegundaEntrevista = candidatura.GetResultadoSegundaEntrevista(motivoSegundaEntrevista, motivoNombreSegundaEntrevista, superaSegundaEntrevista, sinDecidir),
                };
            }

            if (candidatura.CartaOfertas != null && (candidatura.EtapaCandidaturaId == (int)TipoEtapaCandidaturaEnum.Fin) &&
                (candidatura.EstadoCandidaturaId == (int)TipoEstadoCandidaturaEnum.CartaOferta ||
                 candidatura.EstadoCandidaturaId == (int)TipoEstadoCandidaturaEnum.Contratado || candidatura.EstadoCandidaturaId == (int)TipoEstadoCandidaturaEnum.Descartado ||
                 candidatura.EstadoCandidaturaId == (int)TipoEstadoCandidaturaEnum.RechazaOferta || candidatura.EstadoCandidaturaId == (int)TipoEstadoCandidaturaEnum.Renuncia))
            {
                segundaEntrevistaViewModel.MostrarRangosSalariales = false;
            }
            else
            {
                segundaEntrevistaViewModel.MostrarRangosSalariales = true;
            }

            return(segundaEntrevistaViewModel);
        }
        public static PrimeraEntrevistaViewModel ConvertToPrimeraEntrevistaViewModel(this Candidatura candidatura)
        {
            Entrevista primeraEntrevista;
            string     observaciones                 = "";
            int?       motivoPrimeraEntrevista       = null;
            string     motivoNombrePrimeraEntrevista = "";
            bool       superaPrimeraEntrevista       = false;
            bool       sinDecidir = false;
            bool       completada = false;
            int?       resultadoPrimeraEntrevista = null;

            byte[] TS       = null;
            string NombreTS = "";

            PrimeraEntrevistaViewModel primeraEntrevistaViewModel = new PrimeraEntrevistaViewModel();

            if (candidatura.Entrevistas != null && (candidatura.Entrevistas.Any(x => x.TipoEntrevistaId == (int)TipoEntrevistaEnum.PrimeraEntrevista)))
            {
                primeraEntrevista             = candidatura.Entrevistas.Single(x => x.TipoEntrevistaId == (int)TipoEntrevistaEnum.PrimeraEntrevista);
                observaciones                 = primeraEntrevista.Observaciones ?? "";
                motivoPrimeraEntrevista       = primeraEntrevista.MotivoId ?? null;
                motivoNombrePrimeraEntrevista = primeraEntrevista.Motivo?.Nombre;
                superaPrimeraEntrevista       = primeraEntrevista.SuperaEntrevista;
                sinDecidir = primeraEntrevista.SinDecision;
                resultadoPrimeraEntrevista = primeraEntrevista.ResultadoTest ?? null;
                TS       = primeraEntrevista.TS;
                NombreTS = primeraEntrevista.NombreTS;



                primeraEntrevistaViewModel = new PrimeraEntrevistaViewModel()
                {
                    AgendarPrimeraEntrevista = primeraEntrevista.ConvertToAgendarPrimeraEntrevistaViewModel(),

                    RangoSalarialesyDisponibilidades = candidatura.GetRangoSalarialesyDisponibilidades(observaciones),

                    ResultadoPrimeraEntrevista = candidatura.GetResultadoPrimeraEntrevista(motivoPrimeraEntrevista, motivoNombrePrimeraEntrevista, superaPrimeraEntrevista, sinDecidir, resultadoPrimeraEntrevista, NombreTS, TS, completada),
                };
            }

            if (candidatura.Entrevistas != null && (candidatura.EstadoCandidaturaId == (int)TipoEstadoCandidaturaEnum.SegundaEntrevista ||
                                                    candidatura.EstadoCandidaturaId == (int)TipoEstadoCandidaturaEnum.CartaOferta ||
                                                    candidatura.EstadoCandidaturaId == (int)TipoEstadoCandidaturaEnum.Descartado ||
                                                    candidatura.EstadoCandidaturaId == (int)TipoEstadoCandidaturaEnum.Renuncia ||
                                                    candidatura.EstadoCandidaturaId == (int)TipoEstadoCandidaturaEnum.RechazaOferta ||
                                                    candidatura.EstadoCandidaturaId == (int)TipoEstadoCandidaturaEnum.Contratado) &&
                (candidatura.EtapaCandidaturaId == (int)TipoEtapaCandidaturaEnum.FeedbackSegundaEntrevista ||
                 candidatura.EtapaCandidaturaId == (int)TipoEtapaCandidaturaEnum.AgendarCartaOferta ||
                 candidatura.EtapaCandidaturaId == (int)TipoEtapaCandidaturaEnum.PendienteDecisionCartaOferta ||
                 candidatura.EtapaCandidaturaId == (int)TipoEtapaCandidaturaEnum.FeedbackCartaOferta ||
                 candidatura.EtapaCandidaturaId == (int)TipoEtapaCandidaturaEnum.Fin) &&
                (candidatura.Entrevistas.Any(x => x.TipoEntrevistaId == (int)TipoEntrevistaEnum.SegundaEntrevista)))
            {
                primeraEntrevistaViewModel.MostrarRangosSalariales = false;
            }
            else
            {
                primeraEntrevistaViewModel.MostrarRangosSalariales = true;
            }

            return(primeraEntrevistaViewModel);
        }