public GenerateBitacoraBecarioResponse GenerateBitacoraCambioEstadoBecario(int becarioId, int estadoAnteriorId, int estadoNuevoId)
        {
            var response = new GenerateBitacoraBecarioResponse()
            {
                IsValid = true
            };

            try
            {
                var userInfo  = (UsuarioRolPermisoViewModel)HttpContext.Current.Session["Usuario"];
                var nBecarios = _becarioRepository.CountByCriteria(x => x.BecarioId == becarioId);

                var estadoAnterior = _tipoEstadoBecarioRepository.GetOne(x => x.TipoEstadoBecarioId == estadoAnteriorId);
                var estadoNuevo    = _tipoEstadoBecarioRepository.GetOne(x => x.TipoEstadoBecarioId == estadoNuevoId);


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

                var str = new StringBuilder();
                str.AppendLine(string.Format("El becario con referencia {0} ha pasado del estado '{1}' a estado '{2}' en la fecha {3}.",
                                             becarioId, estadoAnterior.EstadoBecario, estadoNuevo.EstadoBecario, DateTime.Now));

                var message     = str.ToString();
                var newBitacora = new BitacoraBecario()
                {
                    BecarioId        = becarioId,
                    TipoBitacora     = (int)TipoBitacoraBecarioEnum.CambioEstado,
                    MensajeSistema   = message,
                    EstadoAnteriorId = estadoAnteriorId,
                    EstadoNuevoId    = estadoNuevoId,
                    IsActivo         = true,
                    CreatedBy        = userInfo.UsuarioId,
                    Created          = DateTime.Now,
                    Revertible       = true,
                };

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

            return(response);
        }
        public GenerateBitacoraBecarioResponse GenerateBitacoraPausarReanudar(int becarioId, int estadoAnteriorId, int estadoNuevoId, bool esPausar)
        {
            var response = new GenerateBitacoraBecarioResponse()
            {
                IsValid = true
            };

            try
            {
                var userInfo  = (UsuarioRolPermisoViewModel)HttpContext.Current.Session["Usuario"];
                var nBecarios = _becarioRepository.CountByCriteria(x => x.BecarioId == becarioId);

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

                var msgEstado    = "reanudado";
                var tipoBitacora = TipoBitacoraBecarioEnum.Reanudar;
                if (esPausar)
                {
                    tipoBitacora = TipoBitacoraBecarioEnum.Pausar;
                    msgEstado    = "pausado";
                }

                var message            = string.Format("El becario con referencia {0} fué {1} por el usuario: '{2}' en la fecha: '{3}'", becarioId, msgEstado, userInfo.Usuario, DateTime.Now);
                var newBecarioBitacora = new BitacoraBecario()
                {
                    BecarioId        = becarioId,
                    TipoBitacora     = (int)tipoBitacora,
                    MensajeSistema   = message,
                    EstadoAnteriorId = estadoAnteriorId,
                    EstadoNuevoId    = estadoNuevoId,
                    IsActivo         = true,
                    CreatedBy        = userInfo.UsuarioId,
                    Created          = DateTime.Now,
                    Revertible       = false,
                };
                _bitacoraBecarioRepository.Create(newBecarioBitacora);
            }
            catch
            {
                response.IsValid      = false;
                response.ErrorMessage = ERROR_MESSAGE;
            }

            return(response);
        }
        public GenerateBitacoraBecarioResponse GenerateBitacoraRenunciaBecario(int becarioId, int estadoAnteriorId, int estadoNuevoId)
        {
            var response = new GenerateBitacoraBecarioResponse()
            {
                IsValid = true
            };

            try
            {
                var userInfo  = (UsuarioRolPermisoViewModel)HttpContext.Current.Session["Usuario"];
                var nBecarios = _becarioRepository.CountByCriteria(x => x.BecarioId == becarioId);

                var estadoAnterior = _tipoEstadoBecarioRepository.GetOne(x => x.TipoEstadoBecarioId == estadoAnteriorId);
                var estadoNuevo    = _tipoEstadoBecarioRepository.GetOne(x => x.TipoEstadoBecarioId == estadoNuevoId);

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

                var message = string.Format("El becario con referencia {0} fué cambiada a 'Renuncia' por el usuario: '{1}' en la fecha: '{2}'", becarioId, userInfo.Usuario, DateTime.Now /*, motivoRenuncia.Nombre*/);


                var newBecarioBitacora = new BitacoraBecario()
                {
                    BecarioId        = becarioId,
                    TipoBitacora     = (int)TipoBitacoraBecarioEnum.Renuncia,
                    MensajeSistema   = message,
                    EstadoAnteriorId = estadoAnteriorId,
                    EstadoNuevoId    = estadoNuevoId,
                    IsActivo         = true,
                    CreatedBy        = userInfo.UsuarioId,
                    Created          = DateTime.Now,
                    Revertible       = true,
                };

                _bitacoraBecarioRepository.Create(newBecarioBitacora);
            }
            catch
            {
                response.IsValid      = false;
                response.ErrorMessage = ERROR_MESSAGE;
            }

            return(response);
        }
        public GenerateBitacoraBecarioResponse GenerateBitacoraBecarioRetroceder(int becarioId, int bitacoraId)
        {
            var response = new GenerateBitacoraBecarioResponse()
            {
                IsValid = true
            };

            try
            {
                var userInfo  = (UsuarioRolPermisoViewModel)HttpContext.Current.Session["Usuario"];
                var nBecarios = _becarioRepository.CountByCriteria(x => x.BecarioId == becarioId);

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

                var message = string.Format("Se ha deshecho el cambio de la bitacora {0} del becario {1} por el usuario: '{2}' en la fecha: '{3}'", bitacoraId, becarioId, userInfo.Usuario, DateTime.Now);

                var newBecarioBitacora = new BitacoraBecario()
                {
                    BecarioId        = becarioId,
                    TipoBitacora     = (int)TipoBitacoraBecarioEnum.Retroceder,
                    MensajeSistema   = message,
                    EstadoAnteriorId = null,
                    EstadoNuevoId    = null,
                    IsActivo         = true,
                    CreatedBy        = userInfo.UsuarioId,
                    Created          = DateTime.Now,
                    Revertible       = false,
                };

                _bitacoraBecarioRepository.Create(newBecarioBitacora);
            }
            catch
            {
                response.IsValid      = false;
                response.ErrorMessage = ERROR_MESSAGE;
            }

            return(response);
        }
        public GenerateBitacoraBecarioResponse GenerateBitacoraCreateBecario(int becarioId)
        {
            var response = new GenerateBitacoraBecarioResponse()
            {
                IsValid = true
            };

            try
            {
                var userInfo = (UsuarioRolPermisoViewModel)HttpContext.Current.Session["Usuario"];
                var becario  = _becarioRepository.GetOne(x => x.BecarioId == becarioId);

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

                var message            = string.Format("El becario con referencia {0} fué creado por el usuario: '{1}' en la fecha: '{2}'", becarioId, userInfo.Usuario, DateTime.Now);
                var newBitacoraBecario = new BitacoraBecario()
                {
                    BecarioId        = becarioId,
                    TipoBitacora     = (int)TipoBitacoraBecarioEnum.Creacion,
                    MensajeSistema   = message,
                    EstadoAnteriorId = null,
                    EstadoNuevoId    = becario.TipoEstadoBecarioId,
                    IsActivo         = true,
                    CreatedBy        = userInfo.UsuarioId,
                    Created          = DateTime.Now,
                    Revertible       = false,
                };

                _bitacoraBecarioRepository.Create(newBitacoraBecario);
            }
            catch
            {
                response.IsValid      = false;
                response.ErrorMessage = ERROR_MESSAGE;
            }

            return(response);
        }
        public GenerateBitacoraBecarioResponse GenerateBitacoraBecarioManual(int becarioId, string message)
        {
            var response = new GenerateBitacoraBecarioResponse()
            {
                IsValid = true
            };

            try
            {
                var userInfo = (UsuarioRolPermisoViewModel)HttpContext.Current.Session["Usuario"];
                var becario  = _becarioRepository.GetOne(x => x.BecarioId == becarioId);

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

                var newBitacoraBecario = new BitacoraBecario()
                {
                    BecarioId        = becarioId,
                    TipoBitacora     = (int)TipoBitacoraBecarioEnum.Manual,
                    MensajeSistema   = message,
                    EstadoAnteriorId = null,
                    EstadoNuevoId    = null,
                    IsActivo         = true,
                    CreatedBy        = userInfo.UsuarioId,
                    Created          = DateTime.Now,
                    Revertible       = false,
                };

                _bitacoraBecarioRepository.Create(newBitacoraBecario);
            }
            catch
            {
                response.IsValid      = false;
                response.ErrorMessage = ERROR_MESSAGE;
            }

            return(response);
        }