示例#1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="solicitudDTO"></param>
        /// <returns></returns>
        public MensajeDTO Agregar(SolicitudDTO solicitudDTO)
        {
            if (this.SolicitudValida(solicitudDTO))
            {
                Solicitud solicitud;
                solicitud = TransferirEntidad.TransferirDatosSolicitudDTO(solicitudDTO);

                //Busca credecniales del usuario logeado
                Models.Entidades.UABC.Usuario usuario = usuarioUABCRepositorio.BuscarUsuarioUABC(solicitud.Correo_Solicitante);

                Usuario subdirector = usuarioRepositorio.BuscarPorRol((int)RolEnum.Subdirector);
                //Busca al proximo usuario que su rol es coordinador


                //Envia el correo al sigueinte usuario
                CorreoComponente correo = new CorreoComponente(usuario.Email, usuario.Contraseña);
                if (correo.MandarCorreo("Sistema Solicitud de Salida" + "Tiene una solicitud pendiente por revisar ", "Solicitud Pendiente", subdirector.Correo))
                {
                    solicitudRepositorio.Agregar(solicitud);
                    return(MensajeComponente.mensaje("Solicitud creada exitosamente", true));
                }

                return(MensajeComponente.mensaje("Error al crear la solicitud", false));
            }
            return(MensajeComponente.mensaje("Error al crear la solicitud", false));
        }
示例#2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="usuario"></param>
        /// <returns></returns>
        public MensajeDTO BuscarSolicitudesPorRols(SolicitudFiltro filtro, int paginacion)
        {
            List <SolicitudDTO> solicitudesDTO = new List <SolicitudDTO>();
            List <Solicitud>    solicitudes;
            MensajeDTO          mensaje;

            if (filtro.Carrera == null)
            {
                filtro.carrera = true;
                filtro.Carrera = new CarreraDTO();
            }
            if (filtro.Nombre == null)
            {
                filtro.Nombre = "";
            }

            if (filtro.usuario.Rol != null)
            {
                switch (filtro.usuario.Rol.Descripcion)
                {
                case "Coordinador":
                    solicitudes = solicitudRepositorio.buscarSolicitudesPorCoordinador(filtro);
                    break;

                case "Posgrado":
                    solicitudes = solicitudRepositorio.BuscarSolicitudPorPosgrado(filtro);
                    break;

                case "Administradora":
                    solicitudes = solicitudRepositorio.buscarSolicitudesPorAdministrador(filtro);
                    break;

                case "Subdirector":
                    solicitudes = solicitudRepositorio.BuscarSolicitudPorSubDirector(filtro);
                    break;

                case "Director":
                    solicitudes = solicitudRepositorio.BuscarSolicitudPorDirector(filtro);
                    break;

                default:
                    solicitudes = new List <Solicitud>();
                    break;
                }
            }
            else
            {
                solicitudes = solicitudRepositorio.buscarSolicitudesPorDocente(filtro);
            }

            foreach (Solicitud solicitud in solicitudes)
            {
                solicitudesDTO.Add(TransferirDTO.TransferirSolicitud(solicitud));
            }

            mensaje       = MensajeComponente.mensaje("Datos", solicitudesDTO.Skip(paginacion - 10).Take(paginacion));
            mensaje.largo = solicitudesDTO.Count();
            return(mensaje);
        }
