public async Task <IActionResult> Edit(Guid id, [Bind("Id,Placar,DataJogo,MinimoTemporada,MaximoTemporada,QuebraRecordeMaximo,QuebraRecordeMinimo,TemporadaId")] RegistroJogo registroJogo)
        {
            if (id != registroJogo.Id)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    _context.Update(registroJogo);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!RegistroJogoExists(registroJogo.Id))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }
            return(View(registroJogo));
        }
        private RegistroJogo CalculaRegistrosTemporada(RegistroJogo registroJogo)
        {
            int?minimoTemporada, maximoTemporada;

            BuscaMinimoEMaximoTemporada(registroJogo, out minimoTemporada, out maximoTemporada);

            if (minimoTemporada == null)
            {
                registroJogo.MinimoTemporada     = registroJogo.Placar;
                registroJogo.MaximoTemporada     = registroJogo.Placar;
                registroJogo.QuebraRecordeMaximo = 1;
                registroJogo.QuebraRecordeMinimo = 1;
                registroJogo.NumeroJogo          = 1;

                return(registroJogo);
            }

            registroJogo.NumeroJogo = _context.RegistroJogo.Where(x => x.TemporadaId == registroJogo.TemporadaId).Max(x => x.NumeroJogo) + 1;

            if (registroJogo.Placar < minimoTemporada)
            {
                var quebraRecordeMinimo = BuscaQuebraRecordeMinimo(registroJogo.TemporadaId);

                registroJogo.MaximoTemporada     = _context.RegistroJogo.Where(x => x.TemporadaId == registroJogo.TemporadaId).Max(x => x.MaximoTemporada);
                registroJogo.QuebraRecordeMaximo = _context.RegistroJogo.Where(x => x.TemporadaId == registroJogo.TemporadaId).Max(x => x.QuebraRecordeMaximo);

                registroJogo.QuebraRecordeMinimo = quebraRecordeMinimo + 1;
                registroJogo.MinimoTemporada     = registroJogo.Placar;

                return(registroJogo);
            }
            else if (registroJogo.Placar > maximoTemporada)
            {
                var quebraRecordeMaximo = BuscaQuebraRecordeMaximo(registroJogo.TemporadaId);

                registroJogo.MinimoTemporada     = _context.RegistroJogo.Where(x => x.TemporadaId == registroJogo.TemporadaId).Min(x => x.MinimoTemporada);
                registroJogo.QuebraRecordeMinimo = _context.RegistroJogo.Where(x => x.TemporadaId == registroJogo.TemporadaId).Max(x => x.QuebraRecordeMinimo);

                registroJogo.QuebraRecordeMaximo = quebraRecordeMaximo + 1;
                registroJogo.MaximoTemporada     = registroJogo.Placar;

                return(registroJogo);
            }
            else
            {
                registroJogo.MaximoTemporada     = _context.RegistroJogo.Where(x => x.TemporadaId == registroJogo.TemporadaId).Max(x => x.MaximoTemporada);
                registroJogo.QuebraRecordeMaximo = _context.RegistroJogo.Where(x => x.TemporadaId == registroJogo.TemporadaId).Max(x => x.QuebraRecordeMaximo);
                registroJogo.MinimoTemporada     = _context.RegistroJogo.Where(x => x.TemporadaId == registroJogo.TemporadaId).Min(x => x.MinimoTemporada);
                registroJogo.QuebraRecordeMinimo = _context.RegistroJogo.Where(x => x.TemporadaId == registroJogo.TemporadaId).Max(x => x.QuebraRecordeMinimo);

                return(registroJogo);
            }
        }
        public async Task <IActionResult> Create([Bind("Id,Placar,MinimoTemporada,MaximoTemporada,QuebraRecordeMaximo,QuebraRecordeMinimo,TemporadaId")] RegistroJogo registroJogo)
        {
            if (ModelState.IsValid)
            {
                registroJogo = CalculaRegistrosTemporada(registroJogo);

                registroJogo.Id = Guid.NewGuid();
                _context.Add(registroJogo);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            return(View(registroJogo));
        }
 private void BuscaMinimoEMaximoTemporada(RegistroJogo registroJogo, out int?minimoTemporada, out int?maximoTemporada)
 {
     minimoTemporada = _context.RegistroJogo.Where(x => x.TemporadaId == registroJogo.TemporadaId).Min(x => x.MinimoTemporada);
     maximoTemporada = _context.RegistroJogo.Where(x => x.TemporadaId == registroJogo.TemporadaId).Max(x => x.MaximoTemporada);
 }