예제 #1
0
        private async Task <bool> InsertarDetalleCarrera(Carreras carrera, List <JugadorDTO> participantes)
        {
            Random           random               = new Random();
            CarreraJugador   carreraJugador       = null;
            decimal          saldoApostado        = 0;
            List <Jugadores> participantesCarrera = await new JugadorRepository().ObtenerParticipantes(participantes);

            using (CarrerasBDEntities context = new CarrerasBDEntities())
            {
                var    valorApostado = 0;
                string tipoApuesta   = TipoApuesta();

                foreach (var jugadorCarrera in participantesCarrera)
                {
                    switch (tipoApuesta)
                    {
                    case "CONSERVADORA":
                        valorApostado = random.Next(10, 21);
                        break;

                    default:
                        valorApostado = random.Next(5, 16);
                        break;
                    }
                    if (jugadorCarrera.Saldo > 0)
                    {
                        if (jugadorCarrera.Saldo >= 2000)
                        {
                            saldoApostado  = (jugadorCarrera.Saldo / 100) * valorApostado;
                            carreraJugador = new CarreraJugador()
                            {
                                Jugador          = jugadorCarrera.IdJugador,
                                CaballoApostado  = participantes.FirstOrDefault(a => a.IdJugador == jugadorCarrera.IdJugador).CaballoApostado,
                                Carrera          = carrera.IdCarrera,
                                CantidadApostada = saldoApostado
                            };
                        }
                        else
                        {
                            if (jugadorCarrera.Saldo < 2000)
                            {
                                saldoApostado  = jugadorCarrera.Saldo;
                                carreraJugador = new CarreraJugador()
                                {
                                    Jugador          = jugadorCarrera.IdJugador,
                                    CaballoApostado  = participantes.FirstOrDefault(a => a.IdJugador == jugadorCarrera.IdJugador).CaballoApostado,
                                    Carrera          = carrera.IdCarrera,
                                    CantidadApostada = saldoApostado
                                };
                            }
                        }
                        new JugadorRepository().ActualizarSaldoApuestaJugador(jugadorCarrera.IdJugador, saldoApostado);
                        context.CarreraJugador.Add(carreraJugador);
                    }
                }

                return(await context.SaveChangesAsync() > 0 ? true : false);
            }
        }
예제 #2
0
        private async Task <bool> AsignarSaldoGanador(Carreras carrera)
        {
            bool retorno = false;

            foreach (var ganador in carrera.CarreraJugador)
            {
                var caballoGanador = await new CaballoRepository().ObtenerCaballoPorId(carrera.CaballoGanador);
                if (ganador.CaballoApostado.Equals(carrera.CaballoGanador))
                {
                    var cantidadMasBonificador = ganador.CantidadApostada * caballoGanador.Bonificador;
                    ganador.Jugadores.Saldo = await new JugadorRepository().ActualizarSaldoGanadorJugador(ganador.Jugadores.IdJugador, cantidadMasBonificador);
                    retorno = true;
                }
            }

            return(retorno);
        }
예제 #3
0
        private async Task <CarreraDTO> RetornoCarrera(CarreraDTO carreraDto, Carreras carrera)
        {
            carreraDto.Participantes.Clear();
            JugadorDTO jugadorDto = null;

            foreach (var jugador in carrera.CarreraJugador)
            {
                jugadorDto = new JugadorDTO()
                {
                    IdJugador        = jugador.Jugadores.IdJugador,
                    CaballoApostado  = jugador.CaballoApostado,
                    Nombre           = jugador.Jugadores.NombreJugador,
                    Saldo            = jugador.Jugadores.Saldo,
                    CantidadApostada = jugador.CantidadApostada
                };
                carreraDto.Participantes.Add(jugadorDto);
            }

            await AsignarSaldoGanador(carrera);

            foreach (var jugador in carrera.CarreraJugador)
            {
                jugadorDto = new JugadorDTO()
                {
                    IdJugador        = jugador.Jugadores.IdJugador,
                    CaballoApostado  = jugador.CaballoApostado,
                    Nombre           = jugador.Jugadores.NombreJugador,
                    Saldo            = jugador.Jugadores.Saldo,
                    CantidadApostada = jugador.CantidadApostada
                };

                if (jugador.CaballoApostado == carrera.CaballoGanador)
                {
                    carreraDto.Ganadores.Add(jugadorDto);
                }
            }

            carreraDto.IdCarrera      = carrera.IdCarrera;
            carreraDto.CaballoGanador = await new CaballoRepository().ObtenerCaballoPorId(carrera.CaballoGanador);
            carreraDto.NombreCarrera  = carrera.NombreCarrera;

            return(carreraDto);
        }
예제 #4
0
        //se aplicara logica de negocio en este componente debido a lo acotado.
        public async Task <CarreraDTO> CrearCarrera(CarreraDTO carreraDto)
        {
            Random random = new Random();

            using (CarrerasBDEntities context = new CarrerasBDEntities())
            {
                Carreras carrera = new Carreras();
                carrera.CaballoGanador = await ObtenerGanador();

                context.Carreras.Add(carrera);
                await context.SaveChangesAsync();

                carrera.NombreCarrera    = string.Format("Carrera {0}", carrera.IdCarrera);
                carreraDto.Participantes = await AsignarPorcentaje(carreraDto.Participantes);
                await InsertarDetalleCarrera(carrera, carreraDto.Participantes);

                carrera.CarreraJugador = context.CarreraJugador.Where(a => a.Carreras.IdCarrera == carrera.IdCarrera).ToList();

                await context.SaveChangesAsync();

                return(await RetornoCarrera(carreraDto, carrera));
            }
        }