Esempio n. 1
0
        //Metodo para  Visualizar Imagen de organigrama Cargado.
        public ActionResult GetImagen()
        {
            var usuarioActual = ObtenerUsuarioEnSesion(System.Web.HttpContext.Current);

            if (usuarioActual == null)
            {
                ViewBag.mensaje1 = "Debe Registrarse para Ingresar a este Modulo.";
                return(RedirectToAction("Login", "Home"));
            }

            try
            {
                int pkidempresa = usuarioActual.IdEmpresa;

                Organigrama ime = db.Tbl_Organigrama.FirstOrDefault(o => o.Fk_Id_Empresa == usuarioActual.IdEmpresa && o.Imagen_Organigrama != null);
                if (ime != null)
                {
                    string nombreFirma = ime.Imagen_Organigrama;
                    var    path        = rutaRepositorioFile + rutaMEmpresa + rutaOGobiernoOrganizacional + rutaOOrganigrama + usuarioActual.NitEmpresa;
                    var    file        = nombreFirma;
                    var    fullPath    = Path.Combine(path, file);
                    return(File(fullPath, "image/jpg", file));
                }
            }
            catch (Exception e)
            {
                Organigrama ime         = db.Tbl_Organigrama.FirstOrDefault(o => o.Fk_Id_Empresa == usuarioActual.IdEmpresa && o.Imagen_Organigrama != null);
                string      nombreFirma = ime.Imagen_Organigrama;
                var         path        = rutaRepositorioFile + rutaMEmpresa + rutaOGobiernoOrganizacional + rutaOOrganigrama + usuarioActual.NitEmpresa;
                var         file        = nombreFirma;
                var         fullPath    = Path.Combine(path, file);
                return(File(fullPath, "image/pdf", file));
            }
            return(null);
        }//fin metodo obtener imagen de organigrama.
Esempio n. 2
0
        public ActionResult Index()
        {
            var usuarioActual = ObtenerUsuarioEnSesion(System.Web.HttpContext.Current);

            if (usuarioActual == null)
            {
                ViewBag.mensaje1 = "Debe Registrarse para Ingresar a este Modulo.";
                return(RedirectToAction("Login", "Home"));
            }
            int    pkorganigrama     = 0;
            string NombreOrganigrama = "";
            bool   respuesta         = false;

            try
            {
                Organigrama ime = db.Tbl_Organigrama.FirstOrDefault(o => o.Fk_Id_Empresa == usuarioActual.IdEmpresa && o.Imagen_Organigrama != null);
                if (ime != null)
                {
                    if (Path.GetExtension(ime.Imagen_Organigrama).ToLower() == ".pdf")
                    {
                        respuesta = true;
                    }
                    pkorganigrama     = ime.Pk_Id_Organigrama;
                    NombreOrganigrama = ime.Imagen_Organigrama;
                }
            }
            catch
            {
                return(View());
            }
            ViewBag.NombreOrganigrama = NombreOrganigrama;
            ViewBag.pkorganigrama     = pkorganigrama;
            ViewBag.espdf             = respuesta;
            return(View());
        }
Esempio n. 3
0
        public FileStreamResult OrganigramaPdf()
        {
            var usuarioActual = ObtenerUsuarioEnSesion(System.Web.HttpContext.Current);

            if (usuarioActual == null)
            {
                ViewBag.mensaje1 = "Debe Registrarse para Ingresar a este Modulo.";
                //return RedirectToAction("Login", "Home");
            }
            Organigrama imo = db.Tbl_Organigrama.First(o => o.Fk_Id_Empresa == usuarioActual.IdEmpresa && o.Imagen_Organigrama != null);

            if (imo == null)
            {
                ViewBag.Mensaje = "No hay Archivo Cargado";
            }

            var        path     = rutaRepositorioFile + rutaMEmpresa + rutaOGobiernoOrganizacional + rutaOOrganigrama + usuarioActual.NitEmpresa;
            var        file     = imo.Imagen_Organigrama;
            var        fullPath = Path.Combine(path, file);
            FileStream fs       = new FileStream(fullPath, FileMode.Open, FileAccess.Read);

            if (fs == null)
            {
                fs.Dispose();
            }
            return(File(fs, "application/pdf"));
        }
        public async Task <IActionResult> Edit(int id, [Bind("idorganigrama,area,descripcion,area_depende,nivel,tipo_area,titular")] Organigrama organigrama)
        {
            if (id != organigrama.idorganigrama)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    _context.Update(organigrama);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!OrganigramaExists(organigrama.idorganigrama))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }
            return(View(organigrama));
        }
