示例#1
0
        public async Task <IActionResult> OnPostAsync(string returnUrl = null)
        {
            returnUrl = returnUrl ?? Url.Content("~/");
            if (ModelState.IsValid)
            {
                var user = new Usuario {
                    UserName = Input.Email, Email = Input.Email
                };
                var result = await _userManager.CreateAsync(user, Input.Password);

                if (result.Succeeded)
                {
                    using (SCGContext context = new SCGContext())
                    {
                        var usuario = await context.Usuario.Where(x => x.UserName == Input.Email && x.Email == Input.Email).FirstAsync();

                        Persona persona = new Persona()
                        {
                            Nombres = Input.Nombres, Apellidos = Input.Apellidos, Ci = Input.CI, FechaNacimiento = Input.FechaNacimiento
                        };
                        context.Persona.Add(persona);
                        context.SaveChanges();
                    }

                    _logger.LogInformation("Usuario creado.");

                    var code = await _userManager.GenerateEmailConfirmationTokenAsync(user);

                    var callbackUrl = Url.Page(
                        "/Account/ConfirmEmail",
                        pageHandler: null,
                        values: new { userId = user.Id, code = code },
                        protocol: Request.Scheme);

                    await _emailSender.SendEmailAsync(Input.Email, "Confirm your email",
                                                      $"Please confirm your account by <a href='{HtmlEncoder.Default.Encode(callbackUrl)}'>clicking here</a>.");

                    await _signInManager.SignInAsync(user, isPersistent : false);

                    return(LocalRedirect(returnUrl));
                }
                foreach (var error in result.Errors)
                {
                    ModelState.AddModelError(string.Empty, error.Description);
                }
            }

            // If we got this far, something failed, redisplay form
            return(Page());
        }
示例#2
0
 private void ProcurarDescendencia(INodo <Ganado> Padre)
 {
     using (SCGContext context = new SCGContext())
     {
         var relacionesPadreHijo = context.Relacion.Where(x => x.IdProgenitor == Padre.Dato.IdGanado).ToList();
         if (relacionesPadreHijo.Count == 0)
         {
             return;
         }
         else
         {
             foreach (var val in relacionesPadreHijo)
             {
                 var ganado = context.Ganado.Where(x => x.IdGanado == val.IdHijo).ToList();
                 ganado.ForEach(x => Padre.Hijos.Add(new Nodo <Ganado>(x)));
             }
         }
         Padre.Hijos.ToList().ForEach(x => ProcurarDescendencia(x));
     }
 }
示例#3
0
        public void Actualizar()
        {
            List <Relacion> familiares = new List <Relacion>();

            using (SCGContext context = new SCGContext())
            {
                // Se encuentra las posibles relaciones que pueda tener el ganado, no importa si es hijo o padre, se puede armar el arbol con cualquiera.
                var relaciones = context.Relacion.Where(x => x.IdHijo == _idFamiliar || x.IdProgenitor == _idFamiliar).ToList();
                var bigPadre   = relaciones.FirstOrDefault();

                // No hay ninguna relación asociada a este animal.
                if (bigPadre == null)
                {
                    return;
                }

                // Se busca el primer progenitor
                bool tienePadre = true;
                while (tienePadre)
                {
                    var temp = context.Relacion.Where(x => x.IdHijo == bigPadre.IdProgenitor).FirstOrDefault();
                    if (temp == null)
                    {
                        tienePadre = false;
                    }
                    else
                    {
                        bigPadre = temp;
                    }
                }

                // Se empieza a armar el arbol genealogico desde el big padre
                Ganado padre = context.Ganado.Where(x => x.IdGanado == bigPadre.IdProgenitor).FirstOrDefault();
                Raiz = new Nodo <Ganado>(padre);
                ProcurarDescendencia(Raiz);
            }
        }
示例#4
0
 public GanadoController(SCGContext context)
 {
     _context = context;
 }
