private void CreateNewPlayerCareer(long userId, long newTeamId, DateTime currentDT) { PlayerCareerRepository.Includes.Add(r => r.Team.PlayerCareers); var carrersForUpdating = PlayerCareerRepository.GetAll() .Where(r => r.UserId == userId && r.CareerDateEnd == null).ToList(); foreach (var item in carrersForUpdating) { if (item.IsCaptain == true) { #warning Using to prevent deactivating default team if (item.Team.IsDefault == true) { throw new Abp.UI.UserFriendlyException("Unallowed action!", "Captain of default team can not leave it. This action will be available after transfering captaincy to another player."); } var newCaptain = item.Team.CurrentPlayers.FirstOrDefault(r => !r.IsCaptain); if (newCaptain == null) { //deactivate team item.Team.IsActive = false; TeamRepository.Update(item.Team); } else { newCaptain.IsCaptain = true; } } item.CareerDateEnd = currentDT; item.IsCaptain = false; PlayerCareerRepository.Update(item); } PlayerCareer newPlayerCareer = new PlayerCareer() { CareerDateEnd = null, CareerDateStart = currentDT, IsCaptain = false, TeamId = newTeamId, UserId = userId, IsActive = true, }; PlayerCareerRepository.Insert(newPlayerCareer); PlayerCareerRepository.Includes.Clear(); }
public CreateOutput <TeamRequestDto, long> Create(CreateTeamRequestInput input) { TeamRequest newTeamRequestEntity; try { long teamId = PlayerCareerRepository .Single(r => r.UserId == (Session.UserId ?? 0) && r.CareerDateEnd == null).TeamId; newTeamRequestEntity = new TeamRequest() { InvitedUserId = input.InvitedUserId, TeamId = teamId }; if (!TeamRequestPolicy.CanCreateEntity(newTeamRequestEntity)) { throw new Exception(); } } catch { throw new CityQuestPolicyException(CityQuestConsts.CQPolicyExceptionCreateDenied, "\"TeamRequest\""); } TeamRequestRepository.Includes.Add(r => r.LastModifierUser); TeamRequestRepository.Includes.Add(r => r.CreatorUser); TeamRequestRepository.Includes.Add(r => r.InvitedUser); TeamRequestRepository.Includes.Add(r => r.Team); TeamRequestDto newTeamRequestDto = (TeamRequestRepository.Insert(newTeamRequestEntity)).MapTo <TeamRequestDto>(); TeamRequestRepository.Includes.Clear(); return(new CreateOutput <TeamRequestDto, long>() { CreatedEntity = newTeamRequestDto }); }