Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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();
                        }
                    }
                }
            }
        }