コード例 #1
0
    // 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));
    }
コード例 #2
0
    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);
    }
コード例 #3
0
    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);
        }
    }
コード例 #4
0
    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));
        }
    }