public static dynamic CopiarIntegrante(IContextFactory factory, IOptions <ConnectionDB> connection, UsuarioCambio usuarioCambio) { RegistroParticipanteProyectosResponse retorno = new RegistroParticipanteProyectosResponse(); long id = 0; using (Aldeas_Context db = factory.Create(connection)) { var mismoMovimiento = from dato in db.tbRegistroParticipantes where dato.id == usuarioCambio.Participante && dato.idProyecto == usuarioCambio.ProyectoOrigen && dato.id_origen != null select dato; if (mismoMovimiento.Any()) { var mismo = from dato in db.tbRegistroParticipantes where dato.id == mismoMovimiento.First().id_origen && dato.idProyecto == usuarioCambio.ProyectoDestino select dato; if (mismo.Any()) { return(new { id = id, status = "El Participante que intentas copiar ya existe en este proyecto", code = 400 }); } } var ParticipanteOrigen = from dato in db.tbRegistroParticipantes where dato.id == usuarioCambio.Participante select dato; //var participantesDestino = from dato in db.tbRegistroParticipantes // where dato.id_origen == usuarioCambio.Participante // && dato.idProyecto == usuarioCambio.ProyectoDestino // select dato; //if (participantesDestino.Any()) //{ // return new { id = id, status = "Ya se ha copiado previamente este participante a este proyecto.", code = 400 }; //} if (ParticipanteOrigen.Any()) { var datosNuevo = ParticipanteOrigen.First(); var nuevo = new RegistroParticipante() { idProyecto = usuarioCambio.ProyectoDestino, idMunicipio = datosNuevo.idMunicipio, Nombres = datosNuevo.Nombres, Apellidos = datosNuevo.Apellidos, FechaNacimiento = datosNuevo.FechaNacimiento, Edad = datosNuevo.Edad, FechaIngreso = datosNuevo.FechaIngreso, FechaSalida = datosNuevo.FechaSalida, Localidad = datosNuevo.Localidad, Sexo = datosNuevo.Sexo, EstatusResidencia = datosNuevo.EstatusResidencia, UltimoCursoAprobado = datosNuevo.UltimoCursoAprobado, AsisteAlColegio = datosNuevo.AsisteAlColegio, GrupoPoblacional = datosNuevo.GrupoPoblacional, GrupoEtnico = datosNuevo.GrupoEtnico, Nacionalidad = datosNuevo.Nacionalidad, Genero = datosNuevo.Genero, TipoParticipante = datosNuevo.TipoParticipante, Discapacidad = datosNuevo.Discapacidad, NivelEscolaridad = datosNuevo.NivelEscolaridad, id_origen = usuarioCambio.Participante }; db.tbRegistroParticipantes.Add(nuevo); db.SaveChanges(); id = nuevo.id; var preguntas = from dato in db.tbRegistroPreguntas where dato.idParticipante == usuarioCambio.Participante select dato; if (preguntas.Any()) { var datosPreguntas = preguntas.ToList(); List <RegistroPreguntas> preguntasCopia = new List <RegistroPreguntas>(); foreach (var item in datosPreguntas) { preguntasCopia.Add(new RegistroPreguntas() { esOtro = item.esOtro, idParticipante = nuevo.id, Pregunta = item.Pregunta, Valor = item.Valor }); } db.tbRegistroPreguntas.AddRange(preguntasCopia); db.SaveChanges(); } var integrantes = from dato in db.tbIntegrantesFamilia where dato.id_participantes == usuarioCambio.Participante select dato; if (integrantes.Any()) { retorno.IntegrantesFamilia = integrantes.ToList(); List <DBIntegrantes> listParticipantes = new List <DBIntegrantes>(); foreach (var item in retorno.IntegrantesFamilia) { listParticipantes.Add(new DBIntegrantes() { id_participantes = nuevo.id, Nombre = item.Nombre, Rango_0_5 = item.Rango_0_5, Rango_6_12 = item.Rango_6_12, Rango_13_17 = item.Rango_13_17, Rango_18_24 = item.Rango_18_24, Rango_25_56 = item.Rango_25_56, Mayores_60 = item.Mayores_60, Total = item.Total, TotalDesagregado = item.TotalDesagregado, Porcentaje = item.Porcentaje }); } db.tbIntegrantesFamilia.AddRange(listParticipantes); db.SaveChanges(); } } } return(new { id = id, status = id == 0 ? "error" : "OK", code = 200 }); }
public static dynamic Guardar(IContextFactory factory, IOptions <ConnectionDB> connection, RegistroParticipantesRequest request) { long id = 0; using (Aldeas_Context db = factory.Create(connection)) { if (request.FechaSalida != null) { request.FechaSalida = Utils.CambiarFecha(request.FechaSalida); } request.FechaNacimiento = Utils.CambiarFecha(request.FechaNacimiento); request.FechaIngreso = Utils.CambiarFecha(request.FechaIngreso); var nuevo = new RegistroParticipante() { idProyecto = request.idProyecto, idMunicipio = request.CodMunicipio, Nombres = request.Nombres, Apellidos = request.Apellidos, FechaNacimiento = request.FechaNacimiento, Edad = request.Edad, FechaIngreso = request.FechaIngreso, FechaSalida = request.FechaSalida, Localidad = request.Localidad, Sexo = request.Sexo, EstatusResidencia = request.EstatusResidencia, UltimoCursoAprobado = request.UltimoCursoAprobado, AsisteAlColegio = request.AsisteAlColegio, GrupoPoblacional = request.GrupoPoblacional, GrupoEtnico = request.GrupoEtnico, Nacionalidad = request.Nacionalidad, Genero = request.Genero, TipoParticipante = request.TipoParticipante, Discapacidad = request.Discapacidad, NivelEscolaridad = request.NivelEscolaridad }; db.tbRegistroParticipantes.Add(nuevo); db.SaveChanges(); id = nuevo.id; List <DBIntegrantes> listParticipantes = new List <DBIntegrantes>(); foreach (var item in request.Participantes) { listParticipantes.Add(new DBIntegrantes() { id_participantes = id, Nombre = item.Nombre, Rango_0_5 = item.Rango_0_5, Rango_6_12 = item.Rango_6_12, Rango_13_17 = item.Rango_13_17, Rango_18_24 = item.Rango_18_24, Rango_25_56 = item.Rango_25_56, Mayores_60 = item.Mayores_60, Total = item.Total, TotalDesagregado = item.TotalDesagregado, Porcentaje = item.Porcentaje }); } db.tbIntegrantesFamilia.AddRange(listParticipantes); List <RegistroPreguntas> preguntas = new List <RegistroPreguntas>(); foreach (var item in request.Linea) { preguntas.Add(new RegistroPreguntas() { esOtro = item.esOtro, idParticipante = id, Pregunta = item.Pregunta, Valor = item.esOtro ? item.valorOtro : item.name }); } db.tbRegistroPreguntas.AddRange(preguntas); db.SaveChanges(); } return(new { id = id, status = id == 0 ? "error" : "OK", code = 200 }); }