private void CreateNewTeam(vmRegistration_CreateTeam model, Registration reg)
        {
            if (string.IsNullOrEmpty(model.TeamName))
            {
                ModelState.AddModelError("TeamName", "Team Name is Required");
                return;
            }

            Match match = Regex.Match(model.TeamName, @"([a-zA-Z].*?){3}", RegexOptions.IgnoreCase);

            if (!match.Success)
            {
                ModelState.AddModelError("TeamName", "Team Name must contain at least 3 letters.");
                return;
            }

            Team newTeam = new Team {
                EventId = model.EventId, Name = model.TeamName, CreatorID = CurrentUser.UserId
            };

            ServiceResult tempTeamResult = _service.GenerateTempTeam(newTeam);

            if (!tempTeamResult.Success)
            {
                Utilities.AddModelStateErrors(ModelState, tempTeamResult.GetServiceErrors());
            }
            else
            {
                reg.Team = newTeam;
            }
        }
        private void JoinExistingTeam(vmRegistration_CreateTeam model, Registration reg)
        {
            if (string.IsNullOrEmpty(model.TeamCode))
            {
                ModelState.AddModelError("TeamCode", "Team Code is Required.");
                ViewBag.showTeamCode = "true";
                return;
            }

            var existingTeam = _service.GetTeamByCode(model.EventId, model.TeamCode);

            if (existingTeam != null)
            {
                reg.TeamId = existingTeam.TeamId;
            }
            else
            {
                ModelState.AddModelError("TeamCode", "There is no team using this code for this event.");
            }
        }
        public ActionResult CreateTeam(vmRegistration_CreateTeam model)
        {
            if (!Utilities.IsValidCart())
            {
                return(RedirectToAction("Index", "home"));
            }

            ViewBag.showTeamCode = "false";
            if (ModelState.IsValid)
            {
                var reg = (Registration)SessionManager.CurrentCart.ActionItems[model.ItemId].ActionObject;

                if (model.RegistrationType.ToLower() == "team")
                {
                    switch (model.TeamType.ToLower())
                    {
                    case "existing":
                        JoinExistingTeam(model, reg);
                        break;

                    case "new":
                        CreateNewTeam(model, reg);
                        break;
                    }
                }
                else
                {
                    reg.Team   = null;
                    reg.TeamId = null;
                }

                if (ModelState.IsValid)
                {
                    return(RedirectToAction("RegistrationDetails", new { itemId = model.ItemId }));
                }
            }

            model.EventOverview = _service.GetEventOverviewById(model.EventId);
            return(View(model));
        }
        public ActionResult CreateTeam(Guid itemId)
        {
            if (!Utilities.IsValidCart())
            {
                return(RedirectToAction("Index", "home"));
            }

            ViewBag.showTeamCode = "false";
            var reg  = (Registration)SessionManager.CurrentCart.ActionItems[itemId].ActionObject;
            var wave = _service.GetEventWaveById(reg.EventWaveId);

            var vm = new vmRegistration_CreateTeam
            {
                ItemId        = itemId,
                EventId       = wave.EventDate.EventId,
                EventOverview = _service.GetEventOverviewById(wave.EventDate.EventId)
            };

            if (reg.TeamId.HasValue)
            {
                vm.RegistrationType = "team";
                vm.TeamType         = "existing";
                vm.TeamCode         = _service.GetTeamById(reg.TeamId.Value).Code;
            }
            else if (reg.Team != null)
            {
                vm.RegistrationType = "team";
                vm.TeamType         = "new";
                vm.TeamName         = reg.Team.Name;
            }
            else
            {
                vm.RegistrationType = "individual";
                vm.TeamType         = "new";
            }

            return(View(vm));
        }