public ActionResult JoinEvent(JoinEventModel model)
        {
            List<string> Error = new List<string>();

            int roleID = (!String.IsNullOrEmpty(Request["Role"])) ? Convert.ToInt32(Request["Role"]) : 0;
            if(roleID == 0)
            {
                Error.Add("Role Not Specified");
            }

            int charID = (!String.IsNullOrEmpty(Request["SelectedCharacter"])) ? Convert.ToInt32(Request["SelectedCharacter"]) : 0;
            if(charID == 0)
            {
                Error.Add("Character not Specified");
            }

            // Ensure the character exists on the same server as the evemt
            if (charInterface.GetCharacterByID(charID).ServerID != CurrentEvent.ServerID)
            {
                Error.Add("Character doesnt exist on same server as event");
            }

            //Enfore Role Restrictions
            if(roleID != 0 && eventInterface.IsRoleRestricted(CurrentEvent.EventID, roleID))
            {
                Error.Add("The role you selected is full");
            }

            if (Error.Count == 0)
            {
                MemCharacter memChar = charInterface.GetCharacterByID(charID);
                if (charInterface.ValidateUserRoles(memChar.ClassID, new int[] { roleID }))
                {
                    CommitResponse response = eventInterface.AddNewEventAttendee(charID, CurrentEvent.EventID, roleID, model.Note, model.AttendeeStatus, MemberInfo.MemberID);
                    if (response.success)
                    {
                        return RedirectToAction("Confirmation", "Shared");
                    }
                }
            }
            else
            {
                int eCount = 0;
                foreach(string e in Error)
                {
                    this.ModelState.AddModelError("Error" + eCount, e);
                }
            }

            model.UserCharacters = charInterface.GetAllMemberCharactersByGame(MemberInfo.MemberID, CurrentEvent.GameID).ToList();
            model.RestrictedRoles = eventInterface.GetRestrictedRolesThatAreFull(CurrentEvent.EventID).ToList();
            return View(model);
        }
 public ViewResult JoinEvent(int? gameID)
 {
     int intGameID = Convert.ToInt32(gameID);
     JoinEventModel model = new JoinEventModel();
     model.IsEventFull = eventInterface.IsEventFull(CurrentEvent.EventID);
     model.UserCharacters = (from memChar in charInterface.GetAllMemberCharactersByGame(MemberInfo.MemberID, intGameID)
                             where memChar.ServerID == (int)CurrentEvent.ServerID // Filter by characters which exists on the same server as the event
                             select memChar).ToList();
     model.RestrictedRoles = eventInterface.GetRestrictedRolesThatAreFull(CurrentEvent.EventID).ToList();
     model.CantJoinEventReason = (model.UserCharacters.Count > 0) ? null : GetReasonWhyUserCantJoinEvent(intGameID, (int)CurrentEvent.ServerID);
     return View(model);
 }