private async Task _validate(ChangedPlayer model) { if ((await Exists(model.Id)).Equals(false)) { throw new ResourceNotFound(); } await Task.CompletedTask; }
public async Task Update([FromBody] ChangedPlayer model) { await Validate(model); AuthorizeAny( () => Actor.IsRegistrar, () => PlayerService.MapId(model.Id).Result == Actor.Id ); var result = await PlayerService.Update(model, Actor.IsRegistrar); await Hub.Clients.Group(result.TeamId).TeamEvent( new HubEvent <TeamState>(Mapper.Map <TeamState>(result), EventAction.Updated) ); }
public async Task <Player> Update(ChangedPlayer model, bool sudo = false) { var entity = await Store.Retrieve(model.Id); var prev = Mapper.Map <Player>(entity); if (!sudo) { Mapper.Map( Mapper.Map <SelfChangedPlayer>(model), entity ); } else { Mapper.Map(model, entity); } // check uniqueness bool found = await Store.DbSet.AnyAsync(p => p.GameId == entity.GameId && p.TeamId != entity.TeamId && p.Name == entity.Name ); if (found) { entity.NameStatus = AppConstants.NameStatusNotUnique; } else if (entity.NameStatus == AppConstants.NameStatusNotUnique) { entity.NameStatus = ""; } if (entity.Name == entity.ApprovedName) { entity.NameStatus = ""; } await Store.Update(entity); // change names for whole team bool namesChanged = prev.Name != entity.Name || prev.ApprovedName != entity.ApprovedName || prev.NameStatus != entity.NameStatus ; if (namesChanged) { var team = await Store.ListTeamByPlayer(model.Id); foreach (var p in team) { p.Name = entity.Name; p.ApprovedName = entity.ApprovedName; p.NameStatus = entity.NameStatus; } await Store.Update(team); } return(Mapper.Map <Player>(entity)); }