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); } }
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); }
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); }
//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)); } }