public IActionResult Sortear()
        {
            var viewModel = new MegaSenaViewModel();

            SorteioMegaSena.Sortear();
            viewModel = MapAppServiceToViewModelWithWinners();

            return(View("Index", viewModel));
        }
        public IActionResult GeraAleatorios()
        {
            var viewModel = new MegaSenaViewModel();

            SorteioMegaSena.GeraBilhetesAleatorios(QUANTIDADE_BILHETES_ALEATORIOS);

            viewModel = MapAppServiceToViewModel();

            return(View("Index", viewModel));
        }
        private MegaSenaViewModel MapAppServiceToViewModel()
        {
            var viewModel = new MegaSenaViewModel();

            ((SorteioMegaSena)SorteioMegaSena).Bilhetes.ToList().ForEach(x =>
            {
                var bilheteViewModel = new MegaSenaBilheteViewModel(x.Id, x.Numeros);
                viewModel.Bilhetes.Add(bilheteViewModel);
            });

            return(viewModel);
        }
        private MegaSenaViewModel MapAppServiceToViewModelWithWinners()
        {
            var viewModel = new MegaSenaViewModel();

            viewModel = MapAppServiceToViewModel();

            ((SorteioMegaSena)SorteioMegaSena).ObtemBilhetesSemAcerto().ToList().ForEach(x =>
            {
                var bilheteViewModel = new MegaSenaBilheteViewModel(x.Id, x.Numeros);
                viewModel.BilhetesSemAcerto.Add(bilheteViewModel);
            });

            ((SorteioMegaSena)SorteioMegaSena).ObtemBilhetesComUmAcerto().ToList().ForEach(x =>
            {
                var bilheteViewModel = new MegaSenaBilheteViewModel(x.Id, x.Numeros);
                viewModel.BilhetesComUmAcerto.Add(bilheteViewModel);
            });

            ((SorteioMegaSena)SorteioMegaSena).ObtemBilhetesComDoisAcertos().ToList().ForEach(x =>
            {
                var bilheteViewModel = new MegaSenaBilheteViewModel(x.Id, x.Numeros);
                viewModel.BilhetesComDoisAcertos.Add(bilheteViewModel);
            });

            ((SorteioMegaSena)SorteioMegaSena).ObtemBilhetesComTresAcertos().ToList().ForEach(x =>
            {
                var bilheteViewModel = new MegaSenaBilheteViewModel(x.Id, x.Numeros);
                viewModel.BilhetesComTresAcertos.Add(bilheteViewModel);
            });

            ((SorteioMegaSena)SorteioMegaSena).ObtemVencedoresQuadra().ToList().ForEach(x =>
            {
                var bilheteViewModel = new MegaSenaBilheteViewModel(x.Id, x.Numeros);
                viewModel.BilhetesVencedoresQuadra.Add(bilheteViewModel);
            });

            ((SorteioMegaSena)SorteioMegaSena).ObtemVencedoresQuina().ToList().ForEach(x =>
            {
                var bilheteViewModel = new MegaSenaBilheteViewModel(x.Id, x.Numeros);
                viewModel.BilhetesVencedoresQuina.Add(bilheteViewModel);
            });

            ((SorteioMegaSena)SorteioMegaSena).ObtemVencedoresSena().ToList().ForEach(x =>
            {
                var bilheteViewModel = new MegaSenaBilheteViewModel(x.Id, x.Numeros);
                viewModel.BilhetesVencedoresSena.Add(bilheteViewModel);
            });

            viewModel.NumerosSorteados = string.Join(",", ((SorteioMegaSena)SorteioMegaSena).NumerosSorteados);

            return(viewModel);
        }
        public IActionResult AdicionaBilhete(MegaSenaViewModel viewModel)
        {
            if (ModelState.IsValid)
            {
                var numerosDoBilhete = viewModel.Numeros.Split(",").Select(x => int.Parse(x)).ToArray();
                var result           = SorteioMegaSena.RegistrarNovoBilhete(numerosDoBilhete);

                if (!result.IsValid)
                {
                    AddErrorsToModelState(result);
                }
                else
                {
                    viewModel         = MapAppServiceToViewModel();
                    viewModel.Numeros = string.Empty;
                }

                return(View("Index", viewModel));
            }

            return(View("Index", viewModel));
        }