示例#3
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="usuario"></param>
        /// <param name="id"></param>
        /// <returns></returns>
        public MensajeDTO AceptarSolicitud(UsuarioDTO usuario, int id)
        {
            Solicitud solicitud = solicitudRepositorio.BuscarPorId(id);

            Models.Entidades.UABC.Usuario usuarioUABC = usuarioUABCRepositorio.BuscarUsuarioUABC(usuario.Correo);
            CorreoComponente correo       = new CorreoComponente(usuarioUABC.Email, usuarioUABC.Contraseña);
            Usuario          destinatario = null;
            bool             solicitudTerminadaRevision = false;

            switch (usuario.Rol.Descripcion)
            {
            case "Coordinador":
                solicitud.Validacion.Coordinador = true;
                destinatario = usuarioRepositorio.BuscarPorRol((int)RolEnum.Director);
                break;

            case "Posgrado":
                solicitud.Validacion.Posgrado = true;
                solicitudTerminadaRevision    = true;
                break;

            case "Administradora":
                solicitud.Validacion.Administrador = true;
                destinatario = usuarioRepositorio.BuscarPorRol((int)RolEnum.Coordinador);
                break;

            case "Subdirector":
                solicitud.Validacion.Subdirector = true;
                destinatario = usuarioRepositorio.BuscarPorRol((int)RolEnum.Administradora);
                break;

            case "Director":
                solicitud.Validacion.Director = true;
                if (solicitud.Actividad.Posgrado == true)
                {
                    destinatario = usuarioRepositorio.BuscarPorRol((int)RolEnum.Posgrado);
                }
                else
                {
                    solicitudTerminadaRevision = true;
                }
                break;
            }

            if (solicitudTerminadaRevision)
            {
                solicitud.Id_Estado = (int)EstadoEnum.Aceptado;
                correo.MandarCorreo("Sistema Solicitud de Salida" + "La solicitud:" + id + "ha sido aceptada",
                                    "Solicitud Aceptada", solicitud.Correo_Solicitante);
            }
            else
            {
                correo.MandarCorreo("Sistema Solicitud de Salida" + "Tiene una solicitud pendiente por revisar. Solicitud :" + id
                                    , "Solicitud Pendiente", destinatario.Correo);
            }
            solicitudRepositorio.Modificar(solicitud);
            return(MensajeComponente.mensaje("Se ha aprobado correctamente", true));
        }
示例#4
0
 public MensajeDTO EditarSolicitud(SolicitudDTO solicitudDTO)
 {
     if (this.SolicitudValida(solicitudDTO))
     {
         Solicitud solicitud = solicitudRepositorio.BuscarPorId(solicitudDTO.Id);
         solicitud.Fecha_Modificacion   = DateTime.Now;
         solicitud.Evento               = TransferirDTO.TransferirEvento(solicitudDTO.Evento);
         solicitud.Actividad            = TransferirDTO.TransferirActividad(solicitudDTO.Actividad);
         solicitud.Validacion           = TransferirDTO.TransferirValidacion(solicitudDTO.Validacion);
         solicitud.Recurso              = TransferirDTO.TransferirRecurso(solicitudDTO.Recurso_Solicitado);
         solicitud.Id_Carrera           = solicitudDTO.Carrera.Id;
         solicitud.Id_Categoria         = solicitudDTO.Categoria.Id;
         solicitud.Id_Estado            = (int)EstadoEnum.Proceso;
         solicitud.Comentario_Rechazado = "";
         Models.Entidades.UABC.Usuario usuarioUABC = usuarioUABCRepositorio.BuscarUsuarioUABC(solicitud.Correo_Solicitante);
         CorreoComponente correo = new CorreoComponente(usuarioUABC.Email, usuarioUABC.Contraseña);
         Usuario          usuario;
         if (!solicitud.Validacion.Subdirector)
         {
             //Buscar subdirector
             usuario = usuarioRepositorio.BuscarPorRol((int)RolEnum.Director);
         }
         else
         {
             if (!solicitud.Validacion.Administrador)
             {
                 usuario = usuarioRepositorio.BuscarPorRol((int)RolEnum.Administradora);
                 //buscar administrador
             }
             else
             {
                 if (!solicitud.Validacion.Coordinador)
                 {
                     usuario = usuarioRepositorio.BuscarPorRol((int)RolEnum.Coordinador);
                     //buscar coordinador
                 }
                 else
                 {
                     if (!solicitud.Validacion.Director)
                     {
                         usuario = usuarioRepositorio.BuscarPorRol((int)RolEnum.Director);
                         //buscar director
                     }
                     else
                     {
                         usuario = usuarioRepositorio.BuscarPorRol((int)RolEnum.Posgrado);
                         //buscar posgrado
                     }
                 }
             }
         }
         correo.MandarCorreo("Sistema Solicitud de Salida" + "La solicitud: " + solicitud.Id + " ha sido corregida.", "Solicitud Pendiente", usuario.Correo);
         solicitudRepositorio.Modificar(solicitud);
         return(MensajeComponente.mensaje("Solicitud modificada exitosamente", true));
     }
     return(MensajeComponente.mensaje("Error al crear la solicitud", false));;
 }
