public async Task <ActionResult> Register(RegisterViewModel model)
        {
            if (ModelState.IsValid)
            {
                var user = new ApplicationUser()
                {
                    UserName = model.UserName
                };
                var result = await UserManager.CreateAsync(user, model.Password);

                if (result.Succeeded)
                {
                    await SignInAsync(user, isPersistent : false);

                    using (var context = new RsbContext())
                    {
                        var id = User.Identity.GetUserId();
                        context.Users.Add(new User {
                            UserId = new Guid(user.Id), Name = model.UserName, CurrentScore = 0
                        });
                        context.SaveChanges();
                    }

                    return(RedirectToAction("Index", "Home"));
                }
                else
                {
                    AddErrors(result);
                }
            }

            // If we got this far, something failed, redisplay form
            return(View(model));
        }
 public bool GetLeagueLeave(Guid userId, Guid leagueId)
 {
     using (var context = new RsbContext())
     {
         var league = context.Leagues.Single(o => o.Id == leagueId);
         league.Users.RemoveAll(o => o.UserId == userId);
         context.SaveChanges();
         return(true);
     }
 }
 public bool GetLeagueJoin(Guid userId, string code)
 {
     using (var context = new RsbContext())
     {
         var league = context.Leagues.SingleOrDefault(o => o.Code == code);
         if (league == null)
         {
             return(false);
         }
         league.Users.Add(context.Users.Single(o => o.UserId == userId));
         context.SaveChanges();
         return(true);
     }
 }
 public bool GetLeagueCreate(Guid userId, string name)
 {
     using (var context = new RsbContext())
     {
         var code   = new Random().Next(0, 9999).ToString(); // TODO: Generate code util
         var league = new League {
             Code = code, Name = name, Users = new List <User>(), Id = Guid.NewGuid()
         };
         league.Users.Add(context.Users.Single(o => o.UserId == userId));
         context.Leagues.Add(league);
         context.SaveChanges();
         return(true);
     }
 }
        public bool GetStar(Guid weekId, Guid bakerId)
        {
            using (var context = new RsbContext())
            {
                var week      = context.Weeks.SingleOrDefault(o => o.Id == weekId);
                var starBaker = context.Bakers.Single(o => o.Id == bakerId);

                if (week != null && starBaker != null)
                {
                    week.StarBaker = starBaker;
                    context.SaveChanges();
                    return(true);
                }
                return(false);
            }
        }
        private void ScoreWeek(RsbContext context, Week week)
        {
            var users = context.Users.Include("Predictions");

            foreach (var user in users)
            {
                var currentScore   = user.CurrentScore;
                var newScore       = user.CurrentScore;
                var weekPrediction = user.Predictions.SingleOrDefault(o => o.WeekId == week.Id);
                if (weekPrediction == null)
                {
                    break;
                }

                if (week.ExitBaker.Id == weekPrediction.ExitBakerId)
                {
                    newScore++;
                }
                if (week.ExitBaker.Id == weekPrediction.StarBakerId)
                {
                    newScore--;
                }
                if (week.StarBaker.Id == weekPrediction.StarBakerId)
                {
                    newScore++;
                }
                if (week.StarBaker.Id == weekPrediction.ExitBakerId)
                {
                    newScore--;
                }

                if (user.PreviousScores == null)
                {
                    user.PreviousScores = new List <int>();
                }

                user.PreviousScores.Add(currentScore);
                user.CurrentScore = newScore;
            }

            week.Scored = true;
            context.SaveChanges();
        }
        public bool GetExit(Guid userId, Guid weekId, Guid bakerId)
        {
            using (var context = new RsbContext())
            {
                var week = context.Weeks.SingleOrDefault(o => o.Id == weekId);

                if (week == null || week.EndDateTime < DateTime.UtcNow)
                {
                    return(false);
                }

                var user = context.Users.Include("Predictions").Single(o => o.UserId == userId);
                var pred = user.Predictions.SingleOrDefault(o => o.WeekId == weekId);

                if (pred == null)
                {
                    pred = new Prediction
                    {
                        ExitBakerId  = bakerId,
                        PredictionId = Guid.NewGuid(),
                        WeekId       = weekId
                    };
                    user.Predictions.Add(pred);
                }
                else
                {
                    pred.ExitBakerId = bakerId;

                    if (pred.ExitBakerId == pred.StarBakerId)
                    {
                        pred.StarBakerId = Guid.Empty;
                    }
                }
                context.SaveChanges();
                return(true);
            }
        }