Ejemplo n.º 1
0
        public ActionResult Edit([Bind(Include = "Pk_Id_Sede,Nombre_Sede,Direccion_Sede,Sector")] Sede sede, SedeMunicipio sedePorMunicipio, List <CentroTrabajo> centro, int pksede, string ipUsuario)
        {
            var usuarioActual = ObtenerUsuarioEnSesion(System.Web.HttpContext.Current);

            if (usuarioActual == null)
            {
                ViewBag.mensaje1 = "Debe Registrarse para Ingresar a este Modulo.";
                return(RedirectToAction("Login", "Home"));
            }
            EDInformacionAuditoria edInfoauditoria = new EDInformacionAuditoria()
            {
                IdentificacionUsuario = usuarioActual.Documento,
                NombreUsuario         = usuarioActual.NombreUsuario,
                NitEmpresa            = usuarioActual.NitEmpresa,
                NombreEmpresa         = usuarioActual.RazonSocialEmpresa,
                IpUsuario             = ipUsuario
            };

            sede.Nombre_Sede = sede.Nombre_Sede.ToUpper();
            sedeServicios    = new SedeServicios(db);
            if (ModelState.IsValid)
            {
                using (var Transaction = db.Database.BeginTransaction())
                {
                    RegistraLog registraLog = new RegistraLog();
                    try
                    {
                        /*inicio auditoria*/
                        if (db.Tbl_ActivaAuditoriaSistema.ToList().FirstOrDefault().EsActivaEmpresa)
                        {
                            SG_SSTContext dbAud   = new SG_SSTContext();
                            Sede          sedeAud = dbAud.Tbl_Sede.Find(sede.Pk_Id_Sede);
                            db.Tbl_AuditoriaEmpresaSistema.Add(auditoriaSistema.ObtenerAuditoriaSistemaEmpresa(edInfoauditoria,
                                                                                                               Enumeraciones.EnumAuditoriaSistema.Acciones.MODIFICACION,
                                                                                                               Enumeraciones.EnumAuditoriaSistema.Modulos.Empresa,
                                                                                                               Enumeraciones.EnumAuditoriaSistema.SubModulos.Datos_generales_de_la_empresa,
                                                                                                               Enumeraciones.EnumAuditoriaSistema.Opciones.Sedes,
                                                                                                               sedeAud.ToString()));
                        }
                        /*fin auditoria*/
                        List <CentroTrabajo> centros = db.Tbl_Centro_de_Trabajo.Where(ct => ct.Sede.Fk_Id_Empresa == usuarioActual.IdEmpresa && ct.Fk_Id_Sede == pksede).ToList();
                        if (centros != null)
                        {
                            if (centro != null)
                            {
                                var    sw = false;
                                string centrosencontrados = "";
                                foreach (var sct in centros)
                                {
                                    for (int i = 0; i < centro.Count; i++)
                                    {
                                        if (sct.Codigo_Actividad == centro[i].Codigo_Actividad)
                                        {
                                            centrosencontrados += (centro[i].Codigo_Actividad.ToString() + " , ");
                                            sw = true;
                                        }
                                    }
                                }
                                if (sw != false)
                                {
                                    TempData["shortMessage1"] = "Actividad Economica: " + centrosencontrados + " ya fue registrada anteriormente a la sede, el registro no se realizo.";
                                    return(RedirectToAction("SedesPorMunicipios"));
                                }
                            }
                        }
                        //else
                        //{
                        SedeMunicipio sedeMunipio = sedeServicios.ObtenerSedePorMunicipio(sede.Pk_Id_Sede);
                        sede.Fk_Id_Empresa = usuarioActual.IdEmpresa;
                        if (sedeMunipio.Fk_Id_Municipio != sedePorMunicipio.Fk_Id_Municipio)
                        {
                            sedeMunipio.Fk_Id_Municipio = sedePorMunicipio.Fk_Id_Municipio;
                            sedeMunipio.Sede            = sede;
                            db.Entry(sedeMunipio).State = EntityState.Modified;
                            List <CentroTrabajo> ActividadEcon = new List <CentroTrabajo>();
                            if (centro != null)
                            {
                                foreach (var ae in centro)
                                {
                                    CentroTrabajo axs = new CentroTrabajo();
                                    axs.Codigo_Actividad      = ae.Codigo_Actividad;
                                    axs.Descripcion_Actividad = ae.Descripcion_Actividad;
                                    axs.Fk_Id_Sede            = pksede;
                                    ActividadEcon.Add(axs);
                                }
                            }

                            db.Entry(sede).State = EntityState.Modified;
                            db.Tbl_Centro_de_Trabajo.AddRange(ActividadEcon);
                            TempData["shortMessage"] = "Informacion Registrada Correctamente.";
                        }
                        else
                        {
                            List <CentroTrabajo> ActividadEcon = new List <CentroTrabajo>();
                            sedeMunipio.Fk_Id_Municipio = sedePorMunicipio.Fk_Id_Municipio;
                            sedeMunipio.Sede            = sede;
                            if (centro != null)
                            {
                                foreach (var ae in centro)
                                {
                                    CentroTrabajo axs = new CentroTrabajo();
                                    axs.Codigo_Actividad      = ae.Codigo_Actividad;
                                    axs.Descripcion_Actividad = ae.Descripcion_Actividad;
                                    axs.Fk_Id_Sede            = pksede;
                                    ActividadEcon.Add(axs);
                                }
                            }

                            db.Entry(sede).State = EntityState.Modified;
                            db.Tbl_Centro_de_Trabajo.AddRange(ActividadEcon);
                        }

                        db.SaveChanges();
                        Transaction.Commit();
                        TempData["shortMessage"] = "Informacion Registrada Correctamente.";

                        // }
                    }
                    catch (Exception ex)
                    {
                        registraLog.RegistrarError(typeof(SedeController), string.Format("Error al realizar la transacción  {0}: {1}", DateTime.Now, ex.StackTrace), ex);
                        Transaction.Rollback();
                    }
                }
                return(RedirectToAction("SedesPorMunicipios"));
            }
            return(View(sede));
        }