示例#5
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public MensajeDTO RechazarTotalmente(int id, string Correo)
        {
            Models.Entidades.UABC.Usuario usuarioUABC = usuarioUABCRepositorio.BuscarUsuarioUABC(Correo);
            CorreoComponente correo    = new CorreoComponente(usuarioUABC.Email, usuarioUABC.Contraseña);
            Solicitud        solicitud = solicitudRepositorio.BuscarPorId(id);

            solicitudRepositorio.Borrar(solicitud);
            correo.MandarCorreo("Sistema Solicitud de Salida. " + "La solicitud: " + id + " ha sido rechazada."
                                , "Solicitud Rechazada", solicitud.Correo_Solicitante);
            return(MensajeComponente.mensaje("Solicitud Rechazada", false));
        }
示例#6
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="usuario"></param>
        /// <param name="id"></param>
        /// <returns></returns>
        public MensajeDTO RechazarSolicitud(SolicitudDTO solicitudDTO)
        {
            Solicitud solicitud = solicitudRepositorio.BuscarPorId(solicitudDTO.Id);

            solicitud.Comentario_Rechazado = solicitudDTO.Comentario_Rechazado;
            solicitud.Id_Estado            = (int)EstadoEnum.Rechazado;
            Models.Entidades.UABC.Usuario usuarioUABC = usuarioUABCRepositorio.BuscarUsuarioUABC(solicitud.Correo_Solicitante);
            CorreoComponente correo = new CorreoComponente(usuarioUABC.Email, usuarioUABC.Contraseña);

            correo.MandarCorreo("Sistema Solicitud de Salida" + "Se ha rechazado una solicitud", "Solicitud Pendiente", solicitud.Correo_Solicitante);
            solicitudRepositorio.Modificar(solicitud);
            return(MensajeComponente.mensaje("Se ha aprobado correctamente", true));
        }
示例#7
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="usuario"></param>
        /// <returns></returns>
        public MensajeDTO InicioSesion(UsuarioDTO usuario)
        {
            Models.Entidades.UABC.Usuario usuarioUABC = usuarioRepositorioUABC.BuscarUsuarioUABC(usuario.Correo);


            if (usuarioUABC != null)
            {
                if (usuario.Contrasenia.Equals(usuarioUABC.Contraseña))
                {
                    Models.Entidades.FIAD.Usuario usuarioFIAD = usuarioRepositorioFIAD.BuscarUsuarioFIAD(usuario.Correo);

                    if (usuarioFIAD != null)
                    {
                        Models.Entidades.SS.Usuario usuarioSS = usuarioRepositorioSS.BuscarPorCorreo(usuario.Correo);

                        if (usuarioSS != null)
                        {
                            UsuarioDTO usuarioAdministrativo = TransferirDTO.TransferirUsuario(usuarioSS);
                            usuarioAdministrativo.Nombre          = usuarioUABC.Nombre;
                            usuarioAdministrativo.Apellido        = usuarioUABC.Apellido;
                            usuarioAdministrativo.Numero_Empleado = usuarioUABC.Numero_Empleado;
                            return(MensajeComponente.mensaje("Se ha iniciado sesion como " + usuarioAdministrativo.Rol.Nombre, usuarioAdministrativo));
                        }
                        else
                        {
                            UsuarioDTO usuarioProfesor = new UsuarioDTO();
                            usuarioProfesor.Nombre   = usuarioUABC.Nombre;
                            usuarioProfesor.Apellido = usuarioUABC.Apellido;
                            return(MensajeComponente.mensaje("Se ha iniciado sesion como Profesor", usuarioProfesor));
                        }
                    }
                    else
                    {
                        return(MensajeComponente.mensaje("El usuario no pertenece a la Facultad de Ingenieria, Arquitectura y Diseño", null));
                    }
                }
                else
                {
                    return(MensajeComponente.mensaje("La contraseña introducida es incorrecta", null));
                }
            }
            else
            {
                return(MensajeComponente.mensaje("El usuario no pertenece a el dominio de UABC", null));
            }
        }
