public async Task Process(JoinFactionRequest joinFaction) { var db = new ZkDataContext(); var acc = db.Accounts.Find(User.AccountID); var fac = db.Factions.First(x => !x.IsDeleted && x.Shortcut == joinFaction.Faction); if (acc.FactionID == null) { if (acc.Clan != null && acc.Clan.FactionID == null) // if your clan is faction-less join the faciton too { acc.Clan.FactionID = fac.FactionID; foreach (Account member in acc.Clan.Accounts) { member.FactionID = fac.FactionID; } db.SaveChanges(); db.Events.InsertOnSubmit(server.PlanetWarsEventCreator.CreateEvent("Clan {0} moved to faction {1}", acc.Clan, fac)); } acc.FactionID = fac.FactionID; } db.SaveChanges(); db.Events.InsertOnSubmit(server.PlanetWarsEventCreator.CreateEvent("{0} joins {1}", acc, fac)); db.SaveChanges(); await server.PublishAccountUpdate(acc); await server.PublishUserProfileUpdate(acc); }
public async Task Process(LinkSteam linkSteam) { await Task.Delay(2000); // steam is slow to get the ticket from client .. wont verify if its checked too soon var steamID = state.SteamWebApi.WebValidateAuthToken(linkSteam.Token); var info = state.SteamWebApi.WebGetPlayerInfo(steamID); using (var db = new ZkDataContext()) { var acc = await db.Accounts.FindAsync(User.AccountID); acc.SteamID = steamID; acc.SteamName = info.personaname; await db.SaveChangesAsync(); await state.PublishAccountUpdate(acc); } }