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)); }