/// <summary> /// Gets the eligible connector with limit considering how many non-closed requests the connector may already have. /// </summary> /// <param name="connectionOpportunityId">The connection opportunity identifier.</param> /// <param name="rockContext">The rock context.</param> /// <param name="globalLimit">The global limit.</param> /// <returns></returns> private List <ConnectionConnector> GetEligibleConnectorWithLimit(int connectionOpportunityId, RockContext rockContext, int globalLimit) { var eligibleConnectors = new List <ConnectionConnector>(); var qryConnectionOpportunityConnectorGroups = new ConnectionOpportunityConnectorGroupService(rockContext).Queryable() .Where(a => a.ConnectionOpportunityId == connectionOpportunityId && a.ConnectorGroup.IsActive && !a.ConnectorGroup.IsArchived); // Get all connection requests that are active for the given opportunity that have a connector var activeConnectionRequestsWithConnector = new ConnectionRequestService(rockContext) .Queryable() .Where(a => a.ConnectionOpportunityId == connectionOpportunityId && a.ConnectorPersonAlias != null && a.ConnectionState == ConnectionState.Active); foreach (var opportunityConnectionGroup in qryConnectionOpportunityConnectorGroups) { var members = opportunityConnectionGroup.ConnectorGroup.Members.Where(m => m.GroupMemberStatus == GroupMemberStatus.Active).ToList(); members.LoadAttributes(); foreach (var member in members) { ConnectionConnector connectionConnector = new ConnectionConnector() { PersonAliasId = member.Person.PrimaryAliasId, PersonId = member.PersonId, CampusId = opportunityConnectionGroup.CampusId, }; eligibleConnectors.Add(connectionConnector); var campaignDailyLimit = member.GetAttributeValue("CampaignDailyLimit").AsIntegerOrNull(); connectionConnector.Limit = campaignDailyLimit.HasValue ? campaignDailyLimit.Value : globalLimit; connectionConnector.Current = activeConnectionRequestsWithConnector.Where(a => a.ConnectorPersonAlias.PersonId == member.PersonId).Count(); var campaignScheduleDays = member.GetAttributeValue("CampaignScheduleDays"); connectionConnector.DaysOfWeek = new List <DayOfWeek>(); if (!string.IsNullOrWhiteSpace(campaignScheduleDays)) { connectionConnector.DaysOfWeek = campaignScheduleDays.Split(',').Select(a => ( DayOfWeek )a.AsInteger()).ToList(); } } } return(eligibleConnectors); }
private void Window_Loaded(Object sender, RoutedEventArgs e) { //Catch all exceptions Application.Current.DispatcherUnhandledException += Current_DispatcherUnhandledException; Application.Current.Exit += Current_Exit; String serverIp = ConfigurationManager.AppSettings["ServerIp"]; String serverPort = ConfigurationManager.AppSettings["ServerPort"]; _logger.Info($"Client will try to connect to {serverIp}:{serverPort}"); _connector = new ConnectionConnector(new IPEndPoint(IPAddress.Parse(serverIp), UInt16.Parse(serverPort)), _username); MessageData messageData = new MessageData { UserInfo = { Username = _username, MessageType = MessageType.Connect } }; _connector.Send(messageData.ToByte()); bool succeeded = false; while (succeeded == false) { try { encryptionRsa = new EncryptionRSA(true); encryption = new Encryption(encryptionRsa.D, encryptionRsa.E,encryptionRsa.N); messageData.UserInfo.MessageType = MessageType.ParameterN; messageData.UserInfo.Message = encryption.N.ToString(10); _connector.Send(messageData.ToByte()); //kartais N neissiuncia kazkodel messageData.UserInfo.MessageType = MessageType.ParameterE; messageData.UserInfo.Message = encryption.E.ToString(10); _connector.Send(messageData.ToByte()); succeeded = true; } catch (Exception) { } } _connector.OnMessageReceived += OnMessageReceivedEventHandler; }