示例#8
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="id"></param>
        /// <param name="usuario"></param>
        /// <returns></returns>
        public MensajeDTO AceptarTotalmente(int id, string Correo)
        {
            Models.Entidades.UABC.Usuario usuarioUABC = usuarioUABCRepositorio.BuscarUsuarioUABC(Correo);
            CorreoComponente correo    = new CorreoComponente(usuarioUABC.Email, usuarioUABC.Contraseña);
            Solicitud        solicitud = solicitudRepositorio.BuscarPorId(id);

            solicitud.Id_Estado = (int)EstadoEnum.Aceptado;
            solicitud.Validacion.Subdirector   = true;
            solicitud.Validacion.Administrador = true;
            solicitud.Validacion.Coordinador   = true;
            solicitud.Validacion.Director      = true;
            solicitud.Validacion.Posgrado      = true;
            solicitudRepositorio.Modificar(solicitud);
            correo.MandarCorreo("Sistema Solicitud de Salida. " + "La solicitud: " + id + " ha sido aceptada."
                                , "Solicitud Aceptada", solicitud.Correo_Solicitante);
            return(MensajeComponente.mensaje("Solicitud Aprobada", true));
        }
示例#9
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="usuarioDTO"></param>
 /// <returns></returns>
 public MensajeDTO Modificar(UsuarioDTO usuarioDTO)
 {
     if (this.UsuarioValido(usuarioDTO))
     {
         if (ExisteComponente.UABC(usuarioDTO) && ExisteComponente.FIAD(usuarioDTO))
         {
             if (usuarioRepositorio.BuscarPorCorreo(usuarioDTO.Correo) == null)
             {
                 Usuario usuario = usuarioRepositorio.BuscarPorId(usuarioDTO.Id);
                 usuario.Correo = usuarioDTO.Correo;
                 usuarioRepositorio.Modificar(usuario);
                 return(MensajeComponente.mensaje("", true));
             }
             return(MensajeComponente.mensaje("El correo ya existe en el sistema", false));
         }
         return(MensajeComponente.mensaje("El correo no pertenece a UABC", false));
     }
     return(MensajeComponente.mensaje("Los datos no son validos", false));
 }
示例#10
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="usuario"></param>
        /// <returns></returns>
        public MensajeDTO BuscarSolicitudesPorCorreo(SolicitudFiltro filtro, int paginacion)
        {
            List <SolicitudDTO> solicitudesDTO = new List <SolicitudDTO>();

            if (filtro.Carrera == null)
            {
                filtro.carrera = true;
                filtro.Carrera = new CarreraDTO();
            }
            List <Solicitud> solicitudes = solicitudRepositorio.BuscarSolicitudPorCorreo(filtro);
            MensajeDTO       mensaje;

            foreach (Solicitud solicitud in solicitudes)
            {
                solicitudesDTO.Add(TransferirDTO.TransferirSolicitud(solicitud));
            }
            mensaje       = MensajeComponente.mensaje("Datos", solicitudesDTO.Skip(paginacion - 10).Take(paginacion).ToList());
            mensaje.largo = solicitudesDTO.Count();
            return(mensaje);
        }