public void HandleRequest(IRequest request) { using (var scope = Db.CreateTransaction()) { var character = request.Session.Character; var playersToRegister = request.Data.GetOrDefault <int[]>(k.members).Select(Character.Get).ToArray(); var probeEid = request.Data.GetOrDefault <long>(k.eid); playersToRegister.Length.ThrowIfEqual(0, ErrorCodes.WTFErrorMedicalAttentionSuggested); var probe = _unitHelper.GetUnitOrThrow <ProximityProbeBase>(probeEid); probe.HasAccess(character).ThrowIfError(); var corporation = character.GetPrivateCorporationOrThrow(); var members = corporation.GetCharacterMembers(); var processedCharacters = playersToRegister.Intersect(members).ToArray(); if (processedCharacters.Length <= 0) { return; } var bosses = corporation.Members.Where(m => m.role.IsAnyRole(CorporationRole.CEO, CorporationRole.DeputyCEO)).Select(m => m.character).ToArray(); probe.GetMaxRegisteredCount().ThrowIfLess(processedCharacters.Length - bosses.Length, ErrorCodes.MaximumAllowedRegistrationExceeded); PBSRegisterHelper.ClearMembersFromSql(probeEid); //add bosses processedCharacters = processedCharacters.Concat(bosses).Distinct().ToArray(); PBSRegisterHelper.WriteRegistersToDb(probeEid, processedCharacters); Transaction.Current.OnCommited(() => { probe.ReloadRegistration(); probe.SendUpdateToAllPossibleMembers(); }); scope.Complete(); } }
public void HandleRequest(IRequest request) { var character = request.Session.Character; var corporation = character.GetPrivateCorporationOrThrow(); var role = corporation.GetMemberRole(character); var allProbes = ProximityProbeBase.IsAllProbesVisible(role); var probeEids = allProbes ? corporation.GetProximityProbeEids() : PBSRegisterHelper.PBSRegGetEidsByRegisteredCharacter(character); var probesDict = _zoneManager.Zones.GetUnits <ProximityProbeBase>() .Where(probeBase => probeEids.Contains(probeBase.Eid)) .ToDictionary("c", p => p.ToDictionary()); var reply = new Dictionary <string, object> { { k.probes, probesDict }, }; Message.Builder.FromRequest(request).WithData(reply).Send(); }
public Character[] GetRegisteredCharacters() { return(LazyInitializer.EnsureInitialized(ref _registeredCharacters, () => PBSRegisterHelper.GetRegisteredMembers(_sourceUnit.Eid).ToArray())); }