示例#5
0
        public async void Generar()
        {
            List <DateTime> fechas = new List <DateTime>();

            for (int i = 0; i < Cantidad; i++)
            {
                fechas.Add(FechaAleatoria(FechaInicio, DateTime.Now));
            }
            fechas.Sort((a, b) => a.CompareTo(b));

            for (int i = 0; i < Cantidad; i++)
            {
                using (SCGContext context = new SCGContext())
                {
                    using (var transaction = context.Database.BeginTransaction())
                    {
                        var lista = await context.Ganado.Where(x => x.Estado == 1).ToListAsync();

                        foreach (var val in lista)
                        {
                            if (_rand.NextDouble() < ProbabilidadSalida)
                            {
                                var prob = ((fechas[i] - val.FechaNacimiento).Value.TotalDays / 365) / 6;
                                if (_rand.NextDouble() < prob)
                                {
                                    val.Estado = Ganado.Estados.Baja;
                                    Movimiento salida = new Movimiento();
                                    salida.FechaMovimiento = fechas[i];
                                    salida.IdGanado        = val.IdGanado;
                                    if (_rand.NextDouble() < ProbabilidadMuerte)
                                    {
                                        salida.IdRazonMovimiento = Muertes[_rand.Next(0, Muertes.Count)];
                                    }
                                    else
                                    {
                                        salida.IdRazonMovimiento = 7;
                                    }
                                    context.Movimiento.Add(salida);
                                    await context.SaveChangesAsync();
                                }
                            }
                        }

                        Ganado animal = new Ganado();
                        // TAG
                        animal.Tag = (i + 100).ToString() + randomChar + randomChar + randomChar;
                        // Genero
                        if (_rand.NextDouble() < ProbabilidadMacho)
                        {
                            animal.IdGenero = Genero.Tipo.Macho;
                        }
                        else
                        {
                            animal.IdGenero = Genero.Tipo.Hembra;
                        }

                        if (_rand.NextDouble() < ProbabilidadNelore)
                        {
                            animal.IdRaza = 1;
                        }
                        else
                        {
                            animal.IdRaza = Razas[_rand.Next(0, Razas.Count)];
                        }

                        animal.IdEstancia = 1;

                        bool compra = _rand.NextDouble() > ProbabilidadNacimiento;
                        if (compra)
                        {
                            animal.IdEstanciaOrigen = Estancia[_rand.Next(0, Estancia.Count)];
                        }
                        else
                        {
                            animal.IdEstanciaOrigen = 1;
                        }

                        animal.FechaNacimiento = fechas[i];
                        animal.FechaIngreso    = fechas[i];

                        context.Ganado.Add(animal);
                        await context.SaveChangesAsync();

                        // Movimiento
                        Movimiento movimiento = new Movimiento();
                        movimiento.FechaMovimiento = fechas[i];

                        if (compra)
                        {
                            movimiento.IdRazonMovimiento = RazonMovimiento.Tipo.Compra;
                        }
                        else
                        {
                            movimiento.IdRazonMovimiento = RazonMovimiento.Tipo.Nacimiento;
                            // Madre y Padre(Probabilidad) de mas de 2 años random
                            Ganado padre = null, madre = null;
                            if (_rand.NextDouble() < ProbabilidadPadre)
                            {
                                var colPadre = await context.Ganado.Where(x => x.Estado == Ganado.Estados.Activo && x.IdGenero == Genero.Tipo.Macho && (DateTime.Now - x.FechaNacimiento) > TimeSpan.FromDays(365 * 2)).ToListAsync();

                                if (colPadre.Count != 0)
                                {
                                    padre = colPadre[_rand.Next(0, colPadre.Count)];
                                }

                                if (padre != null)
                                {
                                    Relacion relPadre = new Relacion();
                                    relPadre.IdHijo       = animal.IdGanado;
                                    relPadre.IdProgenitor = padre.IdGanado;
                                    context.Relacion.Add(relPadre);
                                    await context.SaveChangesAsync();
                                }
                            }
                            var colMadre = await context.Ganado.Where(x => x.Estado == Ganado.Estados.Activo && x.IdGenero == Genero.Tipo.Hembra && (DateTime.Now - x.FechaNacimiento) > TimeSpan.FromDays(365 * 2)).ToListAsync();

                            if (colMadre.Count != 0)
                            {
                                padre = colMadre[_rand.Next(0, colMadre.Count)];
                            }

                            if (madre != null)
                            {
                                Relacion relMadre = new Relacion();
                                relMadre.IdHijo       = animal.IdGanado;
                                relMadre.IdProgenitor = madre.IdGanado;
                                context.Relacion.Add(relMadre);
                                await context.SaveChangesAsync();
                            }

                            if (padre == null && madre == null)
                            {
                                movimiento.IdRazonMovimiento = RazonMovimiento.Tipo.Compra;
                            }
                        }
                        movimiento.IdGanado = animal.IdGanado;
                        context.Movimiento.Add(movimiento);
                        await context.SaveChangesAsync();

                        transaction.Commit();
                    }
                }
            }
        }
 public CancelacionController(SCGContext context)
 {
     _context = context;
 }
 public VacunasController(SCGContext context)
 {
     _context = context;
 }
示例#8
0
 public RazasController(SCGContext context)
 {
     _context = context;
 }
 public EstanciasController(SCGContext context)
 {
     _context = context;
 }
示例#10
0
 public HomeController(SCGContext context, UserManager <Usuario> _user, RoleManager <IdentityRole <int> > _role)
 {
     _userman = _user;
     _roleman = _role;
     _context = context;
 }
示例#11
0
 public PersonasController(SCGContext context)
 {
     _context = context;
 }
示例#12
0
 public OrdenController(SCGContext context)
 {
     _context = context;
 }
 public MovimientoController(SCGContext context)
 {
     _context = context;
 }
示例#14
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();
                        }
                    }
                }
            }
        }