Exemple #1
0
        public async Task <IActionResult> Build()
        {
            var currentUser = await _userManager.GetUserAsync(User);

            if (currentUser == null)
            {
                return(Challenge());
            }

            var qbs = await _nflPlayerService.GetQuarterbacks().ToListAsync();

            var rbs = await _nflPlayerService.GetRunningBacks().ToListAsync();

            var tes = await _nflPlayerService.GetTightEnds().ToListAsync();

            var wrs = await _nflPlayerService.GetWideReceivers().ToListAsync();

            var viewModel = new BuildFantasyRosterViewModel
            {
                Quarterbacks  = qbs,
                RunningBacks  = rbs,
                TightEnds     = tes,
                WideReceivers = wrs
            };

            return(View(viewModel));
        }
Exemple #2
0
        public async Task <IActionResult> Build(BuildFantasyRosterViewModel model)
        {
            // TODO: this method has some awful repeated code, rebuilding the
            // viewmodel in the error condition which hits the database a "lot".
            // i don't yet know if it can be improved.

            var currentUser = await _userManager.GetUserAsync(User);

            if (currentUser == null)
            {
                return(Challenge());
            }
            if (model.RunningBack1Id == model.RunningBack2Id)
            {
                ModelState.AddModelError(String.Empty, "You can't have two of the same running backs.");
            }
            if (model.WideReceiver1Id == model.WideReceiver2Id)
            {
                ModelState.AddModelError(String.Empty, "You can't have two of the same wide receivers.");
            }
            if (ModelState.ErrorCount != 0)
            {
                model.Quarterbacks = await _nflPlayerService.GetQuarterbacks().ToListAsync();

                model.RunningBacks = await _nflPlayerService.GetRunningBacks().ToListAsync();

                model.TightEnds = await _nflPlayerService.GetTightEnds().ToListAsync();

                model.WideReceivers = await _nflPlayerService.GetWideReceivers().ToListAsync();

                return(View(model));
            }

            var qb = await _nflPlayerService.GetQuarterbackByIdAsync(model.QuarterbackId);

            var rb1 = await _nflPlayerService.GetRunningBackByIdAsync(model.RunningBack1Id);

            var rb2 = await _nflPlayerService.GetRunningBackByIdAsync(model.RunningBack2Id);

            var te = await _nflPlayerService.GetTightEndByIdAsync(model.TightEndId);

            var wr1 = await _nflPlayerService.GetWideReceiverByIdAsync(model.WideReceiver1Id);

            var wr2 = await _nflPlayerService.GetWideReceiverByIdAsync(model.WideReceiver2Id);

            if (qb == null || rb1 == null || rb2 == null || te == null || wr1 == null || wr2 == null)
            {
                ModelState.AddModelError(String.Empty, "there was an error with one or more submitted player ids.");
                model.Quarterbacks = await _nflPlayerService.GetQuarterbacks().ToListAsync();

                model.RunningBacks = await _nflPlayerService.GetRunningBacks().ToListAsync();

                model.TightEnds = await _nflPlayerService.GetTightEnds().ToListAsync();

                model.WideReceivers = await _nflPlayerService.GetWideReceivers().ToListAsync();

                return(View(model));
            }

            FantasyRoster roster = new FantasyRoster
            {
                Owner           = currentUser,
                OwnerId         = currentUser.Id,
                QuarterbackId   = model.QuarterbackId,
                Quarterback     = qb,
                RunningBack1Id  = model.RunningBack1Id,
                RunningBack1    = rb1,
                RunningBack2Id  = model.RunningBack2Id,
                RunningBack2    = rb2,
                TightEndId      = model.TightEndId,
                TightEnd        = te,
                WideReceiver1Id = model.WideReceiver1Id,
                WideReceiver1   = wr1,
                WideReceiver2Id = model.WideReceiver2Id,
                WideReceiver2   = wr2
            };

            bool success = await _rosterService.AddOrUpdateRosterAsync(roster);

            return(RedirectToAction("Index"));
        }