public ActionResult Proceso_de_guardado(String Guardar) { /* si aceptan con todos los datos comienza el proceso de guardado que se guardara los datos de la clase Causante y Documento * a la base de datos ademas que crean 3 listas una en la clase Documento que se almacena en la lista tempora de DocumentoDAO y las dos en la clase Causante una para guardar los repetidos * y otro que esta guardado en la lista temporal de CausanteDAO */ int docs = 0; DocumentoDAO documentoDAO = new DocumentoDAO(); List <Documento> documentos = documentoDAO.GetDocumentos(); CausantesDAO causanteDAO = new CausantesDAO(); List <Causante> causantesguardados = causanteDAO.GetCausantes(); List <Causante> Repetidos = new List <Causante>(); /* primero comienza en los datos guardados en la lista temporal de CausanteDAO se mostrara de uno por uno */ foreach (var items in causantesguardados) { int count = 0; Causante c = new Causante(); c.NUM_CORRELATIVO = items.NUM_CORRELATIVO; c.RUT_CAUSANTE = items.RUT_CAUSANTE; c.NOMBRE_CAUSANTE = items.NOMBRE_CAUSANTE; c.CODIGO_TIPO_CAUSANTE = items.CODIGO_TIPO_CAUSANTE; c.TIPO_CAUSANTE = items.TIPO_CAUSANTE; c.RUT_BENEFICIARIO = items.RUT_BENEFICIARIO; c.NOMBRE_BENEFICIARIO = items.NOMBRE_BENEFICIARIO; c.CODIGO_TIPO_BENEFICIARIO = items.CODIGO_TIPO_BENEFICIARIO; c.TIPO_BENEFICIARIO = items.TIPO_BENEFICIARIO; c.CODIGO_TIPO_BENEFICIO = items.CODIGO_TIPO_BENEFICIO; c.TIPO_BENEFICIO = items.TIPO_BENEFICIO; c.RUT_EMPLEADOR = items.RUT_EMPLEADOR; c.NOMBRE_EMPLEADOR = items.NOMBRE_EMPLEADOR; c.FECHA_RECONOCIMIENTO = items.FECHA_RECONOCIMIENTO; c.TRAMO = items.TRAMO; c.MONTO_BENEFICIO = items.MONTO_BENEFICIO; c.CODIGO_ESTADO_TUPLA = items.CODIGO_ESTADO_TUPLA; c.GLOSA_ESTADO_TUPLA = items.GLOSA_ESTADO_TUPLA; c.PROMEDIO_RENTA = items.PROMEDIO_RENTA; /* aqui se mostrara los datos que estan en la Base de Datos solo se mostrara los datos de NUM_CORRELATIVO y Rut del Causante */ foreach (var item in db.Causante) { count = 0; Causante ca = new Causante(); ca.NUM_CORRELATIVO = item.NUM_CORRELATIVO; ca.RUT_CAUSANTE = item.RUT_CAUSANTE; /* en caso que si el numero NUM_CORRELATIVO de la lista es igual al NUM_CORRELATIVO de la base de datos y el RUT del CAUSANTE de la lista temporal * es igual RUT del CAUSANTE de la base datos entonces se guarda los datos de la lista temporal en otra lista llamada repetidos */ if (c.NUM_CORRELATIVO == ca.NUM_CORRELATIVO && c.RUT_CAUSANTE.Equals(ca.RUT_CAUSANTE)) { Repetidos.Add(c); count = count + 1; break; } } /* si se ha mostrado todos los datos de la base dato y no ha parecido ninguna se guardara como un nuevo causante incluso si * la base de datos esta vacia se los datos del causante se guardara por defecto */ if (count == 0) { db.Causante.Add(c); db.SaveChanges(); } } /* este proceso se mostrara el la lista temporal de DocumetoDAO * */ foreach (var item in documentos) { Documento documento = new Documento(); documento.Archivo = item.Archivo; documento.Tamaño = item.Tamaño; documento.tipo = item.tipo; documento.Fecha = item.Fecha; String fechadoc = item.Fecha.Date.ToString(); fechadoc = fechadoc.Substring(0, 10); String[] Fechacompletadoc = fechadoc.Split('/'); fechadoc = Fechacompletadoc[2] + "/" + Fechacompletadoc[1] + "/" + Fechacompletadoc[0]; /* se muestra los datos de el documeto o los documentos que esta en la base de datos */ foreach (var items in db.Documento) { docs = 0; Documento Documentos = new Documento(); Documentos.Id_documento = items.Id_documento; Documentos.Archivo = items.Archivo; Documentos.Tamaño = items.Tamaño; Documentos.tipo = items.tipo; Documentos.Fecha = items.Fecha; /* si el nombre nombre del el archivo de la lista temporal es igual al nombre de la base de datos * y tipo de la lista temporal es igual al tipo de la base de datos entonces se actualiza la fecha de el documento de la base de datos */ if (Documentos.Archivo.Equals(documento.Archivo) && Documentos.tipo.Equals(documento.tipo)) { docs = docs + 1; conexion.Close(); conexion.Open(); String Cadena = " update Documento set Fecha=" + "'" + documento.Fecha + "'where Id_documento=" + Documentos.Id_documento + ""; SqlCommand command = new SqlCommand(Cadena, conexion); int cant; cant = command.ExecuteNonQuery(); conexion.Close(); break; } } /* si se ha mostrado todos los datos de la base datos y no ha parecido ninguna se guardara como un nuevo Documento incluso si * la base de datos esta vacia se los datos del Documento se guardara por defecto */ if (docs == 0) { db.Documento.Add(documento); db.SaveChanges(); } } /* en el caso de la lista repetido se van actualiza los datos repetidos que estan la base de datos */ foreach (var item in Repetidos) { Causante c = new Causante(); c.NUM_CORRELATIVO = item.NUM_CORRELATIVO; c.RUT_CAUSANTE = item.RUT_CAUSANTE; c.NOMBRE_CAUSANTE = item.NOMBRE_CAUSANTE; c.CODIGO_TIPO_CAUSANTE = item.CODIGO_TIPO_CAUSANTE; c.TIPO_CAUSANTE = item.TIPO_CAUSANTE; c.RUT_BENEFICIARIO = item.RUT_BENEFICIARIO; c.NOMBRE_BENEFICIARIO = item.NOMBRE_BENEFICIARIO; c.CODIGO_TIPO_BENEFICIARIO = item.CODIGO_TIPO_BENEFICIARIO; c.TIPO_BENEFICIARIO = item.TIPO_BENEFICIARIO; c.CODIGO_TIPO_BENEFICIO = item.CODIGO_TIPO_BENEFICIO; c.TIPO_BENEFICIO = item.TIPO_BENEFICIO; c.RUT_EMPLEADOR = item.RUT_EMPLEADOR; c.NOMBRE_EMPLEADOR = item.NOMBRE_EMPLEADOR; c.FECHA_RECONOCIMIENTO = item.FECHA_RECONOCIMIENTO.Date; c.TRAMO = item.TRAMO; c.MONTO_BENEFICIO = item.MONTO_BENEFICIO; c.CODIGO_ESTADO_TUPLA = item.CODIGO_ESTADO_TUPLA; c.GLOSA_ESTADO_TUPLA = item.GLOSA_ESTADO_TUPLA; c.PROMEDIO_RENTA = item.PROMEDIO_RENTA; String fecha = c.FECHA_RECONOCIMIENTO.Date.ToString(); fecha = fecha.Substring(0, 10); String[] Fechacompleta = fecha.Split('/'); fecha = Fechacompleta[2] + "/" + Fechacompleta[1] + "/" + Fechacompleta[0]; conexion.Close(); conexion.Open(); String Cadena = "update Causante set RUT_CAUSANTE=" + "'" + c.RUT_CAUSANTE + "',NOMBRE_CAUSANTE=" + "'" + c.NOMBRE_CAUSANTE + "', CODIGO_TIPO_CAUSANTE=" + c.CODIGO_TIPO_CAUSANTE + ", TIPO_CAUSANTE=" + "'" + c.TIPO_CAUSANTE + "',RUT_BENEFICIARIO=" + "'" + c.RUT_BENEFICIARIO + "', NOMBRE_BENEFICIARIO=" + "'" + c.NOMBRE_BENEFICIARIO + "',CODIGO_TIPO_BENEFICIARIO=" + c.CODIGO_TIPO_BENEFICIARIO + ", TIPO_BENEFICIARIO=" + "'" + c.TIPO_BENEFICIARIO + "', CODIGO_TIPO_BENEFICIO=" + c.CODIGO_TIPO_BENEFICIO + ", TIPO_BENEFICIO=" + "'" + c.TIPO_BENEFICIO + "', RUT_EMPLEADOR=" + "'" + c.RUT_EMPLEADOR + "', FECHA_RECONOCIMIENTO=" + "'" + fecha + "', TRAMO=" + c.TRAMO + ",MONTO_BENEFICIO=" + c.MONTO_BENEFICIO + ",CODIGO_ESTADO_TUPLA=" + c.CODIGO_ESTADO_TUPLA + ", GLOSA_ESTADO_TUPLA= " + "'" + c.GLOSA_ESTADO_TUPLA + "', PROMEDIO_RENTA= " + c.PROMEDIO_RENTA + " where NUM_CORRELATIVO=" + c.NUM_CORRELATIVO + ""; SqlCommand command = new SqlCommand(Cadena, conexion); int cant; cant = command.ExecuteNonQuery(); conexion.Close(); } /* se elimina el documentos que estan en la lista del archivo temporal */ documentoDAO.EliminarDocumento(); /* Direcciona a proceso */ return(Redirect("../Funcionarios/Proceso")); }