Esempio n. 5
0
        public ActionResult OrganigramaPdfMod()
        {
            var usuarioActual = ObtenerUsuarioEnSesion(System.Web.HttpContext.Current);

            if (usuarioActual == null)
            {
                ViewBag.Mensaje1 = "El usuario no ha iniciado sesión el sistema";
                return(View("Login", "Home"));
            }
            string [] Archivo = new string[2];
            using (var transaction = db.Database.BeginTransaction())
            {
                try
                {
                    //Archivo = db.CondicionInsegura.Find(clavecondicion).Evidencia;
                    Organigrama ime = db.Tbl_Organigrama.FirstOrDefault(o => o.Fk_Id_Empresa == usuarioActual.IdEmpresa && o.Imagen_Organigrama != null);
                    Archivo [1] = ime.Imagen_Organigrama;
                    Archivo[0]  = usuarioActual.NitEmpresa;
                }
                catch (Exception)
                {
                    transaction.Rollback();
                }
            }
            return(Json(Archivo, JsonRequestBehavior.AllowGet));
        }
Esempio n. 6
0
        public List <Curso> FiltrarCursosPorUsuario(List <Curso> cursos, Organigrama organigrama, Usuario usuario)
        {
            List <Area> areas_usuario = organigrama.GetAreasInferioresDeLasAreas(this.autorizador.AreasAdministradasPor(usuario));

            List <Curso> curso_filtrado_por_usuario = cursos.FindAll(c => areas_usuario.Contains(c.EspacioFisico.Edificio.Area));

            return(curso_filtrado_por_usuario);
        }
Esempio n. 7
0
        public void el_circuito_deberia_por_default_subir_por_el_organigrama()
        {
            var organigrama_faby_marta = new Organigrama(TestObjects.AreasDeFabiYMarta(), TestObjects.DependenciasEntreFabyYMarta());
            var saltos_preferenciales  = new List <List <int> >();

            var circuito_de_viatico = new CircuitoDeAprobacionDeViatico(organigrama_faby_marta, saltos_preferenciales, TestObjects.AreaDeMarta());

            Assert.AreEqual(TestObjects.AreaDeMarta(), circuito_de_viatico.SiguienteAreaDe(TestObjects.AreaDeFabi()));
        }
Esempio n. 8
0
        public Organigrama ObtenerOrganigrama(int Pk_Id_Empresa)
        {
            Organigrama organigramas = er.ObtenerOrganigrama(Pk_Id_Empresa); //obtiene la consulta del RepositorioGobierno

            if (organigramas != null)                                        //pregunta que si lo que viene de la consulta no esta vacio
            {
                return(organigramas);                                        //retorna el organigrama.
            }
            return(null);                                                    //Sino Retorna Null
        }
Esempio n. 9
0
        [Ignore] //para que ande el teamcity
        public void deberia_poder_decirle_a_un_repositorio_que_use_una_conexion_que_devuelve_un_organigrama_simple()
        {
            var mock_conexion_bd = ConexionMockeada();

            Expect.Once.On(mock_conexion_bd).Method("Ejecutar").Will(Return.Value(TablaConDosAreas()));
            Expect.Once.On(mock_conexion_bd).Method("Ejecutar").Will(Return.Value(TestObjects.TablaDeAliasConDosAlias()));

            Organigrama organigrama = UnRepositorioCon(mock_conexion_bd).GetOrganigrama();

            Assert.AreEqual(2, organigrama.ObtenerAreas(true).Count);
        }
