private async Task PrepRegattaVmAsync(RegattaWithOptionsViewModel model) { if (model.StartDate.HasValue) { var seasons = await _coreSeasonService.GetSeasons(model.ClubId); model.Season = seasons.Single(s => s.Start <= model.StartDate.Value && s.End >= model.StartDate.Value); } if (model.ScoringSystemId == Guid.Empty) { model.ScoringSystemId = null; } model.Fleets = new List <Fleet>(); var fleets = await _coreFleetService.GetAllFleetsForClub(model.ClubId); if (model.FleetIds != null) { foreach (var fleetId in model.FleetIds) { model.Fleets.Add(fleets .Single(f => f.Id == fleetId)); } } }
public async Task <ActionResult> Create( string clubInitials, RegattaWithOptionsViewModel model) { var clubId = await _clubService.GetClubId(clubInitials); try { if (!await _authService.CanUserEdit(User, clubId)) { return(Unauthorized()); } model.ClubId = clubId; if (!ModelState.IsValid) { var blank = await _regattaService.GetBlankRegattaWithOptions(clubId); model.SeasonOptions = blank.SeasonOptions; model.ScoringSystemOptions = blank.ScoringSystemOptions; model.FleetOptions = blank.FleetOptions; return(View(model)); } var regattaId = await _regattaService.SaveNewAsync(model); var savedRegatta = await _regattaService.GetRegattaAsync(regattaId); return(RedirectToAction("Details", new { clubInitials, season = savedRegatta.Season.UrlName, regattaName = savedRegatta.UrlName })); } catch { var blank = await _regattaService.GetBlankRegattaWithOptions(clubId); model.SeasonOptions = blank.SeasonOptions; model.ScoringSystemOptions = blank.ScoringSystemOptions; model.FleetOptions = blank.FleetOptions; return(View(model)); } }
public async Task <RegattaWithOptionsViewModel> GetBlankRegattaWithOptions(Guid clubId) { var vm = new RegattaWithOptionsViewModel { SeasonOptions = await _coreSeasonService.GetSeasons(clubId), FleetOptions = await _coreFleetService.GetAllFleetsForClub(clubId) }; var scoringSystemOptions = await _coreScoringService.GetScoringSystemsAsync(clubId, true); scoringSystemOptions.Add(new ScoringSystem { Id = Guid.Empty, Name = "<Use Club Default>" }); vm.ScoringSystemOptions = scoringSystemOptions.OrderBy(s => s.Name).ToList(); return(vm); }
public async Task <Guid> SaveNewAsync(RegattaWithOptionsViewModel model) { await PrepRegattaVmAsync(model); return(await _coreRegattaService.SaveNewRegattaAsync(model)); }
public async Task <Guid> UpdateAsync(RegattaWithOptionsViewModel model) { await PrepRegattaVmAsync(model); return(await _coreRegattaService.UpdateAsync(model)); }