/// <summary> /// dtoからviewModelの新しいインスタンスを生成します。 /// </summary> public RequestContinuedPlayersInputViewModel(RequestContinuedPlayersDto dto) { this.PlayerId = dto.PlayerId; this.PlayerName = dto.PlayerName.Value; this.PlayerNameKana = dto.PlayerNameKana.Value; this.CategoryId = dto.Category.Id; this.CategoryName = dto.Category.Name; this.Gender = dto.Gender.Name; this.BirthDate = dto.BirthDate.DisplayValue; this.IsRequested = dto.IsRequested; this.IsSelected = false; var select = MvcViewHelper.CreateSelectListItem <Category>(); var extracted = select.Where(o => int.Parse(o.Value) <= this.CategoryId).ToArray(); this.CategorySelect = extracted.ToList(); }
public async Task <List <RequestContinuedPlayersDto> > GetRequestContinuedPlayers(int teamId) { // 過去3年分の年度を取得 var seasonIds = new List <int>(); var thisSeasonId = 0; for (var i = 0; i < RequestContinuedPlayersSearchPeriod; i++) { var day = new DateTime(DateTime.Now.Year - i, DateTime.Now.Month, DateTime.Now.Day); var season = await this.seasonRepository.FindByDate(day); seasonIds.Add(season.Id); if (i == 0) { thisSeasonId = season.Id; } } // 新しい順に登録選手を取得 var requestPlayers = new List <RequestPlayer>(); foreach (var seasonId in seasonIds) { var list = await this.requestPlayerRepository.FindAllByTeamIdAndSeasonId(teamId, seasonId); requestPlayers.AddRange(list); } // 前々年度まで登録していた17歳以下の選手を取得 var requestContinuedPlayers = new List <RequestContinuedPlayersDto>(); foreach (var requestPlayer in requestPlayers) { var playerId = requestPlayer.PlayerId; if (!requestContinuedPlayers.Any(o => o.PlayerId == playerId)) { continue; } var player = requestPlayer.Player; var seasonAge = player.GetSeasonAge(); if (seasonAge > RegisterableUpperLimitAge) { continue; } var requestContinuedPlayer = new RequestContinuedPlayersDto(); requestContinuedPlayer.PlayerId = playerId; requestContinuedPlayer.PlayerName = new PlayerName(player.PlayerFamilyName, player.PlayerFirstName); requestContinuedPlayer.PlayerNameKana = new PlayerNameKana(player.PlayerFamilyNameKana, player.PlayerFirstNameKana); requestContinuedPlayer.Gender = player.Gender; requestContinuedPlayer.BirthDate = player.BirthDate; if (requestPlayer.SeasonId == thisSeasonId) { // 今年度の登録が済の場合 requestContinuedPlayer.IsRequested = true; requestContinuedPlayer.Category = player.Category; } else { // 別団体の所属歴がある場合は対象外とする if (await this.requestPlayerRepository.ExistsInOtherTeamAsync(teamId, playerId)) { continue; } // 今年度の登録が未の場合、年齢基準のカテゴリーと過去に登録していたカテゴリーの大きい方を渡す requestContinuedPlayer.Category = player.GetAvailableLowestCategory(); } requestContinuedPlayers.Add(requestContinuedPlayer); } return(requestContinuedPlayers); }