// GET: Competitor/CreateMultiple public async Task <ActionResult> CreateMultiple( string clubInitials, #pragma warning disable CA1054 // Uri parameters should not be strings string returnUrl = null) #pragma warning restore CA1054 // Uri parameters should not be strings { ViewData["ReturnUrl"] = returnUrl; var vm = new MultipleCompetitorsWithOptionsViewModel(); var clubId = await _clubService.GetClubId(clubInitials); vm.BoatClassOptions = (await _clubService.GetAllBoatClasses(clubId)) .OrderBy(c => c.Name); var fleets = (await _clubService.GetAllFleets(clubId)) .Where(f => f.FleetType == Api.Enumerations.FleetType.SelectedBoats) .OrderBy(f => f.Name); vm.FleetOptions = _mapper.Map <List <FleetSummary> >(fleets); var errors = _adminTipService.GetMultipleCompetitorsCreateErrors(vm); if (errors != null && errors.Count > 0) { return(View("CreateErrors", errors)); } return(View(vm)); }
public IList <AdminToDoViewModel> GetMultipleCompetitorsCreateErrors( MultipleCompetitorsWithOptionsViewModel vm) { var returnList = new List <AdminToDoViewModel>(); if (vm == null) { return(returnList); } if (vm.BoatClassOptions == null || !vm.BoatClassOptions.Any()) { returnList.Add(new AdminToDoViewModel { Title = "Add a class", Details = "Before creating a competitor, add the types of boats that are sailed by your club.", Link = new ToDoLinkViewModel { Action = "Create", Controller = "BoatClass" }, Completed = false }); } return(returnList); }
public async Task SaveAsync( MultipleCompetitorsWithOptionsViewModel vm, Guid clubId) { var coreCompetitors = new List <Core.Model.Competitor>(); var fleets = (await _coreClubService.GetMinimalForSelectedBoatsFleets(clubId)) .OrderBy(f => f.Name); foreach (var comp in vm.Competitors) { // if they didn't give a name or sail, skip this row. if (String.IsNullOrWhiteSpace(comp.Name) && String.IsNullOrWhiteSpace(comp.SailNumber) ) { continue; } var currentComp = _mapper.Map <Core.Model.Competitor>(comp); currentComp.ClubId = clubId; currentComp.Fleets = new List <Fleet>(); currentComp.BoatClassId = vm.BoatClassId; if (vm.FleetIds != null) { foreach (var fleetId in vm.FleetIds) { currentComp.Fleets.Add(fleets.Single(f => f.Id == fleetId)); } } coreCompetitors.Add(currentComp); } foreach (var comp in coreCompetitors) { await _coreCompetitorService.SaveAsync(comp); } }
public async Task <ActionResult> CreateMultiple( string clubInitials, MultipleCompetitorsWithOptionsViewModel competitorsVm, string returnUrl = null) { ViewData["ReturnUrl"] = returnUrl; var clubId = await _clubService.GetClubId(clubInitials); try { // we check for errors against previously saved competitors // but we don't check for errors against other competitors // currently being saved. int i = 0; foreach (var comp in competitorsVm.Competitors) { var compModel = _mapper.Map <Competitor>(comp); compModel.BoatClassId = competitorsVm.BoatClassId; compModel.ClubId = clubId; IEnumerable <KeyValuePair <string, string> > errors = await _competitorService.GetSaveErrors(compModel); if (errors != null) { foreach (var error in errors) { if (String.IsNullOrWhiteSpace(error.Key)) { ModelState.AddModelError(string.Empty, error.Value); } else { ModelState.AddModelError($"Competitors[{i}].{error.Key}", error.Value); } } } i++; } if (!ModelState.IsValid) { var fleets = (await _clubService.GetAllFleets(clubId)) .Where(f => f.FleetType == Api.Enumerations.FleetType.SelectedBoats) .OrderBy(f => f.Name); competitorsVm.FleetOptions = _mapper.Map <List <FleetSummary> >(fleets); competitorsVm.BoatClassOptions = (await _clubService.GetAllBoatClasses(clubId)) .OrderBy(c => c.Name); return(View(competitorsVm)); } if (!await _authService.CanUserEdit(User, clubId)) { return(Unauthorized()); } await _competitorService.SaveAsync(competitorsVm, clubId); if (!string.IsNullOrWhiteSpace(returnUrl)) { return(Redirect(returnUrl)); } return(RedirectToAction("Index", "Competitor")); } catch { var fleets = (await _clubService.GetAllFleets(clubId)) .Where(f => f.FleetType == Api.Enumerations.FleetType.SelectedBoats) .OrderBy(f => f.Name); competitorsVm.FleetOptions = _mapper.Map <List <FleetSummary> >(fleets); competitorsVm.BoatClassOptions = (await _clubService.GetAllBoatClasses(clubId)) .OrderBy(c => c.Name); return(View(competitorsVm)); } }