Esempio n. 10
0
        public bool GuardarOrganigrama(EmpleadoOrg empleadoorg, int Pk_Id_Empresa, EDInformacionAuditoria edInfoauditoria)
        {
            using (var transaction = db.Database.BeginTransaction())
            {
                try
                {
                    Organigrama organigrama = ObtenerOrganigrama(Pk_Id_Empresa);

                    if (organigrama != null)
                    {
                        /*inicio auditoria*/
                        if (db.Tbl_ActivaAuditoriaSistema.ToList().FirstOrDefault().EsActivaEmpresa)
                        {
                            db.Tbl_AuditoriaEmpresaSistema.Add(auditoriaSistema.ObtenerAuditoriaEmpresa(edInfoauditoria,
                                                                                                        Enumeraciones.EnumAuditoriaSistema.Acciones.MODIFICACION,
                                                                                                        Enumeraciones.EnumAuditoriaSistema.Modulos.Empresa,
                                                                                                        Enumeraciones.EnumAuditoriaSistema.SubModulos.Gobierno_organizacional,
                                                                                                        Enumeraciones.EnumAuditoriaSistema.Opciones.Organigrama,
                                                                                                        organigrama.ToString()));
                        }
                        /*fin auditoria*/
                        organigrama.EmpleadosOrg.Add(empleadoorg);
                    }
                    else
                    {
                        Organigrama org = new Organigrama();
                        org.Fk_Id_Empresa = Pk_Id_Empresa;
                        org.EmpleadosOrg  = new List <EmpleadoOrg>();
                        org.EmpleadosOrg.Add(empleadoorg);
                        /*inicio auditoria*/
                        if (db.Tbl_ActivaAuditoriaSistema.ToList().FirstOrDefault().EsActivaEmpresa)
                        {
                            db.Tbl_AuditoriaEmpresaSistema.Add(auditoriaSistema.ObtenerAuditoriaEmpresa(edInfoauditoria,
                                                                                                        Enumeraciones.EnumAuditoriaSistema.Acciones.CREACION,
                                                                                                        Enumeraciones.EnumAuditoriaSistema.Modulos.Empresa,
                                                                                                        Enumeraciones.EnumAuditoriaSistema.SubModulos.Gobierno_organizacional,
                                                                                                        Enumeraciones.EnumAuditoriaSistema.Opciones.Organigrama,
                                                                                                        org.ToString()));
                        }
                        /*fin auditoria*/
                        db.Tbl_Organigrama.Add(org);
                    }
                    db.SaveChanges();
                    transaction.Commit();

                    return(true);
                }
                catch (Exception)
                {
                    transaction.Rollback();
                    return(false);
                }
            }
        }
        public async Task <IActionResult> Create([Bind("idorganigrama,area,descripcion,area_depende,nivel,tipo_area,titular")] Organigrama organigrama)
        {
            if (ModelState.IsValid)
            {
                _context.Add(organigrama);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            return(View(organigrama));
        }
Esempio n. 12
0
 public void no_se_debe_permitir_crear_un_organigrama_donde_las_areas_y_las_dependencias_son_vacias()
 {
     try
     {
         var organigrama_incorrecto = new Organigrama(areas_vacias, lista_de_dependencias_vacias);
         Assert.Fail("Falla porque debería haber lanzado la excepción de Organigrama inconsistente");
     }
     catch (Exception e)
     {
         Assert.AreEqual("El Organigrama No Posee las Áreas y Relaciones entre Áreas Básicas y por lo tanto es inconsistente", e.Message);
     }
 }
Esempio n. 13
0
 public void no_se_debe_permitir_crear_un_organigrama_donde_un_hijo_tenga_dos_areas_padres()
 {
     try
     {
         var organigrama_faby_con_dos_padres_marta_carlos = new Organigrama(areas_de_faby_y_marta_y_carlos_unidad_ministro, lista_de_dependencias_faby_con_dos_pades_marta_carlos);
         Assert.Fail("Falla porque debería haber lanzado la excepción de Organigrama inconsistente");
     }
     catch (Exception e)
     {
         Assert.AreEqual("El Organigrama Posee Áreas con más de un Área Superior Directa Asignada y por lo tanto es Incosistente", e.Message);
     }
 }
Esempio n. 14
0
 public void no_se_debe_permitir_crear_un_organigrama_donde_tenga_mas_de_un_area_superior_final() //ARREGLAR!
 {
     try
     {
         var organigrama_incorrecto = new Organigrama(areas_de_faby_y_marta_y_carlos_unidad_ministro, lista_de_dependencias_faby_marta_separado_de_carlos_y_um);
         Assert.Fail("Falla porque debería haber lanzado la excepción de Organigrama inconsistente");
     }
     catch (Exception e)
     {
         Assert.AreEqual("El Organigrama Posee más de un Área como Área Superior a Todas las Área y por lo tanto es inconsistente", e.Message);
     }
 }
Esempio n. 15
0
        [Ignore]   //para que ande el teamcity
        public void deberia_poder_traer_los_cursos_segun_el_area_responsable_del_usuario_logeado()
        {
            Usuario     usu_cenard  = TestObjects.UsuarioCENARD();
            Usuario     usu_sacc    = TestObjects.UsuarioSACC();
            Organigrama organigrama = TestObjects.OrganigramaConDosRamas();

            IConexionBD     conexion    = TestObjects.ConexionMockeada();
            AutorizadorSacc autorizador = new AutorizadorSacc();

            List <Curso> cursos = TestObjects.UnListadoDeCursoConEdificios();

            Assert.AreEqual(1, autorizador.FiltrarCursosPorUsuario(cursos, organigrama, usu_cenard).Count());
            Assert.AreEqual(3, autorizador.FiltrarCursosPorUsuario(cursos, organigrama, usu_sacc).Count());
        }
Esempio n. 16
0
        public void el_circuito_deberia_por_default_subir_por_el_organigrama_a_menos_que_haya_una_excepcion()
        {
            var organigrama_faby_marta_y_carlos = new Organigrama(TestObjects.AreasDeFabiMartaYCarlos(), TestObjects.DependenciasEntreFabyMartaYCarlos());
            var saltos_preferenciales           = new List <List <int> >()
            {
                new List <int>()
                {
                    TestObjects.AreaDeFabi().Id, TestObjects.AreaDeCastagneto().Id
                }
            };

            var circuito_de_viatico = new CircuitoDeAprobacionDeViatico(organigrama_faby_marta_y_carlos, saltos_preferenciales, TestObjects.AreaDeMarta());

            Assert.AreEqual(TestObjects.AreaDeCastagneto(), circuito_de_viatico.SiguienteAreaDe(TestObjects.AreaDeFabi()));
        }
Esempio n. 17
0
        public void deberia_poder_determinar_si_una_persona_buscada_pertenece_al_área_de_la_persona_logueada()
        {
            Usuario     usu_cenard  = TestObjects.UsuarioCENARD();
            Usuario     usu_sacc    = TestObjects.UsuarioSACC();
            Organigrama organigrama = TestObjects.OrganigramaConDosRamas();

            IConexionBD conexion = TestObjects.ConexionMockeada();

            Autorizador autorizador = new Autorizador();

            Alumno un_alumno = TestObjects.AlumnoMinisterio();

            Assert.IsFalse(autorizador.AlumnoVisibleParaUsuario(un_alumno, organigrama, usu_cenard));
            Assert.IsTrue(autorizador.AlumnoVisibleParaUsuario(un_alumno, organigrama, usu_sacc));
        }
Esempio n. 18
0
        public void deberia_poder_traer_alumnos_segun_el_area_responsable_del_usuario_logeado()
        {
            Usuario     usu_cenard  = TestObjects.UsuarioCENARD();
            Usuario     usu_sacc    = TestObjects.UsuarioSACC();
            Organigrama organigrama = TestObjects.OrganigramaConDosRamas();

            IConexionBD conexion = TestObjects.ConexionMockeada();

            Autorizador autorizador = new Autorizador();

            List <Alumno> alumnos = TestObjects.AlumnosNuevos();

            Assert.AreEqual(2, autorizador.FiltrarAlumnosPorUsuario(alumnos, organigrama, usu_cenard).Count());
            Assert.AreEqual(3, autorizador.FiltrarAlumnosPorUsuario(alumnos, organigrama, usu_sacc).Count());
        }
Esempio n. 19
0
        public void deberia_poder_decirle_a_un_repositorio_que_use_una_conexion_que_no_devuelve_nada()
        {
            var mock_conexion_bd = ConexionMockeada();

            Stub.On(mock_conexion_bd).Method("Ejecutar").Will(Return.Value(TablaVacia()));
            Organigrama organigrama = null;

            try
            {
                organigrama = UnRepositorioCon(mock_conexion_bd).GetOrganigrama();
                Assert.Fail("con una tabla vacia, el organigrama no deberia haberse podido crear");
            }
            catch (OrganigramaException e)
            {
                Assert.IsNull(organigrama);
                Assert.AreEqual("El Organigrama No Posee las Áreas y Relaciones entre Áreas Básicas y por lo tanto es inconsistente", e.Message);
            }
        }
Esempio n. 20
0
        //Metodo para Eliminar Archivo Cargado de Organigrama del Servidor.
        public ActionResult Eliminar(int pkorganigrama)
        {
            bool sw            = false;
            bool respuesta     = false;
            var  usuarioActual = ObtenerUsuarioEnSesion(System.Web.HttpContext.Current);

            if (usuarioActual == null)
            {
                ViewBag.mensaje1 = "Debe Registrarse para Ingresar a este Modulo.";
                return(RedirectToAction("Login", "Home"));
            }
            Organigrama ime = db.Tbl_Organigrama.FirstOrDefault(o => o.Fk_Id_Empresa == usuarioActual.IdEmpresa &&
                                                                o.Imagen_Organigrama != null &&
                                                                o.Pk_Id_Organigrama == pkorganigrama);

            if (ime != null)
            {
                var path     = rutaRepositorioFile + rutaMEmpresa + rutaOGobiernoOrganizacional + rutaOOrganigrama + usuarioActual.NitEmpresa;
                var file     = ime.Imagen_Organigrama;
                var fullPath = Path.Combine(path, file);
                if (System.IO.File.Exists(fullPath))
                {
                    System.IO.File.Delete(fullPath);
                    sw = true;
                    ime.Imagen_Organigrama      = "";
                    ime.Descripcion_Organigrama = "";
                    db.SaveChanges();
                }
            }


            respuesta     = true;
            ViewBag.espdf = respuesta;
            //pkorganigrama = ime.Pk_Id_Organigrama;
            return(View("Index"));
        }
Esempio n. 21
0
        public void Setup()
        {
            area_de_marta      = TestObjects.AreaDeMarta();
            area_de_faby       = TestObjects.AreaDeFabi();
            area_de_castagneto = TestObjects.AreaDeCastagneto();
            unidad_ministro    = new Area(1, AREA_UNIDAD_MINISTRO, true);
            area_de_fabyB      = new Area(0938, AREA_DE_FABIB, true);

            areas_de_faby_y_marta          = TestObjects.AreasDeFabiYMarta();
            areas_de_faby_y_marta_y_carlos = TestObjects.AreasDeFabiMartaYCarlos();
            areas_de_faby_y_marta_y_carlos_unidad_ministro = new List <Area>()
            {
                area_de_faby, area_de_marta, area_de_castagneto, unidad_ministro
            };
            areas_de_faby_fabyB_y_marta = new List <Area>()
            {
                area_de_faby, area_de_fabyB, area_de_marta
            };
            areas_vacias = new List <Area>();
            areas_de_faby_y_marta_y_carlos_unidad_ministro_y_fabyB = new List <Area>()
            {
                area_de_faby, area_de_marta, area_de_castagneto, unidad_ministro, area_de_fabyB
            };

            dependencia_faby_marta   = TestObjects.DependenciaEntreFabyYMarta();
            dependencia_marta_carlos = TestObjects.DependenciaEntreMartaYCarlos();
            dependencia_faby_carlos  = new List <Area>()
            {
                area_de_faby, area_de_castagneto
            };
            dependencia_carlos_unidad_ministro = new List <Area>()
            {
                area_de_castagneto, unidad_ministro
            };
            dependencia_fabyB_marta = new List <Area>()
            {
                area_de_fabyB, area_de_marta
            };
            dependencia_marta_unidad_ministro = new List <Area>()
            {
                area_de_marta, unidad_ministro
            };
            dependencia_FabyB_Carlos = new List <Area>()
            {
                area_de_fabyB, area_de_castagneto
            };

            lista_de_dependencias_faby_marta             = TestObjects.DependenciasEntreFabyYMarta();
            lista_de_dependencias_faby_marta_y_carlos    = TestObjects.DependenciasEntreFabyMartaYCarlos();
            lista_de_dependencias_faby_marta_carlos_y_um = new List <List <Area> >()
            {
                dependencia_faby_marta, dependencia_marta_carlos, dependencia_carlos_unidad_ministro
            };
            lista_de_dependencias_faby_fabyB_marta = new List <List <Area> >()
            {
                dependencia_faby_marta, dependencia_fabyB_marta
            };
            lista_de_dependencias_faby_marta_separado_de_carlos_y_um = new List <List <Area> >()
            {
                dependencia_faby_marta, dependencia_carlos_unidad_ministro
            };
            lista_de_dependencias_faby_con_dos_pades_marta_carlos = new List <List <Area> > {
                dependencia_faby_marta, dependencia_faby_carlos, dependencia_marta_unidad_ministro, dependencia_carlos_unidad_ministro
            };
            lista_de_dependencias_vacias = new List <List <Area> >();
            lista_de_dependencias_faby_marta_carlos_y_um_fabyb = new List <List <Area> >()
            {
                dependencia_faby_marta, dependencia_carlos_unidad_ministro, dependencia_FabyB_Carlos, dependencia_marta_unidad_ministro
            };

            organigrama_faby_marta = new Organigrama(areas_de_faby_y_marta, lista_de_dependencias_faby_marta);
            organigrama_fabi_marta_castagneto_um       = new Organigrama(areas_de_faby_y_marta_y_carlos_unidad_ministro, lista_de_dependencias_faby_marta_carlos_y_um);
            organigrama_faby_fabyB_marta               = new Organigrama(areas_de_faby_fabyB_y_marta, lista_de_dependencias_faby_fabyB_marta);
            organigrama_fabi_marta_castagneto_um_fabyB = new Organigrama(areas_de_faby_y_marta_y_carlos_unidad_ministro_y_fabyB, lista_de_dependencias_faby_marta_carlos_y_um_fabyb);
        }
Esempio n. 22
0
        public List <Alumno> FiltrarAlumnosPorUsuario(List <Alumno> alumnos, Organigrama organigrama, Usuario usuario)
        {
            List <Area> areas_del_usuario_logueado = organigrama.GetAreasInferioresDeLasAreas(this.autorizador.AreasAdministradasPor(usuario));

            return(FiltrarAlumnosPorAreas(areas_del_usuario_logueado, alumnos));
        }
Esempio n. 23
0
 public bool AlumnoVisibleParaUsuario(Alumno alumno, Organigrama organigrama, Usuario usuario)
 {
     return(AlumnoPerteneceAListaDeAreas(organigrama.GetAreasInferioresDeLasAreas(this.autorizador.AreasAdministradasPor(usuario)), alumno));
 }
Esempio n. 24
0
        public List <EspacioFisico> FiltrarEspaciosFisicosPorUsuario(List <EspacioFisico> espacios_fisicos, Organigrama organigrama, Usuario usuario)
        {
            List <Area> areas_usuario = organigrama.GetAreasInferioresDeLasAreas(this.autorizador.AreasAdministradasPor(usuario));

            List <EspacioFisico> espacios_filtrado_por_usuario = espacios_fisicos.FindAll(e => areas_usuario.Contains(e.Edificio.Area));

            return(espacios_filtrado_por_usuario);
        }
Esempio n. 25
0
        //Metodo para Cargar Archivo Organigrama
        public ActionResult CreateO(HttpPostedFileBase CargarImagen, string ipUsuario)
        {
            int    sw                = 0;
            var    pkorganigrama     = 0;
            string NombreOrganigrama = "";
            var    usuarioActual     = ObtenerUsuarioEnSesion(System.Web.HttpContext.Current);

            if (usuarioActual == null)
            {
                ViewBag.mensaje1 = "Debe Registrarse para Ingresar a este Modulo.";
                return(RedirectToAction("Login", "Home"));
            }

            EmpresaServicios = new EmpresaServicios(db);

            var path = "";

            ViewBag.espdf = false;

            try
            {
                Organigrama organigrama = db.Tbl_Organigrama.Find(usuarioActual.IdEmpresa);


                if (CargarImagen != null &&
                    (Path.GetExtension(CargarImagen.FileName).ToLower() == ".jpg" ||
                     Path.GetExtension(CargarImagen.FileName).ToLower() == ".png" ||
                     Path.GetExtension(CargarImagen.FileName).ToLower() == ".pdf") &&
                    CargarImagen.ContentLength <= (6 * 1024 * 1024))
                {
                    if (Path.GetExtension(CargarImagen.FileName).ToLower() == ".pdf")
                    {
                        ViewBag.espdf = true;
                    }
                    Organigrama            ime             = db.Tbl_Organigrama.First(o => o.Fk_Id_Empresa == usuarioActual.IdEmpresa);
                    EDInformacionAuditoria edInfoauditoria = new EDInformacionAuditoria()
                    {
                        IdentificacionUsuario = usuarioActual.Documento,
                        NombreUsuario         = usuarioActual.NombreUsuario,
                        NitEmpresa            = usuarioActual.NitEmpresa,
                        NombreEmpresa         = usuarioActual.RazonSocialEmpresa,
                        IpUsuario             = ipUsuario
                    };
                    /*inicio auditoria*/
                    if (db.Tbl_ActivaAuditoriaSistema.ToList().FirstOrDefault().EsActivaEmpresa)
                    {
                        db.Tbl_AuditoriaEmpresaSistema.Add(auditoriaSistema.ObtenerAuditoriaEmpresa(edInfoauditoria,
                                                                                                    Enumeraciones.EnumAuditoriaSistema.Acciones.MODIFICACION,
                                                                                                    Enumeraciones.EnumAuditoriaSistema.Modulos.Empresa,
                                                                                                    Enumeraciones.EnumAuditoriaSistema.SubModulos.Gobierno_organizacional,
                                                                                                    Enumeraciones.EnumAuditoriaSistema.Opciones.Organigrama,
                                                                                                    ime.ToString()));
                    }
                    /*fin auditoria*/
                    if (ime == null || ime.Imagen_Organigrama == null)
                    {
                        path = rutaRepositorioFile + rutaMEmpresa + rutaOGobiernoOrganizacional + rutaOOrganigrama + usuarioActual.NitEmpresa;
                        if (!Directory.Exists(path))
                        {
                            System.IO.Directory.CreateDirectory(path);
                        }
                        path = Path.Combine(path, CargarImagen.FileName);
                        ime.Imagen_Organigrama      = CargarImagen.FileName;
                        ime.Descripcion_Organigrama = "Organigrama: " + usuarioActual.RazonSocialEmpresa;
                        CargarImagen.SaveAs(path);
                        NombreOrganigrama = ime.Imagen_Organigrama;
                        pkorganigrama     = ime.Pk_Id_Organigrama;
                        sw = pkorganigrama;
                        db.SaveChanges();
                        ViewBag.mensaje = "Archivo Almacenado Correctamente.!";
                    }
                    else
                    {
                        path = rutaRepositorioFile + rutaMEmpresa + rutaOGobiernoOrganizacional + rutaOOrganigrama + usuarioActual.NitEmpresa;
                        var file     = ime.Imagen_Organigrama;
                        var fullPath = Path.Combine(path, file);
                        if (System.IO.File.Exists(fullPath))
                        {
                            System.IO.File.Delete(fullPath);
                        }
                        if (!Directory.Exists(path))
                        {
                            System.IO.Directory.CreateDirectory(path);
                        }
                        path = Path.Combine(path, CargarImagen.FileName);
                        CargarImagen.SaveAs(path);
                        ime.Imagen_Organigrama      = CargarImagen.FileName;
                        ime.Descripcion_Organigrama = "Organigrama: " + usuarioActual.RazonSocialEmpresa;
                        db.Entry(ime).State         = System.Data.Entity.EntityState.Modified;
                        db.SaveChanges();
                        NombreOrganigrama = ime.Imagen_Organigrama;
                        pkorganigrama     = ime.Pk_Id_Organigrama;
                        sw = pkorganigrama;
                        ViewBag.mensaje = "Archivo  almacenado correctamente.!";
                    }
                }
                else
                {
                    Organigrama ime = db.Tbl_Organigrama.FirstOrDefault(o => o.Fk_Id_Empresa == usuarioActual.IdEmpresa && o.Imagen_Organigrama != null);
                    if (ime != null)
                    {
                        if (Path.GetExtension(ime.Imagen_Organigrama).ToLower() == ".pdf")
                        {
                            ViewBag.espdf = true;
                        }
                        NombreOrganigrama = ime.Imagen_Organigrama;
                    }
                    ViewBag.pkidempresa = usuarioActual.IdEmpresa;

                    //ViewBag.mensaje1 = "No cargaste ningun archivo, o el archivo supera el maximo permitido que son 6 megabytes, y solo se pueden cargar archivos .PDF, .JPG o .PNG.!";
                    ViewBag.mensaje3 = true;
                }
            }
            catch (Exception e)
            {
                //ViewBag.mensaje1 = "No se pudo realizar la transaccion, Primero debe Registrar los Cargos.";
                ViewBag.mensaje4 = true;
            }
            if (sw != null)
            {
                ViewBag.pkorgranigrama = sw;
                //ViewBag.NombreOrganigrama = NombreOrganigrama;
            }
            ViewBag.NombreOrganigrama = NombreOrganigrama;
            ViewBag.Entro             = 1;
            return(View("Index", ViewBag.pkorgranigrama));
        }