public ActionResult Join(string guid)
        {
            DraftManager            draftManager            = new DraftManager(_context);
            DraftInviteManager      draftInviteManager      = new DraftInviteManager(_context);
            DraftParticipantManager draftParticipantManager = new DraftParticipantManager(_context);
            DraftInvite             draftInvite             = draftInviteManager.Get(guid);
            UserManager             userManager             = new UserManager(_context);
            User user = userManager.GetCurrentUser(User.Identity.GetUserId());

            if (draftInvite == null)
            {
                throw new Exception();
            }
            else
            {
                Draft draft = draftManager.Get(draftInvite.DraftId);

                draftInvite.Accepted = true;
                draftInvite.Active   = false;
                draftInviteManager.Update(draftInvite);

                draftParticipantManager.Add(new DraftParticipant()
                {
                    DraftId       = draftInvite.DraftId,
                    UserId        = user.UserId,
                    User          = user,
                    Name          = HttpContext.User.Identity.Name,
                    DraftPosition = draft.DraftParticipants.Count + 1
                });
            }

            return(RedirectToAction("Index"));
        }
        public ActionResult Edit(EditDraftViewModel editDraftViewModel)
        {
            if (ModelState.IsValid)
            {
                DraftManager            draftManager            = new DraftManager(_context);
                DraftInviteManager      draftInviteManager      = new DraftInviteManager(_context);
                DraftParticipantManager draftParticipantManager = new DraftParticipantManager(_context);
                UserManager             userManager             = new UserManager(_context);
                User user = userManager.GetCurrentUser(User.Identity.GetUserId());

                if (editDraftViewModel.Draft.DraftId == 0)
                {
                    draftManager.Add(editDraftViewModel.Draft);
                }
                else
                {
                    List <DraftInvite>      draftInvitesToAdd      = editDraftViewModel.Draft.DraftInvites?.Where(di => di.DraftInviteId == 0).ToList();
                    List <DraftParticipant> draftParticipantsToAdd = editDraftViewModel.Draft.DraftParticipants?.Where(di => di.DraftParticipantId == 0).ToList();

                    if (draftInvitesToAdd != null)
                    {
                        foreach (var draftInviteToAdd in draftInvitesToAdd)
                        {
                            MailMessage mailMessage = new MailMessage();
                            mailMessage.From = new MailAddress("*****@*****.**");
                            mailMessage.To.Add(new MailAddress("*****@*****.**"));
                            mailMessage.Body = string.Format(@"
                                You have been invited to join a fantasy football draft.
                                
                                Name: {0}
                                When: {1}

                                To join, click the following link. You will need to login or register in order to join.
                                www.fftoolkit.com/Draft/Join/{2}
                            ", editDraftViewModel.Draft.Name, editDraftViewModel.Draft.StartDate, draftInviteToAdd.Guid);

                            SmtpClient smtpClient = new SmtpClient();
                            smtpClient.Host        = "smtp.gmail.com";
                            smtpClient.EnableSsl   = true;
                            smtpClient.Credentials = new System.Net.NetworkCredential("*****@*****.**", "VonMiller58!");
                            smtpClient.Send(mailMessage);

                            draftInviteManager.Add(draftInviteToAdd);
                        }
                    }

                    if (draftParticipantsToAdd != null)
                    {
                        foreach (var draftParticipantToAdd in draftParticipantsToAdd)
                        {
                            draftParticipantManager.Add(draftParticipantToAdd);
                        }
                    }

                    draftManager.Update(editDraftViewModel.Draft);
                }

                return(RedirectToAction("Index"));
            }
            else
            {
                return(View(editDraftViewModel));
            }
        }