public GenerateBitacoraResponse GenerateBitacoraRenunciaCandidatura(int candidaturaId, int estadoAnteriorId, int estadoNuevoId, int etapaAnteriorId, int motivoRenunciaId)
        {
            var response = new GenerateBitacoraResponse()
            {
                IsValid = true
            };

            try
            {
                var userInfo      = (UsuarioRolPermisoViewModel)HttpContext.Current.Session["Usuario"];
                var nCandidaturas = _candidaturaRepository.CountByCriteria(x => x.CandidaturaId == candidaturaId);

                var estadoAnterior = _tipoEstadoCandidaturaRepository.GetOne(x => x.TipoEstadoCandidaturaId == estadoAnteriorId);
                var estadoNuevo    = _tipoEstadoCandidaturaRepository.GetOne(x => x.TipoEstadoCandidaturaId == estadoNuevoId);
                var etapaAnterior  = _tipoEtapaCandidaturaRepository.GetOne(x => x.TipoEtapaCandidaturaId == etapaAnteriorId);

                var motivoRenuncia = _maestroRepository.GetOne(x => x.MaestroId == motivoRenunciaId);

                if ((userInfo == null) || (nCandidaturas != 1) ||
                    (estadoAnterior == null) || (estadoNuevo == null) ||
                    (etapaAnterior == null) || (motivoRenuncia == null))
                {
                    response.IsValid      = false;
                    response.ErrorMessage = ERROR_MESSAGE;
                    return(response);
                }

                var message     = string.Format("La candidatura con referencia {0} fué cambiada a 'Renuncia' por el usuario: '{1}' en la fecha: '{2}'. Motivo: {3}", candidaturaId, userInfo.Usuario, DateTime.Now, motivoRenuncia.Nombre);
                var newBitacora = new Bitacora()
                {
                    CandidaturaId    = candidaturaId,
                    TipoBitacora     = (int)TipoBitacoraEnum.Renuncia,
                    Observaciones    = "",
                    MensajeSistema   = message,
                    EstadoAnteriorId = estadoAnteriorId,
                    EtapaAnteriorId  = etapaAnteriorId,
                    EstadoNuevoId    = estadoNuevoId,
                    EtapaNuevaId     = etapaAnteriorId,
                    IsActivo         = true,
                    CreatedBy        = userInfo.UsuarioId,
                    Created          = DateTime.Now,
                    Revertible       = true,
                };

                _bitacoraRepository.Create(newBitacora);
            }
            catch
            {
                response.IsValid      = false;
                response.ErrorMessage = ERROR_MESSAGE;
            }

            return(response);
        }
        public GenerateBitacoraEditNecesidadResponse GenerateBitacoraEditNecesidad(DatosComparativaBitacoraViewModel datosBitacoraViewModel)
        {
            var response = new GenerateBitacoraEditNecesidadResponse()
            {
                IsValid = true
            };

            try
            {
                var userInfo                = (UsuarioRolPermisoViewModel)HttpContext.Current.Session["Usuario"];
                var nombreEstadoAnterior    = _maestroRepository.GetOne(x => x.MaestroId == datosBitacoraViewModel.EstadoAnteriorId);
                var nombreEstadoNuevo       = _maestroRepository.GetOne(x => x.MaestroId == datosBitacoraViewModel.EstadoNuevoId);
                var nombrePerfilAnterior    = _maestroRepository.GetOne(x => x.MaestroId == datosBitacoraViewModel.PerfilAnteriorId);
                var nombrePerfilNuevo       = _maestroRepository.GetOne(x => x.MaestroId == datosBitacoraViewModel.PerfilNuevoId);
                var personaAsignadaAnterior = datosBitacoraViewModel.PersonaAsignadaAnterior;
                var personaAsignadaNueva    = datosBitacoraViewModel.PersonaAsignadaNueva;

                if ((userInfo == null))
                {
                    response.IsValid      = false;
                    response.ErrorMessage = ERROR_MESSAGE;
                    return(response);
                }

                var message = string.Format("La necesidad con referencia {0} fué editada por el usuario: '{1}' en la fecha: '{2}'", datosBitacoraViewModel.NecesidadId, userInfo.Usuario, DateTime.Now);
                if (datosBitacoraViewModel.EstadoAnteriorId != datosBitacoraViewModel.EstadoNuevoId)
                {
                    message = message + string.Format("\nEl estado ha cambiado de '{0}' a '{1}'", nombreEstadoAnterior.Nombre, nombreEstadoNuevo.Nombre);
                }
                if (personaAsignadaAnterior != personaAsignadaNueva)
                {
                    if (personaAsignadaAnterior != null && personaAsignadaNueva != null)
                    {
                        message = message + string.Format("\nSe ha cambiado la persona asignada de {0} a {1}", personaAsignadaAnterior, personaAsignadaNueva);
                    }
                    else if (personaAsignadaNueva == null)
                    {
                        message = message + string.Format("\nSe ha liberado la persona asignada {0}", personaAsignadaAnterior);
                    }
                    else
                    {
                        message = message + string.Format("\nSe ha asignado la persona {0}", personaAsignadaNueva);
                    }
                }

                if (datosBitacoraViewModel.PerfilAnteriorId != datosBitacoraViewModel.PerfilNuevoId)
                {
                    message = message + string.Format("\nEl perfil ha cambiado de '{0}' a '{1}'", nombrePerfilAnterior.Nombre, nombrePerfilNuevo.Nombre);
                }
                if (datosBitacoraViewModel.FechaSolicitudAnterior != datosBitacoraViewModel.FechaSolicitudNueva)
                {
                    message = message + string.Format("\nLa fecha de solicitud ha cambiado de '{0}' a '{1}'", datosBitacoraViewModel.FechaSolicitudAnterior, datosBitacoraViewModel.FechaSolicitudNueva);
                }

                if (datosBitacoraViewModel.FechaCompromisoAnterior != datosBitacoraViewModel.FechaCompromisoNueva)
                {
                    if (datosBitacoraViewModel.FechaCompromisoAnterior != null)
                    {
                        message = message + string.Format("\nLa fecha de compromiso ha cambiado de '{0}' a '{1}'", datosBitacoraViewModel.FechaCompromisoAnterior, datosBitacoraViewModel.FechaCompromisoNueva);
                    }
                    else
                    {
                        message = message + string.Format("\nSe ha asignado la fecha de compromiso '{0}'", datosBitacoraViewModel.FechaCompromisoNueva);
                    }
                }
                if (datosBitacoraViewModel.FechaCierreAnterior != datosBitacoraViewModel.FechaCierreNueva)
                {
                    if (datosBitacoraViewModel.FechaCierreAnterior != null)
                    {
                        message = message + string.Format("\nLa fecha de cierre ha cambiado de '{0}' a '{1}'", datosBitacoraViewModel.FechaCierreAnterior, datosBitacoraViewModel.FechaCierreNueva);
                    }
                    else
                    {
                        message = message + string.Format("\nSe ha asignado la fecha de cierre '{0}'", datosBitacoraViewModel.FechaCierreNueva);
                    }
                }
                var newBitacora = new BitacoraNecesidad()
                {
                    NecesidadId             = datosBitacoraViewModel.NecesidadId,
                    TipoBitacora            = (int)TipoBitacoraNecesidadEnum.Edicion,
                    MensajeSistema          = message,
                    EstadoAnteriorId        = datosBitacoraViewModel.EstadoAnteriorId,
                    EstadoNuevoId           = datosBitacoraViewModel.EstadoNuevoId,
                    PerfilAnteriorId        = datosBitacoraViewModel.PerfilAnteriorId,
                    PerfilNuevoId           = datosBitacoraViewModel.PerfilNuevoId,
                    FechaSolicitudAnterior  = datosBitacoraViewModel.FechaSolicitudAnterior,
                    FechaSolicitudNueva     = datosBitacoraViewModel.FechaSolicitudNueva,
                    FechaCompromisoAnterior = datosBitacoraViewModel.FechaCompromisoAnterior,
                    FechaCompromisoNueva    = datosBitacoraViewModel.FechaCompromisoNueva,
                    FechaCierreAnterior     = datosBitacoraViewModel.FechaCierreAnterior,
                    FechaCierreNueva        = datosBitacoraViewModel.FechaCierreNueva,
                    PersonaAsignadaAnterior = datosBitacoraViewModel.PersonaAsignadaAnterior,
                    PersonaAsignadaNueva    = datosBitacoraViewModel.PersonaAsignadaNueva,
                    IsActivo  = true,
                    CreatedBy = userInfo.UsuarioId,
                    Created   = DateTime.Now,
                };

                _bitacoraNecesidadRepository.Create(newBitacora);
            }
            catch
            {
                response.IsValid      = false;
                response.ErrorMessage = ERROR_MESSAGE;
            }

            return(response);
        }