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);
        }
    }