public OrdenBuilder WithVacunacion(List <string> vacunas) { Vacunacion vac = new Vacunacion(); foreach (string v in vacunas) { PlanificacionVacunacion planVac = new PlanificacionVacunacion(); planVac.IdVacuna = Convert.ToInt16(v); vac.PlanificacionVacunacion.Add(planVac); } ICollection <Vacunacion> _vacunaciones = new List <Vacunacion>(); _vacunaciones.Add(vac); _orden.Vacunacion = _vacunaciones; return(this); }
public async void Generar() { for (int i = 2006; i <= 2019; i++) { List <int> vacunaciones = new List <int>() { _rand.Next(2, 4), _rand.Next(5, 7), _rand.Next(10, 13) }; // Todos se dan entre el dia 05 - 25 for (int j = 1; j <= 12; j++) { var inicio = DateTime.Parse(string.Format("05/{0}/{1}", j, i)); var fin = DateTime.Parse(string.Format("25/{0}/{1}", j, i)); var fecha = FechaAleatoria(inicio, fin); bool existeInspeccion = false; bool existeVacunacion = false; bool existePesaje = false; using (SCGContext context = new SCGContext()) { using (var transaction = context.Database.BeginTransaction()) { var ganado = await context.Ganado.Where(x => x.Estado == Ganado.Estados.Activo && x.FechaIngreso <= fecha).ToListAsync(); var orden = new Orden() { FechaPlanificacion = fecha, Razon = string.Empty }; context.Orden.Add(orden); await context.SaveChangesAsync(); var conteo = new Conteo() { IdOrden = orden.IdOrden }; context.Conteo.Add(conteo); await context.SaveChangesAsync(); var inspeccion = new Inspeccion() { IdOrden = orden.IdOrden }; if (_rand.NextDouble() < ProbabilidadInspeccion) { context.Inspeccion.Add(inspeccion); await context.SaveChangesAsync(); existeInspeccion = true; } var pesaje = new Pesaje() { IdOrden = orden.IdOrden }; if (_rand.NextDouble() < ProbabilidadPesaje) { context.Pesaje.Add(pesaje); await context.SaveChangesAsync(); existePesaje = true; } // Mes de vacunacion Vacunacion vacunacion = new Vacunacion() { IdOrden = orden.IdOrden }; int vacunasMax = _rand.Next(2, 5); var listaVacunas = vacunasRandom(vacunasMax); if (vacunaciones.Exists(x => x == j)) { context.Vacunacion.Add(vacunacion); await context.SaveChangesAsync(); for (int k = 0; k < listaVacunas.Count; k++) { PlanificacionVacunacion pv = new PlanificacionVacunacion() { IdVacunacion = vacunacion.IdVacunacion }; pv.IdVacuna = listaVacunas[k]; context.PlanificacionVacunacion.Add(pv); await context.SaveChangesAsync(); } existeVacunacion = true; } /// A PARTIR DE ACA SE COMPLETAN LAS ACTIVIDADES foreach (var val in ganado) { ResultadoConteo rc = new ResultadoConteo() { IdConteo = conteo.IdConteo, IdGanado = val.IdGanado, Asistencia = 0 }; if (_rand.NextDouble() < ProbabilidadAsistencia) { rc.Asistencia = 1; } else { rc.Asistencia = 0; } context.ResultadoConteo.Add(rc); await context.SaveChangesAsync(); if (existeInspeccion) { if (_rand.NextDouble() < ProbabilidadPadecimiento) { var ri = new ResultadoInspeccion() { IdInspeccion = inspeccion.IdInspeccion, IdGanado = val.IdGanado }; context.ResultadoInspeccion.Add(ri); await context.SaveChangesAsync(); InspeccionPadecimiento ip = new InspeccionPadecimiento() { IdResultadoInspeccion = ri.IdResultadoInspeccion }; ip.IdPadecimiento = Padecimientos[_rand.Next(0, Padecimientos.Count)]; context.InspeccionPadecimiento.Add(ip); await context.SaveChangesAsync(); } } if (existePesaje) { bool invierno = false; var rp = new ResultadoPesaje() { IdGanado = val.IdGanado, IdPesaje = pesaje.IdPesaje }; int edad = (int)Math.Round((fecha - val.FechaNacimiento).Value.TotalDays / 365); if (fecha.Month > 4 && fecha.Month < 9) { invierno = true; } rp.Peso = calcularPeso(edad, invierno); context.ResultadoPesaje.Add(rp); await context.SaveChangesAsync(); } if (existeVacunacion) { var rv = new ResultadoVacunacion() { IdGanado = val.IdGanado, IdVacunacion = vacunacion.IdVacunacion }; context.ResultadoVacunacion.Add(rv); await context.SaveChangesAsync(); for (int k = 0; k < listaVacunas.Count; k++) { var va = new VacunaAplicada() { IdResultadoVacunacion = rv.IdResultadoVacunacion, IdVacuna = listaVacunas[k] }; context.VacunaAplicada.Add(va); await context.SaveChangesAsync(); } } } transaction.Commit(); } } } } }