/// <summary>
        /// Este metodo se encarga de obtener una lista de objetos de una persona, desde la base de datos
        /// </summary>
        /// <param name="id"></param>
        /// <returns>una lista con los objetos</returns>
        public List <ParticipacionInstitucionalInternaDomainModel> GetParticipacionesPersonalesById(int id)
        {
            List <ParticipacionInstitucionalInternaDomainModel>             participaciones = new List <ParticipacionInstitucionalInternaDomainModel>();
            Expression <Func <tblParticipacionInstitucionalInterna, bool> > predicate       = p => p.idPersonal == id;
            List <tblParticipacionInstitucionalInterna> tblParticipaciones = participacionInstitucionalInternaRepository.GetAll(predicate).ToList();

            foreach (tblParticipacionInstitucionalInterna participacion in tblParticipaciones)
            {
                ParticipacionInstitucionalInternaDomainModel participacionDM = new ParticipacionInstitucionalInternaDomainModel();

                participacionDM.id                     = participacion.id;
                participacionDM.idCatDocumento         = participacion.idCatDocumento.Value;
                participacionDM.idCatProgramaEducativo = participacion.idCatProgramaEducativo.Value;
                participacionDM.idCatTipoActividad     = participacion.idCatTipoActividad.Value;
                participacionDM.idPersonal             = participacion.idPersonal.Value;
                participacionDM.strActividad           = participacion.strActividad;
                participacionDM.fechaInicio            = participacion.fechaInicio;
                participacionDM.fechaTermino           = participacion.fechaTermino;
                participacionDM.documentos             = new DocumentosDomainModel
                {
                    StrUrl = participacion.catDocumentos.strUrl
                };

                participaciones.Add(participacionDM);
            }

            return(participaciones);
        }
        /// <summary>
        /// Este metodo se encarga de obtener un objeto de una participacion, de la base de datos.
        /// </summary>
        /// <param name="idPersonal"></param>
        /// <param name="idDocumento"></param>
        /// <returns>un objeto</returns>
        public ParticipacionInstitucionalInternaDomainModel GetParticipacion(int idPersonal, int idDocumento)
        {
            ParticipacionInstitucionalInternaDomainModel participacionDM = new ParticipacionInstitucionalInternaDomainModel();

            Expression <Func <tblParticipacionInstitucionalInterna, bool> > predicante = p => p.idPersonal == idPersonal &&
                                                                                         p.idCatDocumento == idDocumento;

            tblParticipacionInstitucionalInterna tblParticipacion =
                participacionInstitucionalInternaRepository.GetAll(predicante).FirstOrDefault <tblParticipacionInstitucionalInterna>();

            participacionDM.id                     = tblParticipacion.id;
            participacionDM.idCatDocumento         = tblParticipacion.idCatDocumento.Value;
            participacionDM.idCatProgramaEducativo = tblParticipacion.idCatProgramaEducativo.Value;
            participacionDM.idCatTipoActividad     = tblParticipacion.idCatTipoActividad.Value;
            participacionDM.idPersonal             = tblParticipacion.idPersonal.Value;
            participacionDM.strActividad           = tblParticipacion.strActividad;
            participacionDM.fechaInicio            = tblParticipacion.fechaInicio;
            participacionDM.fechaTermino           = tblParticipacion.fechaTermino;
            participacionDM.documentos             = new DocumentosDomainModel
            {
                StrUrl = tblParticipacion.catDocumentos.strUrl
            };

            return(participacionDM);
        }
        public void EditarParticipacionPersonal(ParticipacionInstitucionalInternaVM participacionInstitucionalInternaVM)
        {
            ParticipacionInstitucionalInternaDomainModel participacionDM = new ParticipacionInstitucionalInternaDomainModel();

            AutoMapper.Mapper.Map(participacionInstitucionalInternaVM, participacionDM);

            if (participacionInstitucionalInternaVM.id > 0)
            {
                participacionInstitucionalInternaBusiness.AddUpdateParticipacion(participacionDM);
            }
        }
        /// <summary>
        /// Este metodo se encarga de insertar el objeto en la base de datos
        /// </summary>
        /// <param name="institucionalInternaVM"></param>
        /// <returns></returns>
        private bool AddUpdatePartipacionInstitucionalInterna(ParticipacionInstitucionalInternaVM institucionalInternaVM)
        {
            bool respuesta = false;

            ParticipacionInstitucionalInternaDomainModel participacionInstitucionalInternaDM = new ParticipacionInstitucionalInternaDomainModel();

            AutoMapper.Mapper.Map(institucionalInternaVM, participacionInstitucionalInternaDM);

            respuesta = participacionInstitucionalInternaBusiness.AddUpdateParticipacion(participacionInstitucionalInternaDM);
            return(respuesta);
        }
        public ActionResult GetParticipacionById(int idCatDocumento)
        {
            int idPersonal = SessionPersister.AccountSession.IdPersonal;
            ParticipacionInstitucionalInternaDomainModel participacionDM =
                participacionInstitucionalInternaBusiness.GetParticipacion(idPersonal, idCatDocumento);

            if (participacionDM != null)
            {
                ParticipacionInstitucionalInternaVM participacionVM = new ParticipacionInstitucionalInternaVM();
                AutoMapper.Mapper.Map(participacionDM, participacionVM);
                return(PartialView("_Eliminar", participacionVM));
            }

            return(View());
        }
        public ActionResult DeleteParticipacion(ParticipacionInstitucionalInternaVM participacionVM)
        {
            int idPersonal = SessionPersister.AccountSession.IdPersonal;
            ParticipacionInstitucionalInternaDomainModel participacionDM =
                participacionInstitucionalInternaBusiness.GetParticipacion(idPersonal, participacionVM.idCatDocumento);

            if (participacionDM != null)
            {
                string url = Server.MapPath(Recursos.RecursosSistema.DOCUMENTO_USUARIO + SessionPersister.AccountSession.NombreCompleto + "/" + participacionDM.documentos.StrUrl);
                if (FileManager.FileManager.DeleteFileFromServer(url))
                {
                    documentosBusiness.DeleteDocumento(participacionVM.idCatDocumento);
                }
            }

            return(View(Create()));
        }
        public ActionResult GetParticipacionByIdEdit(int idCatDocumento)
        {
            int idPersonal = SessionPersister.AccountSession.IdPersonal;
            ParticipacionInstitucionalInternaDomainModel participacionDM =
                participacionInstitucionalInternaBusiness.GetParticipacion(idPersonal, idCatDocumento);

            if (participacionDM != null)
            {
                ViewBag.idCatProgramaEducativo = new SelectList(programaEducativoBusiness.GetProgramasEducativos(), "idProgramaEducativo", "strDescripcion");
                ViewBag.idCatTipoActividad     = new SelectList(tipoActividad.GetTiposActividades(), "id", "strDescripcion");
                ViewBag.idCatPeriodo           = new SelectList(periodoBusiness.GetPeriodos(), "id", "strDescripcion");

                ParticipacionInstitucionalInternaVM participacionVM = new ParticipacionInstitucionalInternaVM();
                AutoMapper.Mapper.Map(participacionDM, participacionVM);
                return(PartialView("_Editar", participacionVM));
            }
            return(View());
        }
        /// <summary>
        /// Este metodo se encarga de insertar o actualizar un objeto de una persona, en la base de datos
        /// </summary>
        /// <param name="participacionInstitucionalInternaDM"></param>
        /// <returns>true o false</returns>
        public bool AddUpdateParticipacion(ParticipacionInstitucionalInternaDomainModel participacionInstitucionalInternaDM)
        {
            bool respuesta = false;

            if (participacionInstitucionalInternaDM.id > 0)
            {
                tblParticipacionInstitucionalInterna participacion =
                    participacionInstitucionalInternaRepository.
                    SingleOrDefault(p => p.id == participacionInstitucionalInternaDM.id);

                if (participacion != null)
                {
                    participacion.id = participacionInstitucionalInternaDM.id;
                    participacion.idCatProgramaEducativo = participacionInstitucionalInternaDM.idCatProgramaEducativo;
                    participacion.idCatTipoActividad     = participacionInstitucionalInternaDM.idCatTipoActividad;
                    participacion.strActividad           = participacionInstitucionalInternaDM.strActividad;

                    participacionInstitucionalInternaRepository.Update(participacion);

                    respuesta = true;
                }
            }
            else
            {
                tblParticipacionInstitucionalInterna tblParticipacionInstitucional = new tblParticipacionInstitucionalInterna();
                catDocumentos catDocumentos = new catDocumentos();
                tblParticipacionInstitucional.id                     = participacionInstitucionalInternaDM.id;
                tblParticipacionInstitucional.idCatDocumento         = participacionInstitucionalInternaDM.idCatDocumento;
                tblParticipacionInstitucional.idCatProgramaEducativo = participacionInstitucionalInternaDM.idCatProgramaEducativo;
                tblParticipacionInstitucional.idCatTipoActividad     = participacionInstitucionalInternaDM.idCatTipoActividad;
                tblParticipacionInstitucional.idPersonal             = participacionInstitucionalInternaDM.idPersonal;
                tblParticipacionInstitucional.strActividad           = participacionInstitucionalInternaDM.strActividad;
                tblParticipacionInstitucional.fechaInicio            = participacionInstitucionalInternaDM.fechaInicio;
                tblParticipacionInstitucional.fechaTermino           = participacionInstitucionalInternaDM.fechaTermino;

                catDocumentos.tblParticipacionInstitucionalInterna.Add(tblParticipacionInstitucional);
                catDocumentos.strUrl = participacionInstitucionalInternaDM.documentos.StrUrl;
                documentosRepository.Insert(catDocumentos);
                respuesta = true;
            }

            return(respuesta);
        }