public static CompletarCartaOfertaViewModel ConvertToCompletarCartaOfertaViewModel(this Candidatura candidatura)
        {
            if (candidatura.CartaOfertas != null && candidatura.CartaOfertas.Count > 0)
            {
                var completarCartaOfertaViewModel = new CompletarCartaOfertaViewModel()
                {
                    EntregaCartaOfertaViewModel = candidatura.ConvertToEntregaCartaOfertaViewModel(),
                    CompletarCartaOferta        = new CompletarCartaOferta()
                    {
                        SuperaCartaOferta     = candidatura.CartaOfertas.ElementAt(0).Acepta == null ? (int)TipoDecisionEnum.SIN_DECISION_CARTAOFERTA : candidatura.CartaOfertas.ElementAt(0).Acepta.Value ? (int)TipoDecisionEnum.ACEPTA_CARTA_OFERTA : (int)TipoDecisionEnum.NO_ACEPTA_CARTA_OFERTA,
                        MotivoRechazoId       = candidatura.CartaOfertas.ElementAt(0).MotivoRechazoId,
                        MotivoRechazoNombre   = candidatura.CartaOfertas.ElementAt(0).MotivoRechazo?.Nombre,
                        NecesidadId           = candidatura.CartaOfertas.ElementAt(0).NecesidadId,
                        FechaIncorporacion    = candidatura.CartaOfertas.ElementAt(0).FechaIncorporacion,
                        AsignadaCorrectamente = (candidatura.CartaOfertas.ElementAt(0).Necesidad != null) ? candidatura.CartaOfertas.ElementAt(0).Necesidad.AsignadaCorrectamente : true,
                        NecesidadNombre       = candidatura.CartaOfertas.ElementAt(0).Necesidad?.Nombre
                    }
                };
                if (candidatura.CartaOfertas.ElementAt(0).Necesidad != null)
                {
                    completarCartaOfertaViewModel.CompletarCartaOferta.NecesidadNombre       = candidatura.CartaOfertas.ElementAt(0).Necesidad.Nombre;
                    completarCartaOfertaViewModel.CompletarCartaOferta.AsignadaCorrectamente = candidatura.CartaOfertas.ElementAt(0).Necesidad.AsignadaCorrectamente;
                }
                return(completarCartaOfertaViewModel);
            }

            var completarCartaOferta = new CompletarCartaOfertaViewModel();

            completarCartaOferta.CompletarCartaOferta        = new CompletarCartaOferta();
            completarCartaOferta.EntregaCartaOfertaViewModel = new EntregaCartaOfertaViewModel();
            completarCartaOferta.EntregaCartaOfertaViewModel.AgendarCartaOfertaViewModel = new AgendarCartaOfertaViewModel();
            completarCartaOferta.EntregaCartaOfertaViewModel.AgendarCartaOfertaViewModel.AgendarCartaOferta = new AgendarCartaOferta();
            completarCartaOferta.EntregaCartaOfertaViewModel.EntregaCartaOferta = new EntregaCartaOferta();
            return(completarCartaOferta);
        }
        public static void UpdateCartaOferta(this CartaOferta cartaOferta, CompletarCartaOfertaViewModel completarCartaOfertaViewModel, int?cartaOfertaId, Necesidad necesidadOriginal, Necesidad necesidadNueva)
        {
            if (cartaOfertaId != null)
            {
                cartaOferta.CartaOfertaId = (int)cartaOfertaId;
                cartaOferta.ModifiedBy    = ModifiableEntityHelper.GetCurrentUser();
                cartaOferta.Modified      = ModifiableEntityHelper.GetCurrentDate();
            }
            else
            {
                cartaOferta.CreatedBy = ModifiableEntityHelper.GetCurrentUser();
                cartaOferta.Created   = ModifiableEntityHelper.GetCurrentDate();
            }

            if (completarCartaOfertaViewModel.CompletarCartaOferta.SuperaCartaOferta == (int)TipoDecisionEnum.SIN_DECISION_CARTAOFERTA)
            {
                cartaOferta.Acepta = null;
            }
            else
            {
                cartaOferta.Acepta = completarCartaOfertaViewModel.CompletarCartaOferta.SuperaCartaOferta == (int)TipoDecisionEnum.ACEPTA_CARTA_OFERTA;
            }

            cartaOferta.FechaIncorporacion = completarCartaOfertaViewModel.CompletarCartaOferta.FechaIncorporacion;
            cartaOferta.MotivoRechazoId    = completarCartaOfertaViewModel.CompletarCartaOferta.MotivoRechazoId;

            cartaOferta.NecesidadId = completarCartaOfertaViewModel.CompletarCartaOferta.NecesidadId;

            if ((necesidadOriginal != null) && (necesidadOriginal.NecesidadId != completarCartaOfertaViewModel.CompletarCartaOferta.NecesidadId))
            {
                necesidadOriginal.EstadoNecesidadId = (int)EstadoNecesidadEnum.Abierta;
            }

            if (necesidadNueva != null)
            {
                necesidadNueva.EstadoNecesidadId = (int)EstadoNecesidadEnum.Cerrada;
            }


            cartaOferta.Observaciones    = completarCartaOfertaViewModel.EntregaCartaOfertaViewModel.EntregaCartaOferta.ObservacionesCartaOferta;
            cartaOferta.FechaCartaOferta = Convert.ToDateTime(completarCartaOfertaViewModel.EntregaCartaOfertaViewModel.AgendarCartaOfertaViewModel.AgendarCartaOferta.FechaAgendarCarta);
        }
        public static void UpdateCandidaturaCartaOferta(this CartaOferta cartaOferta, CompletarCartaOfertaViewModel cartaOfertaViewModel)
        {
            cartaOferta.ModifiedBy = ModifiableEntityHelper.GetCurrentUser();
            cartaOferta.Modified   = ModifiableEntityHelper.GetCurrentDate();

            //de EntregaCartaOfertaViewModel.AgendarCartaOfertaViewModel.AgendarCartaOferta
            if (cartaOfertaViewModel.EntregaCartaOfertaViewModel.AgendarCartaOfertaViewModel.AgendarCartaOferta.EntrevistadorId > 0)
            {
                cartaOferta.EntrevistadorId = (int)cartaOfertaViewModel.EntregaCartaOfertaViewModel.AgendarCartaOfertaViewModel.AgendarCartaOferta.EntrevistadorId;
            }
            //de EntregaCartaOfertaViewModel.AgendarCartaOfertaViewModel.AgendarCartaOferta
            cartaOferta.FechaCartaOferta = (DateTime)cartaOfertaViewModel.EntregaCartaOfertaViewModel.AgendarCartaOfertaViewModel.AgendarCartaOferta.FechaAgendarCarta;
            cartaOferta.OficinaId        = cartaOfertaViewModel.EntregaCartaOfertaViewModel.AgendarCartaOfertaViewModel.AgendarCartaOferta.OficinaId;

            //de EntregaCartaOfertaViewModel.EntregaCartaOferta
            if (cartaOfertaViewModel.EntregaCartaOfertaViewModel.EntregaCartaOferta != null)
            {
                cartaOferta.Observaciones                = cartaOfertaViewModel.EntregaCartaOfertaViewModel.EntregaCartaOferta.ObservacionesCartaOferta;
                cartaOferta.Candidatura.SalarioActual    = cartaOfertaViewModel.EntregaCartaOfertaViewModel.EntregaCartaOferta.SalarioActual;
                cartaOferta.Candidatura.SalarioDeseado   = cartaOfertaViewModel.EntregaCartaOfertaViewModel.EntregaCartaOferta.SalarioDeseado;
                cartaOferta.Candidatura.SalarioPropuesto = cartaOfertaViewModel.EntregaCartaOfertaViewModel.EntregaCartaOferta.SalarioPropuesto;
            }

            //de cartaOfertaViewModel.CompletarCartaOferta
            if (cartaOfertaViewModel.CompletarCartaOferta != null)
            {
                cartaOferta.FechaIncorporacion = (cartaOfertaViewModel.CompletarCartaOferta.FechaIncorporacion != null) ? cartaOfertaViewModel.CompletarCartaOferta.FechaIncorporacion : cartaOferta.FechaIncorporacion;
                cartaOferta.MotivoRechazoId    = (cartaOfertaViewModel.CompletarCartaOferta.MotivoRechazoId != null) ? cartaOfertaViewModel.CompletarCartaOferta.MotivoRechazoId : cartaOferta.MotivoRechazoId;
                cartaOferta.NecesidadId        = (cartaOfertaViewModel.CompletarCartaOferta.NecesidadId != null) ? cartaOfertaViewModel.CompletarCartaOferta.NecesidadId : cartaOferta.NecesidadId;
            }
        }