public IEnumerable<Connection> GetConnections(string from, string to, DateTime departureTime)
        {
            var connectionRequest = new ConnectionRequest { From = @from, To = to, Limit = 5, DateTime = departureTime };
            var connectionResponse = this.serviceClient.Get(connectionRequest);

            return connectionResponse.Connections;
        }
            /// <summary>
            /// Acquires the user token.
            /// </summary>
            /// <param name="userName">Name of the user.</param>
            /// <param name="password">The password of the user.</param>
            /// <param name="commerceAuthenticationParameters">The commerce authentication parameters.</param>
            /// <returns>The user commerce runtime token.</returns>
            internal override Task <UserToken> AcquireToken(string userName, string password, CommerceAuthenticationParameters commerceAuthenticationParameters)
            {
                ThrowIf.Null(commerceAuthenticationParameters, "commerceAuthenticationParameters");

                return(Execute <UserToken>(() =>
                {
                    CommerceRuntimeUserToken commerceUserToken;
                    CommerceIdentity originalIdentity = CommerceRuntimeManager.Identity;
                    ConnectionRequest connectionRequest = this.CreateAcquireTokenRequest(userName, password);
                    connectionRequest.Credential = commerceAuthenticationParameters.Credential;
                    connectionRequest.GrantType = commerceAuthenticationParameters.GrantType;
                    connectionRequest.AdditionalAuthenticationData = commerceAuthenticationParameters;

                    LogonCredentials credentials = null;

                    if (!commerceAuthenticationParameters.RetailOperation.HasValue)
                    {
                        try
                        {
                            CommerceIdentity commerceIdentity = new CommerceIdentity(string.Empty, 0, 0, new string[] { });
                            commerceIdentity.Roles.Add(CommerceRoles.Anonymous);

                            // Set anonymous identity from request.
                            CommerceRuntimeManager.Identity = commerceIdentity;

                            credentials = SecurityManager.Create(CommerceRuntimeManager.Runtime).LogOn(connectionRequest);

                            // Clear the commerce identity.
                            CommerceRuntimeManager.Identity = null;
                        }
                        catch (Exception)
                        {
                            CommerceRuntimeManager.Identity = originalIdentity;
                            throw;
                        }

                        commerceUserToken = new CommerceRuntimeUserToken(credentials.Identity);
                    }
                    else
                    {
                        credentials = SecurityManager.Create(CommerceRuntimeManager.Runtime).ElevateUser(connectionRequest, (RetailOperation)commerceAuthenticationParameters.RetailOperation);
                        commerceUserToken = new CommerceRuntimeUserToken(originalIdentity, credentials.Identity);
                    }

                    return commerceUserToken;
                }));
            }
        public void Dispose_ShouldDisposeTheRightObject()
        {
            // Arrange
            var httpHandler = new Mock <HttpMessageHandler>();

            httpHandler.Protected().Setup("Dispose", true).Verifiable();
            var connection = new ConnectionRequest {
                ServerUri = new Uri("http://mysq.com/")
            };
            var client = new SonarQubeClient(connection, httpHandler.Object, TimeSpan.FromSeconds(2));

            // Act
            client.Dispose();

            // Assert
            httpHandler.VerifyAll();
        }
Beispiel #4
0
        public Client(int clientID, List <Book> books)
        {
            ClientID                = clientID;
            TcpSocket               = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            ListenTcpThread         = new Thread(ListenTcp);
            ClientMessageSerializer = new MessageSerialier();
            SetBookInServerList(books);
            IPEndPoint serverIPEndPoint = new IPEndPoint(IPAddress.Parse(ServerIP), ServerPort);

            TcpSocket.Connect(serverIPEndPoint);
            ListenTcpThread.Start();

            IPEndPoint        clientIp          = (IPEndPoint)(TcpSocket.LocalEndPoint);
            ConnectionRequest connectionRequest = new ConnectionRequest(clientIp.Address.ToString(), clientIp.Port, clientID, BookInServerList);

            SendMessage(connectionRequest);
        }
        /// <summary>
        /// Connections the create.
        /// </summary>
        /// <returns>The create.</returns>
        protected virtual async Task <Msg> ConnectionRequest(Msg message, IdentityContext context)
        {
            var request = new ConnectionRequest();

            request.MergeFrom(message.Content);

            string myDid;
            string myVk;

            if (await storageService.TryGetNonce(request.RequestNonce, out byte[] offerMessage))
            {
                var offer = new ConnectionOffer();
                offer.MergeFrom(offerMessage);

                myDid = offer.Did;
                myVk  = offer.Verkey;
            }
Beispiel #6
0
        public static byte[] CreateConnectionRequest(Type type, byte[] clientIdentifier = null)
        {
            var request = new ConnectionRequest();

            request.Type       = type;
            request.ClientName = "Jebediah Kerman!!!";
            if (clientIdentifier != null)
            {
                request.ClientIdentifier = ByteString.CopyFrom(clientIdentifier);
            }
            using (var buffer = new MemoryStream()) {
                var stream = new CodedOutputStream(buffer, true);
                stream.WriteMessage(request);
                stream.Flush();
                return(buffer.ToArray());
            }
        }
Beispiel #7
0
            public void OnConnectionRequest(H3Server server, ConnectionRequest request, NetDataWriter rejectionContent)
            {
                var currentClients = server.ClientsCount;
                var maxClients     = server._config.PlayerLimit.Value;

                if (currentClients >= maxClients)
                {
                    server._log.LogWarning($"Rejecting join request from {request.RemoteEndPoint} because of full party ({currentClients} / {maxClients}).");

                    rejectionContent.Put(JoinError.Full);
                    request.Reject(rejectionContent);
                    return;
                }

                var reader = request.Data;

                if (!reader.TryGet <ConnectionRequestMessage>(out var message))
                {
                    server._log.LogWarning($"Join request from {request.RemoteEndPoint} had a malformed request.");

                    rejectionContent.Put(JoinError.MalformedMessage);
                    request.Reject(rejectionContent);
                    return;
                }

                if (message.AccessKey != server.Secret.Key)
                {
                    server._log.LogWarning($"Join request {request.RemoteEndPoint} had an incorrect key.");

                    rejectionContent.Put(JoinError.MismatchedKey);
                    request.Reject(rejectionContent);
                    return;
                }

                var peer = request.Accept();

                if (message.HostKey == server.HostKey)
                {
                    server._selfID = peer.Id;
                }

                using (WriterPool.Instance.Borrow(out var writer))
                {
                    _pong.Send(peer, writer, Timestamped <PingMessage> .Now(new PingMessage(message.ClientTime)));
                }
            }
Beispiel #8
0
        /// <summary>
        /// Sets the value (as id)
        /// </summary>
        /// <param name="control">The control.</param>
        /// <param name="configurationValues">The configuration values.</param>
        /// <param name="value">The value.</param>
        public override void SetEditValue(System.Web.UI.Control control, Dictionary <string, ConfigurationValue> configurationValues, string value)
        {
            var picker = control as ConnectionRequestPicker;

            if (picker != null)
            {
                ConnectionRequest connectionRequest = null;

                Guid?guid = value.AsGuidOrNull();
                if (guid.HasValue)
                {
                    connectionRequest = new ConnectionRequestService(new RockContext()).Get(guid.Value);
                }

                picker.SetValue(connectionRequest);
            }
        }
        public override void OnConnectionRequest(ConnectionRequest request)
        {
            base.OnConnectionRequest(request);

            NetDataReader dataReader = request.Data;

            string key = dataReader.GetString();

            if (!TinyNetGameManager.instance.CheckConnectionKey(key))
            {
                request.Reject();
            }

            NetPeer peer = request.Accept();

            peer.Tag = dataReader.GetString();
        }
Beispiel #10
0
        private void ListenerOnConnectionRequestEvent(ConnectionRequest request)
        {
            if (ConnectionRequestEvent != null)
            {
                ConnectionRequestEvent(request);
                return;
            }

            if (AcceptClients)
            {
                request.AcceptIfKey(Password);
            }
            else
            {
                request.Reject();
            }
        }
Beispiel #11
0
 public static bool Prefix(ref ConnectionRequest request)
 {
     try
     {
         if (EventPlugin.PreAuthEventPatchDisable)
         {
             return(true);
         }
         HandleConnection(request);
         return(false);
     }
     catch (Exception exception)
     {
         Log.Error($"PreAuthEvent error: {exception}");
         return(true);
     }
 }
Beispiel #12
0
        /// <inheritdoc />
        protected override async Task <CallResult <bool> > SubscribeAndWait(SocketConnection socket, object request, SocketSubscription subscription)
        {
            ConnectionRequest btRequest = (ConnectionRequest)request;

            if (btRequest.RequestName != null)
            {
                var subResult = await((ISignalRSocket)socket.Socket).InvokeProxy <bool>(btRequest.RequestName, btRequest.Parameters).ConfigureAwait(false);
                if (!subResult.Success || !subResult.Data)
                {
                    var closeTask = socket.Close(subscription);
                    return(new CallResult <bool>(false, subResult.Error ?? new ServerError("Subscribe returned false")));
                }
            }

            subscription.Confirmed = true;
            return(new CallResult <bool>(true, null));
        }
Beispiel #13
0
        public async Task <ActionResult <LoginResponse> > Login([FromBody] ConnectionRequest connectionRequest)
        {
            var loginData = JsonConvert.SerializeObject(new
            {
                AccountName     = connectionRequest.accountName,
                Password        = connectionRequest.password,
                AppId           = "M4",
                subscriptionkey = connectionRequest.subscriptionKey
            });

            try
            {
                var response = await httpClient.PostAsync(
                    composeURL("account-manager/login", connectionRequest.isDebugEnv, connectionRequest.rootURL),
                    new StringContent(loginData, System.Text.Encoding.UTF8, "application/json")
                    );

                if (!response.IsSuccessStatusCode)
                {
                    return(new ContentResult {
                        StatusCode = (int)response.StatusCode,
                        Content = $"Error on login: {response.ReasonPhrase}"
                    });
                }

                string result = response.Content.ReadAsStringAsync().Result;
                if (string.IsNullOrEmpty(result))
                {
                    return(new ContentResult {
                        StatusCode = 500,
                        Content = "Invalid login"
                    });
                }

                var loginResponse = JsonConvert.DeserializeObject <LoginResponse>(result);
                return(loginResponse);
            }
            catch (System.Exception e)
            {
                return(new ContentResult {
                    StatusCode = 500,
                    Content = e.Message
                });
            }
        }
		public object Get(ConnectionRequest request)
		{
			var result = ConnectionResult.UnknownTarget;

			if (request.Type == null) return result;

			switch (request.Type.ToLowerInvariant())
			{
				case "tfs":
					string.Format("Connecting to TFS using {0}", request).Debug();
					var tfs = new TfsConnection();
					result = tfs.Connect(request.Url, request.User, request.Password);
					break;
				case "jira":
					string.Format("Connecting to JIRA using {0}", request).Debug();
					var jira = new JiraConnection();
					result = jira.Connect(request.Url, request.User, request.Password);
					break;
				case "githubissues":
					string.Format("Connecting to GitHub (Issues) using {0}", request).Debug();
					var githubissues = new GitHubIssuesConnection();
					result = githubissues.Connect(request.Host, request.User, request.Password);
					break;
				case "githubpulls":
					string.Format("Connecting to GitHub (Pulls) using {0}", request).Debug();
					var githubpulls = new GitHubPullsConnection();
					result = githubpulls.Connect(request.Host, request.User, request.Password);
					break;
			}

			if (result == ConnectionResult.Success)
			{
				"Connection successful.".Debug();
				SaveLogin(request);
				return OK();
			}

			if (result == ConnectionResult.FailedToConnect)
				return NotAuthorized("Credentials Rejected");

			if (result == ConnectionResult.InvalidUrl)
				return BadRequest("Invalid Url");

			return BadRequest("Unknown Target");
		}
Beispiel #15
0
        /// <summary>
        /// Connects to the PLC and performs a COTP ConnectionRequest and S7 CommunicationSetup.
        /// </summary>
        public void Open()
        {
            Connect();

            try
            {
                var stream = GetStreamIfAvailable();
                stream.Write(ConnectionRequest.GetCOTPConnectionRequest(CPU, Rack, Slot), 0, 22);
                var response = COTP.TPDU.Read(stream);
                if (response.PDUType != 0xd0) //Connect Confirm
                {
                    throw new InvalidDataException("Error reading Connection Confirm", response.TPkt.Data, 1, 0x0d);
                }

                stream.Write(GetS7ConnectionSetup(), 0, 25);

                var s7data = COTP.TSDU.Read(stream);
                if (s7data == null)
                {
                    throw new WrongNumberOfBytesException("No data received in response to Communication Setup");
                }
                if (s7data.Length < 2)
                {
                    throw new WrongNumberOfBytesException("Not enough data received in response to Communication Setup");
                }

                //Check for S7 Ack Data
                if (s7data[1] != 0x03)
                {
                    throw new InvalidDataException("Error reading Communication Setup response", s7data, 1, 0x03);
                }

                if (s7data.Length < 20)
                {
                    throw new WrongNumberOfBytesException("Not enough data received in response to Communication Setup");
                }

                MaxPDUSize = (short)(s7data[18] * 256 + s7data[19]);
            }
            catch (Exception exc)
            {
                throw new PlcException(ErrorCode.ConnectionError,
                                       $"Couldn't establish the connection to {IP}.\nMessage: {exc.Message}", exc);
            }
        }
        /// <summary>
        /// Connects to the PLC and performs a COTP ConnectionRequest and S7 CommunicationSetup.
        /// </summary>
        /// <returns>A task that represents the asynchronous open operation.</returns>
        public async Task OpenAsync()
        {
            await ConnectAsync();

            var stream = GetStreamIfAvailable();

            await stream.WriteAsync(ConnectionRequest.GetCOTPConnectionRequest(CPU, Rack, Slot), 0, 22);

            var response = await COTP.TPDU.ReadAsync(stream);

            if (response == null)
            {
                throw new Exception("Error reading Connection Confirm. Malformed TPDU packet");
            }
            if (response.PDUType != 0xd0) //Connect Confirm
            {
                throw new InvalidDataException("Error reading Connection Confirm", response.TPkt.Data, 1, 0x0d);
            }

            await stream.WriteAsync(GetS7ConnectionSetup(), 0, 25);

            var s7data = await COTP.TSDU.ReadAsync(stream);

            if (s7data == null)
            {
                throw new WrongNumberOfBytesException("No data received in response to Communication Setup");
            }
            if (s7data.Length < 2)
            {
                throw new WrongNumberOfBytesException("Not enough data received in response to Communication Setup");
            }

            //Check for S7 Ack Data
            if (s7data[1] != 0x03)
            {
                throw new InvalidDataException("Error reading Communication Setup response", s7data, 1, 0x03);
            }

            if (s7data.Length < 20)
            {
                throw new WrongNumberOfBytesException("Not enough data received in response to Communication Setup");
            }

            MaxPDUSize = (short)(s7data[18] * 256 + s7data[19]);
        }
Beispiel #17
0
        /// <summary>
        /// Raises the connection request event.
        /// </summary>
        /// <param name="request">Request sent to join the room.</param>
        internal void OnConnectionRequest(ConnectionRequest request)
        {
            NearbyPlayer player = new NearbyPlayer(
                request.RemoteEndpoint.DeviceId,
                request.RemoteEndpoint.EndpointId,
                request.RemoteEndpoint.Name);

            if (playerFoundCallback != null)
            {
                playerFoundCallback.Invoke(player, request.Payload);
            }

            if (AutoJoin)
            {
                Debug.Log("Automatically connecting to " + request.RemoteEndpoint);
                AcceptRequest(player);
            }
        }
Beispiel #18
0
 /// <summary>
 /// Approve connections and invoke PlayerjoinedEvent
 /// </summary>
 /// <param name="inc">Incoming Message</param>
 private void OnConnectionRequestEvent(ConnectionRequest request)
 {
     Console.WriteLine("CONNECTION REQUEST FROM: {0}", request.RemoteEndPoint.ToString());
     if (server.PeersCount < MAXPLAYERS)
     {
         request.AcceptIfKey(APPID);
         Console.ForegroundColor = ConsoleColor.Green;
         Console.WriteLine("CONNECTION ACCEPTED.");
         Console.ForegroundColor = ConsoleColor.White;
     }
     else
     {
         request.Reject();
         Console.ForegroundColor = ConsoleColor.Red;
         Console.WriteLine("CONNECTION REJECTED.");
         Console.ForegroundColor = ConsoleColor.White;
     }
 }
Beispiel #19
0
        protected virtual void OnConnectionRequest(IPEndPoint remoteEndpoint)
        {
            IPEndPoint localEndPoint = new IPEndPoint(IPAddress.Any, 0);

            UdpClient udpClient = new UdpClient(localEndPoint);

            ConnectionRequest?.Invoke(this, new ResonanceListeningServerConnectionRequestEventArgs <UdpAdapter>(() =>
            {
                byte[] confirmData = Encoding.ASCII.GetBytes(UdpAdapter.CONNECTION_RESPONSE_STRING_CONFIRMED);
                udpClient.Send(confirmData, confirmData.Length, remoteEndpoint);
                return(new UdpAdapter(udpClient, localEndPoint, remoteEndpoint));
            }, () =>
            {
                byte[] declineData = Encoding.ASCII.GetBytes(UdpAdapter.CONNECTION_RESPONSE_STRING_DECLINED);
                udpClient.Send(declineData, declineData.Length, remoteEndpoint);
                udpClient.Dispose();
            }));
        }
Beispiel #20
0
        internal void OnConnectionRequest(ConnectionRequest request)
        {
            if (request.RemoteEndpoint.Name != null)
            {
                mNearbyStatus = "OnConnectionRequest: " + request.RemoteEndpoint.Name;
            }

            EndpointHolder holder = new EndpointHolder();

            holder.Endpoint = request.RemoteEndpoint;
            holder.State    = EndpointState.REQUESTED;
            mEndpoints.Remove(request.RemoteEndpoint.EndpointId);
            mEndpoints.Add(request.RemoteEndpoint.EndpointId, holder);
            if (request.Payload != null)
            {
                mMessageLog.Add(mNearbyStatus + ": " + request.Payload);
            }
        }
        public bool InitServer(ConnectionRequest request, string receivedToken, List <string> addons)
        {
            ServerDirectory = Path.Combine("servers", $"{ServerAddress}_{ServerPort}");

            LoadServerConfig();
            UpdateName();

            if (ServerConfig.InstalledAddons == null)
            {
                ServerConfig.InstalledAddons = new List <string>();
            }

            foreach (var addon in addons)
            {
                if (!ServerConfig.InstalledAddons.Contains(addon))
                {
                    ServerConfig.InstalledAddons.Add(addon);
                }
            }

            if (string.IsNullOrEmpty(ServerConfig.Token))
            {
                Peer = request.Accept();

                PacketProcessor.Send <SendTokenPacket>(Peer,
                                                       new SendTokenPacket()
                {
                    Token = GenNewToken()
                }, DeliveryMethod.ReliableOrdered);
                return(true);
            }

            if (receivedToken != ServerConfig.Token)
            {
                NPManager.Singleton.Logger.Error($"Received invalid token from server {FullAddress}.");
                NetDataWriter writer = new NetDataWriter();
                writer.Put((byte)RejectType.InvalidToken);
                request.Reject(writer);
                return(false);
            }

            Peer = request.Accept();
            return(true);
        }
Beispiel #22
0
        public async Task <IHttpActionResult> PostConnectionRequests(ConnectionRequestBindingModel model)
        {
            var userId = this.User.Identity.GetUserId();

            if (userId == null)
            {
                return(this.BadRequest("Invalid session token."));
            }

            var loggedUserUsername = this.User.Identity.GetUserName();

            if (model.Username == loggedUserUsername)
            {
                return(this.BadRequest("You can nnot send connection request to yourself."));
            }

            var toUserId = await this.Data.Users.All()
                           .Where(u => u.UserName == model.Username)
                           .Select(u => u.Id)
                           .FirstOrDefaultAsync();

            var loggedUser = await this.Data.Users.All()
                             .FirstOrDefaultAsync(u => u.Id == userId);

            var existingConnection = loggedUser.Connections
                                     .FirstOrDefault(c => c.UserName == model.Username);

            if (existingConnection != null)
            {
                return(this.BadRequest(string.Format("User '{0}' is already in your connection.", model.Username)));
            }

            var newConnectionRequest = new ConnectionRequest
            {
                ConnectionRequestStatus = ConnectionRequestStatus.Pending,
                FromUserId = userId,
                ToUserId   = toUserId
            };

            this.Data.ConnectionRequests.Add(newConnectionRequest);
            await this.Data.SaveChangesAsync();

            return(this.Ok(string.Format("Connection request to user: '******' successfully sent!", model.Username)));
        }
Beispiel #23
0
        private void LaunchWorkflow(RockContext rockContext, ConnectionWorkflow connectionWorkflow, string name, Message message)
        {
            var workflowType = WorkflowTypeCache.Get(connectionWorkflow.WorkflowTypeId.Value);

            if (workflowType != null && (workflowType.IsActive ?? true))
            {
                ConnectionRequest connectionRequest = null;
                if (message.ConnectionRequestGuid.HasValue)
                {
                    connectionRequest = new ConnectionRequestService(rockContext).Get(message.ConnectionRequestGuid.Value);

                    if (connectionRequest == null)
                    {
                        // If the ConnectionRequest doesn't exist anymore, exit
                        return;
                    }

                    var workflow = Rock.Model.Workflow.Activate(workflowType, name);

                    if (workflow == null)
                    {
                        // if no workflow was created, exit
                        return;
                    }

                    workflow.InitiatorPersonAliasId = message.InitiatorPersonAliasId;

                    List <string> workflowErrors;
                    new WorkflowService(rockContext).Process(workflow, connectionRequest, out workflowErrors);
                    if (workflow.Id != 0)
                    {
                        ConnectionRequestWorkflow connectionRequestWorkflow = new ConnectionRequestWorkflow();
                        connectionRequestWorkflow.ConnectionRequestId  = connectionRequest.Id;
                        connectionRequestWorkflow.WorkflowId           = workflow.Id;
                        connectionRequestWorkflow.ConnectionWorkflowId = connectionWorkflow.Id;
                        connectionRequestWorkflow.TriggerType          = connectionWorkflow.TriggerType;
                        connectionRequestWorkflow.TriggerQualifier     = connectionWorkflow.QualifierValue;
                        new ConnectionRequestWorkflowService(rockContext).Add(connectionRequestWorkflow);
                        rockContext.SaveChanges();
                    }
                }
            }
        }
Beispiel #24
0
        public override void OnConnectionRequest(ConnectionRequest request)
        {
            WriteLine($"Connection Request from '{request.RemoteEndPoint.Address}:{request.RemoteEndPoint.Port}'", ConsoleColor.Cyan);
            if (NetManager.ConnectedPeersCount >= MaximumConnections)
            {
                request.Reject(NetDataWriter.FromString("Server Full"));
                WriteLine($"Refused Connection from '{request.RemoteEndPoint.Address}:{request.RemoteEndPoint.Port}'. Reason: Server Full", ConsoleColor.DarkRed);
                return;
            }

            if (!String.IsNullOrWhiteSpace(ServerKey))
            {
                request.AcceptIfKey(ServerKey);
            }
            else
            {
                request.Accept();
            }
        }
Beispiel #25
0
        private async Task <CallResult <T> > Query <T>(ConnectionRequest request)
        {
            var subscription = GetBackgroundSocket(request.Signed);

            if (subscription == null)
            {
                // We don't have a background socket to query, create a new one
                var connectResult = await CreateAndConnectSocket <object>(request.Signed, false, null).ConfigureAwait(false);

                if (!connectResult.Success)
                {
                    return(new CallResult <T>(default(T), connectResult.Error));
                }

                subscription      = connectResult.Data;
                subscription.Type = request.Signed ? SocketType.BackgroundAuthenticated : SocketType.Background;
            }

            var queryResult = await((ISignalRSocket)subscription.Socket).InvokeProxy <string>(request.RequestName, request.Parameters).ConfigureAwait(false);

            if (!queryResult.Success)
            {
                var closeTask = subscription.Close();
                return(new CallResult <T>(default(T), queryResult.Error));
            }

            var decResult = await DecodeData(queryResult.Data).ConfigureAwait(false);

            if (!decResult.Success)
            {
                var closeTask = subscription.Close();
                return(new CallResult <T>(default(T), decResult.Error));
            }

            var desResult = Deserialize <T>(decResult.Data);

            if (!desResult.Success)
            {
                return(new CallResult <T>(default(T), desResult.Error));
            }

            return(new CallResult <T>(desResult.Data, null));
        }
 /// <summary>
 /// Sets the value.
 /// </summary>
 /// <param name="connectionRequest">The connection request.</param>
 public void SetValue( ConnectionRequest connectionRequest )
 {
     if ( connectionRequest != null &&
         connectionRequest.PersonAlias != null &&
         connectionRequest.PersonAlias.Person != null &&
         connectionRequest.ConnectionOpportunity != null )
     {
         ItemId = connectionRequest.Id.ToString();
         ItemName = connectionRequest.PersonAlias.Person.FullName;
         InitialItemParentIds = string.Format( "T{0},O{1}",
             connectionRequest.ConnectionOpportunity.ConnectionTypeId,
             connectionRequest.ConnectionOpportunity.Id );
     }
     else
     {
         ItemId = Constants.None.IdValue;
         ItemName = Constants.None.TextHtml;
     }
 }
 public void OnConnectionRequest(ConnectionRequest request)
 {
     if (m_Players.IsMax)
     {
         if (m_IsLog)
         {
             Log("OnConnectionRequest " + request.RemoteEndPoint + " is reject. Full server!");
         }
         request.Reject();
     }
     else
     {
         if (m_IsLog)
         {
             Log("OnConnectionRequest " + request.RemoteEndPoint + " is accept");
         }
         request.AcceptIfKey(SERVER_KEY);
     }
 }
Beispiel #28
0
 /// <summary>
 /// Sets the value.
 /// </summary>
 /// <param name="connectionRequest">The connection request.</param>
 public void SetValue(ConnectionRequest connectionRequest)
 {
     if (connectionRequest != null &&
         connectionRequest.PersonAlias != null &&
         connectionRequest.PersonAlias.Person != null &&
         connectionRequest.ConnectionOpportunity != null)
     {
         ItemId               = connectionRequest.Id.ToString();
         ItemName             = connectionRequest.PersonAlias.Person.FullName;
         InitialItemParentIds = string.Format("'T{0}','O{1}'",
                                              connectionRequest.ConnectionOpportunity.ConnectionTypeId,
                                              connectionRequest.ConnectionOpportunity.Id);
     }
     else
     {
         ItemId   = Constants.None.IdValue;
         ItemName = Constants.None.TextHtml;
     }
 }
Beispiel #29
0
        public static void InvokePreAuth(ref string userId, ConnectionRequest request, ref bool allow)
        {
            if (PreAuthEvent == null)
            {
                return;
            }

            PreauthEvent ev = new PreauthEvent()
            {
                Allow   = allow,
                Request = request,
                UserId  = userId
            };

            PreAuthEvent.Invoke(ref ev);

            allow  = ev.Allow;
            userId = ev.UserId;
        }
        private GroupView GetGroupView(ConnectionRequest connectionRequest, List <GroupView> groupViews, RockContext rockContext)
        {
            GroupView groupView = groupViews.FirstOrDefault(a => a.GroupId == connectionRequest.AssignedGroupId.Value);

            if (groupView == null)
            {
                var groupService = new GroupService(rockContext);
                var group        = groupService.Get(connectionRequest.AssignedGroupId.Value);
                groupView = new GroupView()
                {
                    GroupId = group.Id,
                    Group   = group
                };

                groupViews.Add(groupView);
                groupView.HasGroupRequirement = new GroupRequirementService(rockContext).Queryable().Where(a => (a.GroupId.HasValue && a.GroupId == group.Id) || (a.GroupTypeId.HasValue && a.GroupTypeId == group.GroupTypeId)).Any();
            }

            return(groupView);
        }
Beispiel #31
0
        protected virtual void HandleConnectionRequest(ConnectionRequest message)
        {
            Log.DebugFormat("Connection request from: {0}", EndPoint.Address);

            var response = ConnectionRequestAccepted.CreateObject();

            response.NoBatch            = true;
            response.systemAddress      = new IPEndPoint(IPAddress.Loopback, 19132);
            response.systemAddresses    = new IPEndPoint[20];
            response.systemAddresses[0] = new IPEndPoint(IPAddress.Loopback, 19132);
            response.incomingTimestamp  = message.timestamp;
            response.serverTimestamp    = DateTime.UtcNow.Ticks / TimeSpan.TicksPerMillisecond;

            for (int i = 1; i < 20; i++)
            {
                response.systemAddresses[i] = new IPEndPoint(IPAddress.Any, 19132);
            }

            SendPackage(response);
        }
Beispiel #32
0
        public ActionResult <ConnectionRequestReadDto> CreateConnectionRequest(ConnectionRequestCreateDto connectionRequestCreateDto)
        {
            ConnectionRequest model       = _mapper.Map <ConnectionRequest>(connectionRequestCreateDto);
            ConnectionRequest returnModel = _repository.CreateConnectionRequest(model);

            _repository.SaveChanges();

            string routeValue;

            if (returnModel.RequesterId == returnModel.CaretakerId)
            {
                routeValue = returnModel.Patient.Email;
            }
            else
            {
                routeValue = returnModel.Caretaker.Email;
            }

            return(CreatedAtRoute(nameof(GetConnectionRequests), new { email = routeValue }, _mapper.Map <ConnectionRequestReadDto>(returnModel)));
        }
Beispiel #33
0
        /// <summary>
        /// Tries to reject the connection request of the associated with the given conversation reference.
        /// </summary>
        /// <param name="requestorToReject">The conversation reference of the party whose request to reject.</param>
        /// <param name="rejecter">The conversation reference of the party  rejecting the request (optional).</param>
        /// <returns>The result of the operation:
        /// - ConnectionRequestResultType.Rejected or
        /// - ConnectionRequestResultType.Error (see the error message for more details).
        /// </returns>
        public virtual ConnectionRequestResult RejectConnectionRequest(
            ConversationReference requestorToReject, ConversationReference rejecter = null)
        {
            if (requestorToReject == null)
            {
                throw new ArgumentNullException("The conversation reference instance of the party whose request to reject cannot be null");
            }

            ConnectionRequestResult rejectConnectionRequestResult = null;
            ConnectionRequest       connectionRequest             =
                RoutingDataManager.FindConnectionRequest(requestorToReject);

            if (connectionRequest != null)
            {
                rejectConnectionRequestResult          = RoutingDataManager.RemoveConnectionRequest(connectionRequest);
                rejectConnectionRequestResult.Rejecter = rejecter;
            }

            return(rejectConnectionRequestResult);
        }
        /// <summary>
        /// Binds the connection request activities grid.
        /// </summary>
        private void BindConnectionRequestActivitiesGrid( ConnectionRequest connectionRequest, RockContext rockContext )
        {
            if ( connectionRequest != null && connectionRequest.PersonAlias != null )
            {
                var connectionRequestActivityService = new ConnectionRequestActivityService( rockContext );
                var qry = connectionRequestActivityService
                    .Queryable( "ConnectionActivityType,ConnectionOpportunity,ConnectorPersonAlias.Person" )
                    .Where( a =>
                        a.ConnectionRequest != null &&
                        a.ConnectionRequest.PersonAlias != null &&
                        a.ConnectionRequest.PersonAlias.PersonId == connectionRequest.PersonAlias.PersonId &&
                        a.ConnectionActivityType != null &&
                        a.ConnectionOpportunity != null );

                if ( connectionRequest != null &&
                    connectionRequest.ConnectionOpportunity != null &&
                    connectionRequest.ConnectionOpportunity.ConnectionType != null &&
                    connectionRequest.ConnectionOpportunity.ConnectionType.EnableFullActivityList )
                {
                    qry = qry.Where( a => a.ConnectionOpportunity.ConnectionTypeId == connectionRequest.ConnectionOpportunity.ConnectionTypeId );
                }
                else
                {
                    qry = qry.Where( a => a.ConnectionRequestId == connectionRequest.Id );
                }

                gConnectionRequestActivities.DataSource = qry.ToList()
                    .Select( a => new
                        {
                            a.Id,
                            a.Guid,
                            CreatedDate = a.CreatedDateTime,
                            Date = a.CreatedDateTime.HasValue ? a.CreatedDateTime.Value.ToShortDateString() : "",
                            Activity = a.ConnectionActivityType.Name,
                            Opportunity = a.ConnectionOpportunity.Name,
                            OpportunityId = a.ConnectionOpportunityId,
                            Connector = a.ConnectorPersonAlias != null && a.ConnectorPersonAlias.Person != null ? a.ConnectorPersonAlias.Person.FullName : "",
                            Note = a.Note,
                            CanEdit =
                                ( a.CreatedByPersonAliasId.Equals( CurrentPersonAliasId ) || a.ConnectorPersonAliasId.Equals( CurrentPersonAliasId ) ) &&
                                a.ConnectionActivityType.ConnectionTypeId.HasValue
                        } )
                    .OrderByDescending( a => a.CreatedDate )
                    .ToList();
                gConnectionRequestActivities.DataBind();
            }
        }
        /// <summary>
        /// Rebinds the connectors.
        /// </summary>
        /// <param name="connectionRequest">The connection request.</param>
        /// <param name="campusId">The campus identifier.</param>
        /// <param name="rockContext">The rock context.</param>
        public void RebindGroupsAndConnectors( ConnectionRequest connectionRequest, RockContext rockContext )
        {
            int? currentGroupId = ddlPlacementGroup.SelectedValueAsInt();
            int? currentConnectorId = ddlConnectorEdit.SelectedValueAsInt();

            ddlPlacementGroup.Items.Clear();
            ddlPlacementGroup.Items.Add( new ListItem( String.Empty, String.Empty ) );

            ddlConnectorEdit.Items.Clear();
            ddlConnectorEdit.Items.Add( new ListItem( String.Empty, String.Empty ) );

            var connectors = new Dictionary<int, Person>();

            if ( connectionRequest != null )
            {
                int? campusId = ddlCampus.SelectedValueAsInt();

                // Set Group
                if ( !currentGroupId.HasValue && connectionRequest.AssignedGroupId.HasValue )
                {
                    currentGroupId = connectionRequest.AssignedGroupId.Value;
                }

                // Build list of groups
                var groups = new List<Group>();

                // First add any groups specifically configured for the opportunity
                var opportunityGroupIds = connectionRequest.ConnectionOpportunity.ConnectionOpportunityGroups.Select( o => o.Id ).ToList();
                if ( opportunityGroupIds.Any() )
                {
                    groups = connectionRequest.ConnectionOpportunity.ConnectionOpportunityGroups
                        .Where( g =>
                            g.Group != null &&
                            g.Group.IsActive &&
                            ( !campusId.HasValue || !g.Group.CampusId.HasValue || campusId.Value == g.Group.CampusId.Value ) )
                        .Select( g => g.Group )
                        .ToList();
                }

                // Then get any groups that are configured with 'all groups of type'
                foreach ( var groupConfig in connectionRequest.ConnectionOpportunity.ConnectionOpportunityGroupConfigs )
                {
                    if ( groupConfig.UseAllGroupsOfType )
                    {
                        var existingGroupIds = groups.Select( g => g.Id ).ToList();

                        groups.AddRange( new GroupService( new RockContext() )
                            .Queryable().AsNoTracking()
                            .Where( g =>
                                !existingGroupIds.Contains( g.Id ) &&
                                g.IsActive &&
                                g.GroupTypeId == groupConfig.GroupTypeId &&
                                ( !campusId.HasValue || !g.CampusId.HasValue || campusId.Value == g.CampusId.Value ) )
                            .ToList() );
                    }
                }

                // Add the currently assigned group if it hasn't been added already
                if ( connectionRequest.AssignedGroup != null &&
                    !groups.Any( g => g.Id == connectionRequest.AssignedGroup.Id ) )
                {
                    groups.Add( connectionRequest.AssignedGroup );
                }

                foreach ( var g in groups.OrderBy( g => g.Name ) )
                {
                    ddlPlacementGroup.Items.Add( new ListItem( String.Format( "{0} ({1})", g.Name, g.Campus != null ? g.Campus.Name : "No Campus" ), g.Id.ToString().ToUpper() ) );
                }

                ddlPlacementGroup.SetValue( currentGroupId );

                // Set Connector
                if ( !currentConnectorId.HasValue && connectionRequest.ConnectorPersonAlias != null )
                {
                    currentConnectorId = connectionRequest.ConnectorPersonAlias.PersonId;
                }

                if ( connectionRequest.ConnectionOpportunity != null )
                {
                    // Get the connectors from the connector groups
                    if ( connectionRequest.ConnectionOpportunity.ConnectionType != null )
                    {
                        connectionRequest.ConnectionOpportunity.ConnectionOpportunityConnectorGroups
                            .Where( g =>
                                ( !campusId.HasValue || !g.CampusId.HasValue || g.CampusId.Value == campusId.Value ) )
                            .SelectMany( g => g.ConnectorGroup.Members )
                            .Where( m => m.GroupMemberStatus == GroupMemberStatus.Active )
                            .Select( m => m.Person )
                            .ToList()
                            .ForEach( p => connectors.AddOrIgnore( p.Id, p ) );
                    }

                    if ( !currentConnectorId.HasValue && campusId.HasValue )
                    {
                        currentConnectorId = connectionRequest.ConnectionOpportunity.GetDefaultConnectorPersonId( campusId.Value );
                    }
                }
            }

            // Add the current person as possible connector
            if ( CurrentPerson != null )
            {
                connectors.AddOrIgnore( CurrentPerson.Id, CurrentPerson );
            }

            // Make sure the current value is an option
            if ( currentConnectorId.HasValue && !connectors.ContainsKey( currentConnectorId.Value ) )
            {
                var person = new PersonService( rockContext ).Get( currentConnectorId.Value );
                if ( person != null )
                {
                    connectors.AddOrIgnore( person.Id, person );
                }
            }

            // Add connectors to dropdown list
            connectors
                .ToList()
                .OrderBy( p => p.Value.LastName )
                .ThenBy( p => p.Value.NickName )
                .ToList()
                .ForEach( c =>
                    ddlConnectorEdit.Items.Add( new ListItem( c.Value.FullName, c.Key.ToString() ) ) );

            if ( currentConnectorId.HasValue )
            {
                ddlConnectorEdit.SetValue( currentConnectorId.Value );
            }

            RebindGroupRole( connectionRequest, rockContext );
        }
Beispiel #36
0
		/// <summary>
		///     Handles the connection request.
		/// </summary>
		/// <param name="message">The message.</param>
		protected virtual void HandleConnectionRequest(ConnectionRequest message)
		{
			Log.DebugFormat("Connection request from: {0}", EndPoint.Address);

			ClientGuid = message.clientGuid;

			var response = ConnectionRequestAccepted.CreateObject();
			response.systemAddress = new IPEndPoint(IPAddress.Loopback, 19132);
			response.systemAddresses = new IPEndPoint[10];
			response.systemAddresses[0] = new IPEndPoint(IPAddress.Loopback, 19132);
			response.incomingTimestamp = message.timestamp;
			response.serverTimestamp = DateTime.UtcNow.Ticks/TimeSpan.TicksPerMillisecond;

			for (int i = 1; i < 10; i++)
			{
				response.systemAddresses[i] = new IPEndPoint(IPAddress.Any, 19132);
			}

			SendPackage(response);
		}
Beispiel #37
0
        /// <summary>
        ///     Handles the connection request.
        /// </summary>
        /// <param name="message">The message.</param>
        private void HandleConnectionRequest(ConnectionRequest message)
        {
            Log.InfoFormat("Connection request from: {0}", EndPoint.Address);

            ClientGuid = message.clientGuid;

            var response = new ConnectionRequestAcceptedManual((short) EndPoint.Port, message.timestamp);

            SendPackage(response);
        }
        /// <summary>
        /// Handles the Click event of the btnSave control.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="EventArgs" /> instance containing the event data.</param>
        protected void btnSave_Click( object sender, EventArgs e )
        {
            if ( ! ppRequestor.PersonAliasId.HasValue )
            {
                ShowErrorMessage( "Incomplete", "You must select a person to save a request." );
                return;
            }

            if ( Page.IsValid )
            {
                using ( var rockContext = new RockContext() )
                {
                    ConnectionRequestService connectionRequestService = new ConnectionRequestService( rockContext );
                    ConnectionRequest connectionRequest = null;

                    int connectionRequestId = hfConnectionRequestId.ValueAsInt();

                    // if adding a new connection request
                    if ( connectionRequestId.Equals( 0 ) )
                    {
                        connectionRequest = new ConnectionRequest();
                        connectionRequest.ConnectionOpportunityId = hfConnectionOpportunityId.ValueAsInt();
                        if ( ddlCampus.SelectedValueAsId().HasValue )
                        {
                            SetUserPreference( CAMPUS_SETTING, ddlCampus.SelectedValueAsId().Value.ToString() );
                        }
                    }
                    else
                    {
                        // load existing connection request
                        connectionRequest = connectionRequestService.Get( connectionRequestId );
                    }

                    var personAliasService = new PersonAliasService( rockContext );

                    int? oldConnectorPersonAliasId = connectionRequest.ConnectorPersonAliasId;
                    int? newConnectorPersonId = ddlConnectorEdit.SelectedValueAsId();
                    int? newConnectorPersonAliasId = newConnectorPersonId.HasValue ? personAliasService.GetPrimaryAliasId( newConnectorPersonId.Value ) : (int?)null;

                    connectionRequest.ConnectorPersonAliasId = newConnectorPersonAliasId;
                    connectionRequest.PersonAlias = personAliasService.Get( ppRequestor.PersonAliasId.Value );
                    connectionRequest.ConnectionState = rblState.SelectedValueAsEnum<ConnectionState>();
                    connectionRequest.ConnectionStatusId = rblStatus.SelectedValueAsId().Value;

                    if ( ddlCampus.SelectedValueAsId().HasValue )
                    {
                        connectionRequest.CampusId = ddlCampus.SelectedValueAsId().Value;
                    }

                    connectionRequest.AssignedGroupId = ddlPlacementGroup.SelectedValueAsId();
                    connectionRequest.AssignedGroupMemberRoleId = ddlPlacementGroupRole.SelectedValueAsInt();
                    connectionRequest.AssignedGroupMemberStatus = ddlPlacementGroupStatus.SelectedValueAsEnumOrNull<GroupMemberStatus>();
                    connectionRequest.AssignedGroupMemberAttributeValues = GetGroupMemberAttributeValues();

                    connectionRequest.Comments = tbComments.Text.ScrubHtmlAndConvertCrLfToBr();
                    connectionRequest.FollowupDate = dpFollowUp.SelectedDate;

                    if ( !Page.IsValid )
                    {
                        return;
                    }

                    // if the connectionRequest IsValue is false, and the UI controls didn't report any errors, it is probably
                    // because the custom rules of ConnectionRequest didn't pass.
                    // So, make sure a message is displayed in the validation summary.
                    cvConnectionRequest.IsValid = connectionRequest.IsValid;

                    if ( !cvConnectionRequest.IsValid )
                    {
                        cvConnectionRequest.ErrorMessage = connectionRequest.ValidationResults.Select( a => a.ErrorMessage ).ToList().AsDelimited( "<br />" );
                        return;
                    }

                    if ( connectionRequest.Id.Equals( 0 ) )
                    {
                        connectionRequestService.Add( connectionRequest );
                    }

                    rockContext.SaveChanges();

                    if ( newConnectorPersonAliasId.HasValue && !newConnectorPersonAliasId.Equals( oldConnectorPersonAliasId ) )
                    {
                        var guid = Rock.SystemGuid.ConnectionActivityType.ASSIGNED.AsGuid();
                        var assignedActivityId = new ConnectionActivityTypeService( rockContext ).Queryable()
                            .Where( t => t.Guid == guid )
                            .Select( t => t.Id )
                            .FirstOrDefault();
                        if ( assignedActivityId > 0 )
                        {
                            var connectionRequestActivityService = new ConnectionRequestActivityService( rockContext );
                            var connectionRequestActivity = new ConnectionRequestActivity();
                            connectionRequestActivity.ConnectionRequestId = connectionRequest.Id;
                            connectionRequestActivity.ConnectionOpportunityId = connectionRequest.ConnectionOpportunityId;
                            connectionRequestActivity.ConnectionActivityTypeId = assignedActivityId;
                            connectionRequestActivity.ConnectorPersonAliasId = newConnectorPersonAliasId;
                            connectionRequestActivityService.Add( connectionRequestActivity );
                            rockContext.SaveChanges();
                        }
                    }

                    var qryParams = new Dictionary<string, string>();
                    qryParams["ConnectionRequestId"] = connectionRequest.Id.ToString();
                    qryParams["ConnectionOpportunityId"] = connectionRequest.ConnectionOpportunityId.ToString();

                    NavigateToPage( RockPage.Guid, qryParams );
                }
            }
        }
        /// <summary>
        /// Shows the readonly details.
        /// </summary>
        /// <param name="connectionRequest">The connection request.</param>
        private void ShowReadonlyDetails( ConnectionRequest connectionRequest )
        {
            pdAuditDetails.SetEntity( connectionRequest, ResolveRockUrl( "~" ) );

            if ( connectionRequest.AssignedGroupId != null )
            {
                pnlRequirements.Visible = true;
                ShowConnectionOpportunityRequirementsStatuses();
            }
            else
            {
                pnlRequirements.Visible = false;
                lbConnect.Enabled = !connectionRequest.ConnectionOpportunity.ConnectionType.RequiresPlacementGroupToConnect;
            }

            if ( connectionRequest.ConnectionState == ConnectionState.Inactive || connectionRequest.ConnectionState == ConnectionState.Connected )
            {
                lbConnect.Visible = false;
                lbTransfer.Visible = false;
            }

            lContactInfo.Text = string.Empty;

            Person person = null;
            if ( connectionRequest != null && connectionRequest.PersonAlias != null )
            {
                person = connectionRequest.PersonAlias.Person;
            }

            if ( person != null && ( person.PhoneNumbers.Any() || !String.IsNullOrWhiteSpace( person.Email ) ) )
            {
                List<String> contactList = new List<string>();

                foreach ( PhoneNumber phoneNumber in person.PhoneNumbers )
                {
                    contactList.Add( String.Format( "{0} <font color='#808080'>{1}</font>", phoneNumber.NumberFormatted, phoneNumber.NumberTypeValue ) );
                }

                string emailTag = person.GetEmailTag( ResolveRockUrl( "/" ) );
                if ( !string.IsNullOrWhiteSpace( emailTag ) )
                {
                    contactList.Add( emailTag );
                }

                lContactInfo.Text = contactList.AsDelimited( "</br>" );
            }
            else
            {
                lContactInfo.Text = "No contact Info";
            }

            if ( person != null && !string.IsNullOrWhiteSpace( GetAttributeValue( "PersonProfilePage" ) ) )
            {
                lbProfilePage.Visible = true;

                Dictionary<string, string> queryParms = new Dictionary<string, string>();
                queryParms.Add( "PersonId", person.Id.ToString() );
                lbProfilePage.PostBackUrl = LinkedPageUrl( "PersonProfilePage", queryParms );
            }
            else
            {
                lbProfilePage.Visible = false;
            }

            if ( person != null )
            {
                string imgTag = Rock.Model.Person.GetPersonPhotoImageTag( person, 200, 200, className: "img-thumbnail" );
                if ( person.PhotoId.HasValue )
                {
                    lPortrait.Text = string.Format( "<a href='{0}'>{1}</a>", person.PhotoUrl, imgTag );
                }
                else
                {
                    lPortrait.Text = imgTag;
                }
            }
            else
            {
                lPortrait.Text = string.Empty; ;
            }

            lComments.Text = connectionRequest != null && connectionRequest.Comments != null ? connectionRequest.Comments.ScrubHtmlAndConvertCrLfToBr() : string.Empty;
            lRequestDate.Text = connectionRequest != null && connectionRequest.CreatedDateTime.HasValue ? connectionRequest.CreatedDateTime.Value.ToShortDateString() : string.Empty;
            if ( connectionRequest != null && connectionRequest.AssignedGroup != null )
            {
                var qryParams = new Dictionary<string, string>();
                qryParams.Add( "GroupId", connectionRequest.AssignedGroup.Id.ToString() );

                string url = LinkedPageUrl( "GroupDetailPage", qryParams );

                string roleStatus = string.Empty;

                string roleName = string.Empty;
                if ( connectionRequest.AssignedGroupMemberRoleId.HasValue )
                {
                    var role = new GroupTypeRoleService( new RockContext() ).Get( connectionRequest.AssignedGroupMemberRoleId.Value );
                    roleName = role != null ? role.Name : string.Empty;
                }

                string statusName = connectionRequest.AssignedGroupMemberStatus != null ? connectionRequest.AssignedGroupMemberStatus.ConvertToString() : string.Empty;
                if ( !string.IsNullOrWhiteSpace( roleName ) || !string.IsNullOrWhiteSpace( statusName ) )
                {
                    roleStatus = string.Format( " ({0}{1}{2})",
                        statusName,
                        !string.IsNullOrWhiteSpace( roleName ) && !string.IsNullOrWhiteSpace( statusName ) ? " " : "",
                        roleName );
                }

                lPlacementGroup.Text = !string.IsNullOrWhiteSpace( url ) ?
                    string.Format( "<a href='{0}'>{1}</a>{2}", url, connectionRequest.AssignedGroup.Name, roleStatus ) :
                    connectionRequest.AssignedGroup.Name;

                hfGroupMemberAttributeValues.Value = connectionRequest.AssignedGroupMemberAttributeValues;
                BuildGroupMemberAttributes( connectionRequest.AssignedGroupId, connectionRequest.AssignedGroupMemberRoleId, connectionRequest.AssignedGroupMemberStatus, true );
            }
            else
            {
                lPlacementGroup.Text = "No group assigned";
            }

            if ( connectionRequest != null &&
                connectionRequest.ConnectorPersonAlias != null &&
                connectionRequest.ConnectorPersonAlias.Person != null )
            {
                lConnector.Text = connectionRequest.ConnectorPersonAlias.Person.FullName;
            }
            else
            {
                lConnector.Text = "No connector assigned";
            }

            if ( connectionRequest != null )
            {
                hlState.Visible = true;
                hlState.Text = connectionRequest.ConnectionState.ConvertToString();
                hlState.LabelType = connectionRequest.ConnectionState == ConnectionState.Inactive ? LabelType.Danger :
                ( connectionRequest.ConnectionState == ConnectionState.FutureFollowUp ? LabelType.Info : LabelType.Success );

                hlStatus.Visible = true;
                hlStatus.Text = connectionRequest.ConnectionStatus.Name;
                hlStatus.LabelType = connectionRequest.ConnectionStatus.IsCritical ? LabelType.Warning : LabelType.Type;

                hlOpportunity.Text = connectionRequest.ConnectionOpportunity != null ? connectionRequest.ConnectionOpportunity.Name : string.Empty;
                hlCampus.Text = connectionRequest.Campus != null ? connectionRequest.Campus.Name : string.Empty;

                if ( connectionRequest.ConnectionOpportunity != null )
                {
                    var connectionWorkflows = connectionRequest.ConnectionOpportunity.ConnectionWorkflows.Union( connectionRequest.ConnectionOpportunity.ConnectionType.ConnectionWorkflows );
                    var manualWorkflows = connectionWorkflows
                        .Where( w =>
                            w.TriggerType == ConnectionWorkflowTriggerType.Manual &&
                            w.WorkflowType != null )
                        .OrderBy( w => w.WorkflowType.Name )
                        .Distinct();

                    if ( manualWorkflows.Any() )
                    {
                        lblWorkflows.Visible = true;
                        rptRequestWorkflows.DataSource = manualWorkflows.ToList();
                        rptRequestWorkflows.DataBind();
                    }
                    else
                    {
                        lblWorkflows.Visible = false;
                    }
                }

                BindConnectionRequestActivitiesGrid( connectionRequest, new RockContext() );
                BindConnectionRequestWorkflowsGrid();
            }
            else
            {
                hlState.Visible = false;
                hlStatus.Visible = false;
                hlOpportunity.Visible = false;
                hlCampus.Visible = false;
                lblWorkflows.Visible = false;
                lbConnect.Enabled = false;
            }
        }
        private void RebindGroupStatus( ConnectionRequest connectionRequest, RockContext rockContext )
        {
            int? groupId = null;
            int? roleId = null;
            GroupMemberStatus? currentStatus = ddlPlacementGroupStatus.SelectedValueAsEnumOrNull<GroupMemberStatus>();

            ddlPlacementGroupStatus.SelectedValue = null;
            ddlPlacementGroupStatus.Items.Clear();

            if ( connectionRequest != null )
            {
                if ( !currentStatus.HasValue && connectionRequest.AssignedGroupMemberStatus.HasValue )
                {
                    currentStatus = connectionRequest.AssignedGroupMemberStatus.Value;
                }

                var statuses = new Dictionary<int, string>();

                groupId = ddlPlacementGroup.SelectedValueAsInt();
                roleId = ddlPlacementGroupRole.SelectedValueAsInt();

                if ( groupId.HasValue && roleId.HasValue )
                {
                    var group = new GroupService( rockContext ).Get( groupId.Value );
                    if ( group != null )
                    {
                        foreach ( var groupConfig in new ConnectionOpportunityGroupConfigService( rockContext )
                            .Queryable().AsNoTracking()
                            .Where( c =>
                                c.ConnectionOpportunityId == connectionRequest.ConnectionOpportunityId &&
                                c.GroupTypeId == group.GroupTypeId &&
                                c.GroupMemberRoleId == roleId.Value ) )
                        {
                            statuses.AddOrIgnore( groupConfig.GroupMemberStatus.ConvertToInt(), groupConfig.GroupMemberStatus.ConvertToString() );
                        }
                    }
                }

                foreach ( var statusItem in statuses )
                {
                    var listItem = new ListItem( statusItem.Value, statusItem.Key.ToString() );
                    listItem.Selected = currentStatus.HasValue && currentStatus.Value.ConvertToInt() == statusItem.Key;
                    ddlPlacementGroupStatus.Items.Add( listItem );
                }

                ddlPlacementGroupStatus.Visible = ddlPlacementGroupStatus.Items.Count > 1;
            }

            CheckGroupRequirement();
            BuildGroupMemberAttributes( groupId, roleId, ddlPlacementGroupStatus.SelectedValueAsEnumOrNull<GroupMemberStatus>(), true );
        }
Beispiel #41
0
        public void SendConnectionRequest()
        {
            var packet = new ConnectionRequest()
            {
            };

            SendPackage(packet);
        }
Beispiel #42
0
        /// <summary>
        /// Adds the connections requests to the system from the given XML element.
        /// </summary>
        /// <example>
        ///   &lt;connections&gt;
        ///       &lt;connection type="Involvement" opportunity="Children's" comment="I would love to help teach kids about Jesus." date="2015-10-11T00:00:00" personGuid="1dfff821-e97c-4324-9883-cf59b5c5bdd6" /&gt;
        ///   &lt;/connections&gt;
        /// </example>
        /// <param name="elemConnections">The elem connections.</param>
        /// <param name="rockContext">The rock context.</param>
        private void AddConnections( XElement elemConnections, RockContext rockContext )
        {
            if ( elemConnections == null )
            {
                return;
            }

            ConnectionRequestService crService = new ConnectionRequestService( rockContext );
            ConnectionOpportunityService coService = new ConnectionOpportunityService( rockContext );
            ConnectionTypeService typeService = new ConnectionTypeService( rockContext );
            ConnectionStatusService connectionStatusService = new ConnectionStatusService( rockContext );
            ConnectionStatus noContact = connectionStatusService.Get( "901e1a6a-0e91-4f42-880f-47c061c24e0c".AsGuid() );

            // Find the type and it's corresponding opportunity and then add a connection request for the given person.
            foreach ( var element in elemConnections.Elements( "connection" ) )
            {
                string connectionTypeName = element.Attribute( "type" ).Value.Trim();
                string opportunityName = element.Attribute( "opportunity" ).Value.Trim();
                string comment = element.Attribute( "comment" ).Value.Trim();
                DateTime date = DateTime.Parse( element.Attribute( "date" ).Value.Trim(), new CultureInfo( "en-US" ) );
                Guid personGuid = element.Attribute( "personGuid" ).Value.Trim().AsGuid();

                var connectionOpportunity = coService.Queryable( "ConnectionType" ).AsNoTracking().Where( co => co.ConnectionType.Name == connectionTypeName && co.Name == opportunityName ).FirstOrDefault();

                // make sure we found a matching connection opportunity
                if ( connectionOpportunity != null )
                {
                    ConnectionRequest connectionRequest = new ConnectionRequest()
                    {
                        ConnectionOpportunityId = connectionOpportunity.Id,
                        PersonAliasId = _peopleAliasDictionary[personGuid],
                        Comments = comment,
                        ConnectionStatus = noContact,
                        ConnectionState = global::ConnectionState.Active,
                        CreatedDateTime = date
                    };

                    crService.Add( connectionRequest );
                }
            }
        }
Beispiel #43
0
        /// <summary>
        /// Shows the readonly details.
        /// </summary>
        /// <param name="_connectionRequest">The _connection request.</param>
        private void ShowReadonlyDetails( ConnectionRequest connectionRequest )
        {
            if ( connectionRequest.AssignedGroupId != null )
            {
                pnlRequirements.Visible = true;
                ShowConnectionOpportunityRequirementsStatuses();
            }
            else
            {
                pnlRequirements.Visible = false;
                lbConnect.Enabled = false;
            }

            btnSave.Visible = false;
            Person person = connectionRequest.PersonAlias.Person;
            if ( person.PhoneNumbers.Any() || !String.IsNullOrWhiteSpace( person.Email ) )
            {
                List<String> contactList = new List<string>();

                foreach ( PhoneNumber phoneNumber in person.PhoneNumbers )
                {
                    contactList.Add( String.Format( "{0} <font color='#808080'>{1}</font>", phoneNumber.NumberFormatted, phoneNumber.NumberTypeValue.Value ) );
                }

                string emailTag = person.GetEmailTag( ResolveRockUrl( "/" ) );
                if ( !string.IsNullOrWhiteSpace( emailTag ) )
                {
                    contactList.Add( emailTag );
                }

                lContactInfo.Text = contactList.AsDelimited( "</br>" );

            }
            else
            {
                lContactInfo.Text = "No contact Info";
            }

            if ( !string.IsNullOrWhiteSpace( GetAttributeValue( "PersonProfilePage" ) ) )
            {
                lbProfilePage.Visible = true;

                Dictionary<string, string> queryParms = new Dictionary<string, string>();
                queryParms.Add( "PersonId", person.Id.ToString() );
                lbProfilePage.PostBackUrl = LinkedPageUrl( "PersonProfilePage", queryParms );
            }
            else
            {
                lbProfilePage.Visible = false;
            }

            string imgTag = Rock.Model.Person.GetPhotoImageTag( person.PhotoId, person.Age, person.Gender, 200, 200 );
            if ( person.PhotoId.HasValue )
            {
                lPortrait.Text = string.Format( "<a href='{0}'>{1}</a>", person.PhotoUrl, imgTag );
            }
            else
            {
                lPortrait.Text = imgTag;
            }

            lComments.Text = connectionRequest.Comments.ScrubHtmlAndConvertCrLfToBr();
            lRequestDate.Text = connectionRequest.CreatedDateTime.Value.ToShortDateString();
            if ( connectionRequest.AssignedGroup != null )
            {
                var qryParams = new Dictionary<string, string>();
                qryParams.Add( "GroupId", connectionRequest.AssignedGroup.Id.ToString() );

                string url = LinkedPageUrl( "GroupDetailPage", qryParams );

                lAssignedGroup.Text = !string.IsNullOrWhiteSpace( url ) ?
                    string.Format( "<a href='{0}'>{1}</a>", url, connectionRequest.AssignedGroup.Name ) :
                    connectionRequest.AssignedGroup.Name;
            }
            else
            {
                lAssignedGroup.Text = "No assigned group";
            }

            if ( connectionRequest.ConnectorPersonAlias != null )
            {
                lConnector.Text = connectionRequest.ConnectorPersonAlias.Person.FullName;
            }
            else
            {
                lConnector.Text = "No assigned connector";
            }

            hlState.Visible = true;
            hlState.Text = connectionRequest.ConnectionState.ConvertToString();
            hlState.LabelType = connectionRequest.ConnectionState == ConnectionState.Inactive ? LabelType.Danger :
                ( connectionRequest.ConnectionState == ConnectionState.FutureFollowUp ? LabelType.Info : LabelType.Success );

            hlStatus.Visible = true;
            hlStatus.Text = connectionRequest.ConnectionStatus.Name;
            hlStatus.LabelType = connectionRequest.ConnectionStatus.IsCritical ? LabelType.Warning : LabelType.Type;

            hlOpportunity.Text = connectionRequest.ConnectionOpportunity.Name;
            hlCampus.Text = connectionRequest.Campus.Name;

            var connectionWorkflows = connectionRequest.ConnectionOpportunity.ConnectionWorkflows.Union( connectionRequest.ConnectionOpportunity.ConnectionType.ConnectionWorkflows );
            var manualWorkflows = connectionWorkflows
                .Where( w =>
                    w.TriggerType == ConnectionWorkflowTriggerType.Manual &&
                    w.WorkflowType != null )
                .OrderBy( w => w.WorkflowType.Name )
                .Distinct();

            if ( manualWorkflows.Any() )
            {
                rptRequestWorkflows.DataSource = manualWorkflows.ToList();
                rptRequestWorkflows.DataBind();
            }
            else
            {
                lblWorkflows.Visible = false;
            }

            if ( connectionRequest.ConnectionState == ConnectionState.Inactive || connectionRequest.ConnectionState == ConnectionState.Connected )
            {
                lbConnect.Enabled = false;
            }

            BindConnectionRequestActivitiesGrid( connectionRequest, new RockContext() );

            BindConnectionRequestWorkflowsGrid();
        }
        /// <summary>
        /// Handles the SelectedIndexChanged event of the ddlCampus control.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="EventArgs"/> instance containing the event data.</param>
        protected void ddlCampus_SelectedIndexChanged( object sender, EventArgs e )
        {
            using ( var rockContext = new RockContext() )
            {
                var connectionRequestService = new ConnectionRequestService( rockContext );
                var connectionRequest = connectionRequestService.Get( hfConnectionRequestId.ValueAsInt() );
                if ( connectionRequest == null )
                {
                    connectionRequest = new ConnectionRequest();
                    connectionRequest.ConnectionOpportunity = new ConnectionOpportunityService( rockContext ).Get( hfConnectionOpportunityId.ValueAsInt() );
                }

                RebindConnectors( connectionRequest, ddlCampus.SelectedValueAsInt(), rockContext );
            }
        }
        /// <summary>
        /// Shows the edit details.
        /// </summary>
        /// <param name="_connectionRequest">The _connection request.</param>
        private void ShowEditDetails( ConnectionRequest connectionRequest, RockContext rockContext )
        {
            btnSave.Visible = true;
            pnlReadDetails.Visible = false;
            wpConnectionRequestActivities.Visible = false;
            wpConnectionRequestWorkflow.Visible = false;
            pnlEditDetails.Visible = true;

            tbComments.Text = connectionRequest.Comments.ScrubHtmlAndConvertCrLfToBr();

            ddlPlacementGroup.Items.Clear();
            ddlPlacementGroup.Items.Add( new ListItem( String.Empty, String.Empty ) );

            var groups = new List<Group>();

            if ( connectionRequest.ConnectionOpportunity.UseAllGroupsOfType )
            {
                var placementGroupTypeId = connectionRequest.ConnectionOpportunity.GroupTypeId;

                groups = new GroupService( new RockContext() )
                                .Queryable().AsNoTracking()
                                .Where( g => g.GroupTypeId == placementGroupTypeId
                                             && ( g.Campus == null || g.CampusId == connectionRequest.CampusId ) )
                                .ToList();

            }
            else
            {
                var opportunityGroupIds = connectionRequest.ConnectionOpportunity.ConnectionOpportunityGroups.Select( o => o.Id ).ToList();

                groups = connectionRequest.ConnectionOpportunity.ConnectionOpportunityGroups
                                    .Where( g =>
                                        g.Group.Campus == null ||
                                        g.Group.CampusId == connectionRequest.CampusId ||
                                        g.Group.Id == connectionRequest.AssignedGroupId
                                    )
                                    .Select( g => g.Group )
                                    .ToList();
            }

            if ( connectionRequest.AssignedGroup != null &&
                !groups.Any( g => g.Id == connectionRequest.AssignedGroup.Id ) )
            {
                groups.Add( connectionRequest.AssignedGroup );
            }

            foreach ( var g in groups.OrderBy( g => g.Name ) )
            {
                ddlPlacementGroup.Items.Add( new ListItem( String.Format( "{0} ({1})", g.Name, g.Campus != null ? g.Campus.Name : "No Campus" ), g.Id.ToString().ToUpper() ) );
            }

            ddlPlacementGroup.SetValue( connectionRequest.AssignedGroupId );

            if ( connectionRequest.PersonAlias != null )
            {
                ppRequestor.SetValue( connectionRequest.PersonAlias.Person );
                ppRequestor.Enabled = false;
            }
            else
            {
                ppRequestor.Enabled = true;
            }

            rblStatus.SetValue( connectionRequest.ConnectionStatus.Id );
            rblStatus.Enabled = true;
            rblStatus.Label = "Status";

            ddlCampus.Items.Clear();
            ddlCampus.Items.Add( new ListItem( string.Empty, string.Empty ) );

            foreach ( var campus in CampusCache.All() )
            {
                ddlCampus.Items.Add( new ListItem( campus.Name, campus.Id.ToString().ToUpper() ) );
            }

            if ( connectionRequest.CampusId != null )
            {
                ddlCampus.SelectedValue = connectionRequest.CampusId.ToString();
            }
            else
            {
                ddlCampus.SelectedIndex = 0;
            }

            RebindConnectors( connectionRequest, ddlCampus.SelectedValueAsInt(), rockContext );

            rblState.BindToEnum<ConnectionState>();
            if ( !connectionRequest.ConnectionOpportunity.ConnectionType.EnableFutureFollowup )
            {
                rblState.Items.RemoveAt( 2 );
            }

            rblState.SetValue( connectionRequest.ConnectionState.ConvertToInt().ToString() );

            rblStatus.Items.Clear();
            foreach ( var status in connectionRequest.ConnectionOpportunity.ConnectionType.ConnectionStatuses )
            {
                rblStatus.Items.Add( new ListItem( status.Name, status.Id.ToString().ToUpper() ) );
            }

            rblStatus.SelectedValue = connectionRequest.ConnectionStatusId.ToString();

            if ( connectionRequest.ConnectionState == ConnectionState.FutureFollowUp )
            {
                dpFollowUp.Visible = true;
                if ( connectionRequest.FollowupDate != null )
                {
                    dpFollowUp.SelectedDate = connectionRequest.FollowupDate;
                }
                else
                {
                    dpFollowUp.Visible = false;
                }
            }
        }
        /// <summary>
        /// Rebinds the connectors.
        /// </summary>
        /// <param name="connectionRequest">The connection request.</param>
        /// <param name="campusId">The campus identifier.</param>
        /// <param name="rockContext">The rock context.</param>
        public void RebindConnectors( ConnectionRequest connectionRequest, int? campusId, RockContext rockContext )
        {
            int? currentValue = ddlConnectorEdit.SelectedValueAsInt();

            var connectors = new Dictionary<int, Person>();

            if ( connectionRequest != null )
            {
                if ( !currentValue.HasValue && connectionRequest.ConnectorPersonAlias != null )
                {
                    currentValue = connectionRequest.ConnectorPersonAlias.PersonId;
                }

                if ( connectionRequest.ConnectionOpportunity != null )
                {
                    // Get the connectors from the connector groups
                    if ( connectionRequest.ConnectionOpportunity.ConnectionType != null )
                    {
                        connectionRequest.ConnectionOpportunity.ConnectionOpportunityConnectorGroups
                            .Where( g =>
                                !g.CampusId.HasValue ||
                                !campusId.HasValue ||
                                g.CampusId.Value == campusId.Value )
                            .SelectMany( g => g.ConnectorGroup.Members )
                            .Where( m => m.GroupMemberStatus == GroupMemberStatus.Active )
                            .Select( m => m.Person )
                            .ToList()
                            .ForEach( p => connectors.AddOrIgnore( p.Id, p ) );
                    }

                    if ( !currentValue.HasValue && campusId.HasValue )
                    {
                        currentValue = connectionRequest.ConnectionOpportunity.GetDefaultConnectorPersonId( campusId.Value );
                    }
                }
            }

            // Add the current person as possible connector
            if ( CurrentPerson != null )
            {
                connectors.AddOrIgnore( CurrentPerson.Id, CurrentPerson );
            }

            // Make sure the current value is an option
            if ( currentValue.HasValue && !connectors.ContainsKey( currentValue.Value ) )
            {
                var person = new PersonService( rockContext ).Get( currentValue.Value );
                if ( person != null )
                {
                    connectors.AddOrIgnore( person.Id, person );
                }
            }

            // Add connectors to dropdown list
            ddlConnectorEdit.Items.Clear();
            ddlConnectorEdit.Items.Add( new ListItem( "", "" ) );
            connectors
                .ToList()
                .OrderBy( p => p.Value.LastName )
                .ThenBy( p => p.Value.NickName )
                .ToList()
                .ForEach( c =>
                    ddlConnectorEdit.Items.Add( new ListItem( c.Value.FullName, c.Key.ToString() ) ) );

            if ( currentValue.HasValue )
            {
                ddlConnectorEdit.SetValue( currentValue.Value );
            }
        }
        /// <summary>
        /// Launches the workflow.
        /// </summary>
        /// <param name="rockContext">The rock context.</param>
        /// <param name="connectionWorkflow">The connection workflow.</param>
        /// <param name="name">The name.</param>
        private void LaunchWorkflow( RockContext rockContext, ConnectionRequest connectionRequest, ConnectionWorkflow connectionWorkflow )
        {
            if ( connectionRequest != null && connectionWorkflow != null && connectionWorkflow.WorkflowType != null )
            {
                var workflow = Rock.Model.Workflow.Activate( connectionWorkflow.WorkflowType, connectionWorkflow.WorkflowType.WorkTerm, rockContext );
                if ( workflow != null )
                {
                    var workflowService = new Rock.Model.WorkflowService( rockContext );

                    List<string> workflowErrors;
                    if ( workflowService.Process( workflow, connectionRequest, out workflowErrors ) )
                    {
                        if ( workflow.Id != 0 )
                        {
                            ConnectionRequestWorkflow connectionRequestWorkflow = new ConnectionRequestWorkflow();
                            connectionRequestWorkflow.ConnectionRequestId = connectionRequest.Id;
                            connectionRequestWorkflow.WorkflowId = workflow.Id;
                            connectionRequestWorkflow.ConnectionWorkflowId = connectionWorkflow.Id;
                            connectionRequestWorkflow.TriggerType = connectionWorkflow.TriggerType;
                            connectionRequestWorkflow.TriggerQualifier = connectionWorkflow.QualifierValue;
                            new ConnectionRequestWorkflowService( rockContext ).Add( connectionRequestWorkflow );

                            rockContext.SaveChanges();

                            if ( workflow.HasActiveEntryForm( CurrentPerson ) )
                            {
                                var qryParam = new Dictionary<string, string>();
                                qryParam.Add( "WorkflowTypeId", connectionWorkflow.WorkflowType.Id.ToString() );
                                qryParam.Add( "WorkflowId", workflow.Id.ToString() );
                                NavigateToLinkedPage( "WorkflowEntryPage", qryParam );
                            }
                            else
                            {
                                mdWorkflowLaunched.Show( string.Format( "A '{0}' workflow has been started.",
                                    connectionWorkflow.WorkflowType.Name ), ModalAlertType.Information );
                            }

                            ShowDetail( PageParameter( "ConnectionRequestId" ).AsInteger(), PageParameter( "ConnectionOpportunityId" ).AsIntegerOrNull() );
                        }
                        else
                        {
                            mdWorkflowLaunched.Show( string.Format( "A '{0}' workflow was processed (but not persisted).",
                                connectionWorkflow.WorkflowType.Name ), ModalAlertType.Information );
                        }
                    }
                    else
                    {
                        mdWorkflowLaunched.Show( "Workflow Processing Error(s):<ul><li>" + workflowErrors.AsDelimited( "</li><li>" ) + "</li></ul>", ModalAlertType.Information );
                    }
                }
            }
        }
        private void RebindGroupRole( ConnectionRequest connectionRequest, RockContext rockContext )
        {
            int? currentRoleId = ddlPlacementGroupRole.SelectedValueAsInt();
            ddlPlacementGroupRole.SelectedValue = null;
            ddlPlacementGroupRole.Items.Clear();

            if ( !currentRoleId.HasValue && connectionRequest.AssignedGroupMemberRoleId.HasValue )
            {
                currentRoleId = connectionRequest.AssignedGroupMemberRoleId.Value;
            }

            var roles = new Dictionary<int, string>();

            int? groupId = ddlPlacementGroup.SelectedValueAsInt();
            if ( groupId.HasValue )
            {
                var group = new GroupService( rockContext ).Get( groupId.Value );
                if ( group != null )
                {
                    foreach ( var groupConfig in new ConnectionOpportunityGroupConfigService( rockContext )
                        .Queryable().AsNoTracking()
                        .Where( c =>
                            c.ConnectionOpportunityId == connectionRequest.ConnectionOpportunityId &&
                            c.GroupTypeId == group.GroupTypeId ) )
                    {
                        if ( groupConfig.GroupMemberRole != null )
                        {
                            roles.AddOrIgnore( groupConfig.GroupMemberRole.Id, groupConfig.GroupMemberRole.Name );
                        }
                    }
                }
            }

            foreach ( var roleItem in roles )
            {
                var listItem = new ListItem( roleItem.Value, roleItem.Key.ToString() );
                listItem.Selected = currentRoleId.HasValue && currentRoleId.Value == roleItem.Key;
                ddlPlacementGroupRole.Items.Add( listItem );
            }

            ddlPlacementGroupRole.Visible = ddlPlacementGroupRole.Items.Count > 1;

            RebindGroupStatus( connectionRequest, rockContext );
        }
Beispiel #49
0
        public void SendConnectionRequest()
        {
            var packet = new ConnectionRequest()
            {
            };

            SendPackage(packet, _mtuSize, 0, 0);
        }
        /// <summary>
        /// Shows the edit details.
        /// </summary>
        /// <param name="_connectionRequest">The _connection request.</param>
        private void ShowEditDetails( ConnectionRequest connectionRequest, RockContext rockContext )
        {
            pnlReadDetails.Visible = false;
            pnlEditDetails.Visible = true;

            wpConnectionRequestActivities.Visible = false;
            wpConnectionRequestWorkflow.Visible = false;

            // Requester
            if ( connectionRequest.PersonAlias != null )
            {
                ppRequestor.SetValue( connectionRequest.PersonAlias.Person );
                ppRequestor.Enabled = false;
            }
            else
            {
                ppRequestor.Enabled = true;
            }

            // State
            rblState.BindToEnum<ConnectionState>();
            if ( !connectionRequest.ConnectionOpportunity.ConnectionType.EnableFutureFollowup )
            {
                rblState.Items.RemoveAt( 2 );
            }
            rblState.SetValue( connectionRequest.ConnectionState.ConvertToInt().ToString() );

            // Follow up Date
            if ( connectionRequest.ConnectionState == ConnectionState.FutureFollowUp )
            {
                dpFollowUp.Visible = true;
                if ( connectionRequest.FollowupDate != null )
                {
                    dpFollowUp.SelectedDate = connectionRequest.FollowupDate;
                }
                else
                {
                    dpFollowUp.Visible = false;
                }
            }

            // Coments
            tbComments.Text = connectionRequest.Comments.ScrubHtmlAndConvertCrLfToBr();

            // Status
            rblStatus.Items.Clear();
            foreach ( var status in connectionRequest.ConnectionOpportunity.ConnectionType.ConnectionStatuses )
            {
                rblStatus.Items.Add( new ListItem( status.Name, status.Id.ToString().ToUpper() ) );
            }
            rblStatus.SelectedValue = connectionRequest.ConnectionStatusId.ToString();

            // Campus
            ddlCampus.Items.Clear();
            ddlCampus.Items.Add( new ListItem( string.Empty, string.Empty ) );
            foreach ( var campus in CampusCache.All() )
            {
                var listItem = new ListItem( campus.Name, campus.Id.ToString() );
                listItem.Selected = connectionRequest.CampusId.HasValue && campus.Id == connectionRequest.CampusId.Value;
                ddlCampus.Items.Add( listItem );
            }

            hfGroupMemberAttributeValues.Value = connectionRequest.AssignedGroupMemberAttributeValues;

            // Connectors, Groups, Member Roles, Member Status & Group Member Attributes
            RebindGroupsAndConnectors( connectionRequest, rockContext );
        }
        /// <summary>
        /// wątek odbierający wiadomości z chmury
        /// </summary>
        public void receiver()
        {
            while (isConnectedToCloud)
            {
                BinaryFormatter bf = new BinaryFormatter();
                try
                {
                    SPacket receivedPacket = (Packet.SPacket)bf.Deserialize(networkStream);
                    if (isDebug) SetText("Odczytano:\n" + receivedPacket.ToString());
                    List<String> _msgList = receivedPacket.getParames();
                    Address _senderAddr;
                    if (Address.TryParse(receivedPacket.getSrc(), out _senderAddr))
                    {
                        //gdy logowanie się
                        if (_msgList[0] == "HELLO")
                        {
                            try
                            {
                                string usr = _msgList[1];
                                Address usrAddr = _senderAddr;
                                bool tempIsOk = true;
                                UserData tempUser = null;

                                //SPRAWDZA CZY TAKI JUZ JEST
                                foreach (UserData ud in userList)
                                {
                                    if ((ud.userName == usr || ud.userAddr.ToString() == _senderAddr.ToString()))
                                    {
                                        tempIsOk = false;
                                        tempUser = ud;
                                    }
                                }

                                if (tempIsOk)
                                {

                                    userList.Add(new UserData(usr, usrAddr, 6, true));

                                    List<string> userNames = new List<string>();
                                    foreach(UserData us in userList)
                                    {
                                        userNames.Add(us.userName);
                                    }

                                    BindingSource bs = new BindingSource();
                                    bs.DataSource = userNames;

                                    this.Invoke((MethodInvoker)delegate()
                                    {
                                        selectedUserBox.DataSource = bs;
                                    });

                                    SPacket pck = new SPacket(myAddr.ToString(), _senderAddr.ToString(), "OK");
                                    whatToSendQueue.Enqueue(pck);

                                }
                                else
                                {
                                    SPacket pck = new SPacket(myAddr.ToString(), _senderAddr.ToString(), "NAME_OR_ADDR_TAKEN_BY " + tempUser.userName + " WITH_ADDR " + tempUser.userAddr);
                                    whatToSendQueue.Enqueue(pck);
                                }
                            }
                            catch
                            {
                                SPacket pck = new SPacket(myAddr.ToString(), _senderAddr.ToString(), "ERROR");
                                whatToSendQueue.Enqueue(pck);
                            }
                            //gdy żądanie listy klientów
                        }
                        else if (_msgList[0] == "REQ_CONN")
                        {

                            try
                            {
                                foreach (UserData u in userList)
                                {
                                    SPacket pck = new SPacket(myAddr.ToString(), u.userAddr.ToString(), "REQ_VPATHS");
                                    whatToSendQueue.Enqueue(pck);
                                }

                            }
                            catch
                            {
                                SetText("Cos walnelo przy żadaniu VP");
                            }

                            //Z NCC
                            if (_senderAddr.ToString() == NCCAddr.ToString())
                            {
                                try
                                {
                                    string src = _msgList[1];
                                    string dest = _msgList[2];
                                    string connId = _msgList[3];

                                    SPacket pck;

                                    var conn = from c in myConnections where c.connId == Convert.ToInt32(connId) select c;
                                    if(conn.Any())
                                    {
                                        foreach(var c in conn)
                                            try
                                            {
                                                foreach (UserData us in c.connNodes)
                                                {
                                                    foreach (NodeMapping nm in us.userMappings)
                                                    {
                                                        try
                                                        {
                                                            string msg;

                                                            if (nm.outcomingAddr == "-" && nm.outcomingVP == "-" && nm.outcomingVC == "-")
                                                            {
                                                                msg = "DEL_MAPPING " + nm.incomingAddr + " " + nm.incomingVP + " " + nm.incomingVC;
                                                            }
                                                            else
                                                            {
                                                                msg = "DEL_MAPPING " + nm.incomingAddr + " " + nm.incomingVP + " " + nm.incomingVC + " " + nm.outcomingAddr + " " + nm.outcomingVP + " " + nm.outcomingVC;
                                                            }

                                                            pck = new SPacket(myAddr.ToString(), us.userAddr.ToString(), msg);
                                                            whatToSendQueue.Enqueue(pck);

                                                            deleteVirtualConnection(us, nm.outcomingVP, nm.outcomingVC, nm.outcomingAddr);
                                                        }
                                                        catch
                                                        {
                                                            SetText("Error sending DEL mapping");
                                                        }
                                                    }
                                                }
                                            }
                                            catch
                                            {
                                                SetText("Error whilst disconnecting existing connection, resto case");
                                            }
                                    }

                                    currConnection  = new ConnectionRequest(src, dest, Convert.ToInt32(connId));
                                    currConnection.prevCCAddr = NCCAddr.ToString();

                                    awaitingConnections.Add(currConnection);

                                    //while (awaitingConnections.Count() != 0)
                                    //{
                                        //ConnectionRequest temp = awaitingConnections[awaitingConnections.Count() - 1];
                                        pck = new SPacket(myAddr.ToString(), myRCAddr.ToString(), "REQ_ROUTE " + src + " " + dest);
                                        whatToSendQueue.Enqueue(pck);
                                        //awaitingConnections.Remove(temp);
                                    //}

                                }
                                catch
                                {
                                    SPacket pck = new SPacket(myAddr.ToString(), _senderAddr.ToString(), "REQ_CONN z NCC ma za mało danych?");
                                    whatToSendQueue.Enqueue(pck);
                                }
                            }
                            // Z CC
                            else
                            {
                                try
                                {
                                    int connId = Convert.ToInt32(_msgList[1]);
                                    string incomingAddr = _msgList[2];
                                    string src = _msgList[3];
                                    string vp = _msgList[4];
                                    string vc = _msgList[5];
                                    string dest = _msgList[6];

                                    SPacket pck;

                                    var conn = from c in myConnections where c.connId == Convert.ToInt32(connId) select c;
                                    if (conn.Any())
                                    {
                                        foreach (var c in conn)
                                            try
                                            {
                                                foreach (UserData us in c.connNodes)
                                                {
                                                    foreach (NodeMapping nm in us.userMappings)
                                                    {
                                                        try
                                                        {
                                                            string msg;

                                                            if (nm.outcomingAddr == "-" && nm.outcomingVP == "-" && nm.outcomingVC == "-")
                                                            {
                                                                msg = "DEL_MAPPING " + nm.incomingAddr + " " + nm.incomingVP + " " + nm.incomingVC;
                                                            }
                                                            else
                                                            {
                                                                msg = "DEL_MAPPING " + nm.incomingAddr + " " + nm.incomingVP + " " + nm.incomingVC + " " + nm.outcomingAddr + " " + nm.outcomingVP + " " + nm.outcomingVC;
                                                            }

                                                            pck = new SPacket(myAddr.ToString(), us.userAddr.ToString(), msg);
                                                            whatToSendQueue.Enqueue(pck);

                                                            deleteVirtualConnection(us, nm.outcomingVP, nm.outcomingVC, nm.outcomingAddr);
                                                        }
                                                        catch
                                                        {
                                                            SetText("Error sending DEL mapping");
                                                        }
                                                    }
                                                }
                                            }
                                            catch
                                            {
                                                SetText("Error whilst disconnecting existing connection, resto case");
                                            }
                                    }

                                    currConnection = new ConnectionRequest(src, dest, connId);
                                    currConnection.incomingAddr = incomingAddr;
                                    currConnection.inVP = Convert.ToInt32(vp);
                                    currConnection.inVC = Convert.ToInt32(vc);
                                    currConnection.prevCCAddr = _senderAddr.ToString();

                                    UserData tempUser = null;
                                    bool userFound = false;

                                    foreach (UserData us in userList)
                                    {
                                        if (us.userAddr.ToString() == src)
                                        {
                                            tempUser = us;
                                            userFound = true;
                                            break;
                                        }
                                    }

                                    if(userFound)
                                    {
                                        //DODANE ALE NIE WYSŁANE, WYSYŁA DOPIERO PO OTRZYMANIU ROUTE OD RC BO TRZEBA DOKLEIC RESZTE MAPOWANIA
                                        tempUser.userMappings.Add(new NodeMapping(incomingAddr, vp, vc, "-", "-", "-", connId));
                                    }

                                    pck = new SPacket(myAddr.ToString(), myRCAddr.ToString(), "REQ_ROUTE " + src + " " + dest);
                                    whatToSendQueue.Enqueue(pck);

                                }
                                catch
                                {
                                    SPacket pck = new SPacket(myAddr.ToString(), _senderAddr.ToString(), "REQ_CONN z innego CC ma za mało danych?");
                                    whatToSendQueue.Enqueue(pck);
                                }
                            }

                        }
                        else if(_msgList[0] == "REQ_DISCONN")
                        {
                            int connId = Convert.ToInt32(_msgList[1]);
                            ConnectionRequest connToDis = null;

                            foreach(ConnectionRequest cr in myConnections)
                            {
                                if(cr.connId == connId && cr.active == true)
                                    connToDis = cr;
                            }

                            if (connToDis != null)
                            {
                                try
                                {
                                    foreach(UserData us in connToDis.connNodes)
                                    {
                                        foreach(NodeMapping nm in us.userMappings)
                                        {
                                            try
                                            {
                                                string msg;

                                                if (nm.outcomingAddr == "-" && nm.outcomingVP == "-" && nm.outcomingVC == "-")
                                                {
                                                    msg = "DEL_MAPPING " + nm.incomingAddr + " " + nm.incomingVP + " " + nm.incomingVC;
                                                }
                                                else
                                                {
                                                    msg = "DEL_MAPPING " + nm.incomingAddr + " " + nm.incomingVP + " " + nm.incomingVC + " " + nm.outcomingAddr + " " + nm.outcomingVP + " " + nm.outcomingVC;
                                                }

                                                SPacket pck = new SPacket(myAddr.ToString(), us.userAddr.ToString(), msg);
                                                whatToSendQueue.Enqueue(pck);

                                                deleteVirtualConnection(us, nm.outcomingVP, nm.outcomingVC, nm.outcomingAddr);
                                            }catch{
                                                SetText("Error sending DEL mapping");
                                            }
                                        }
                                    }
                                }
                                catch
                                {
                                    SetText("Error whilst disconnecting connection");
                                }

                                if(connToDis.nextCCAddr != "-")
                                    try
                                    {
                                        SPacket pck = new SPacket(myAddr.ToString(), connToDis.nextCCAddr, "REQ_DISCONN " + connToDis.connId);
                                        whatToSendQueue.Enqueue(pck);

                                        connToDis.active = false;
                                    }
                                    catch
                                    {
                                        SetText("DEL NIE POSZEDL DO NEXTCC");
                                    }
                                else
                                {
                                    try
                                    {
                                        SPacket pck = new SPacket(myAddr.ToString(), NCCAddr.ToString(), "CONN_DISCONN " + connToDis.connId);
                                        whatToSendQueue.Enqueue(pck);

                                        connToDis.active = false;
                                    }
                                    catch
                                    {
                                        SetText("NCC NIE OTRZYMAŁ POTWIERDZENIA DISCONN");
                                    }
                                }
                            }
                        }
                        else if(_msgList[0] == "ROUTE" && _senderAddr.ToString() == myRCAddr.ToString())
                        {

                            try
                            {
                                UserData prevTempUser = null;

                                for (int i = 1; i < _msgList.Count(); i++ )
                                {
                                    UserData tempUser = null;
                                    NodeMapping foundMapping = null;
                                    NodeMapping newMapping = null;
                                    bool userFound = false;

                                    string s = _msgList[i];

                                    foreach(UserData us in userList)
                                    {
                                        if(us.userAddr.ToString() == s)
                                        {
                                            tempUser = us;
                                            userFound = true;
                                            break;
                                        }
                                    }

                                    try
                                    {
                                        string prev_s = null;
                                        string next_s = null;

                                        if(i > 0)
                                            prev_s = _msgList[i - 1];

                                        if((i+1) < _msgList.Count())
                                            next_s = _msgList[i + 1];

                                        if (!s.Contains('*'))
                                        {
                                            if (s.Contains(netNum + "." + subNetNum))
                                            {
                                                if (userFound)
                                                {
                                                    if (i == 1)
                                                    {
                                                        try
                                                        {
                                                            if (tempUser.userMappings.Count() != 0)
                                                            {
                                                                foreach (NodeMapping nm in tempUser.userMappings)
                                                                {
                                                                    if (nm.outcomingAddr == "-" && nm.incomingAddr != "-" && nm.toSend == true && nm.callId == currConnection.connId)
                                                                    {
                                                                        foundMapping = nm;
                                                                    }
                                                                }
                                                            }
                                                        }
                                                        catch
                                                        {
                                                            SetText("Something wrong with CC mapping format [error while finding non-complete mapping but mapping is there...]");
                                                        }

                                                        try
                                                        {

                                                            if (foundMapping == null && tempUser.userAddr.ToString() != currConnection.destAddr)//DZWONIACY CLIENTX
                                                            {
                                                                string newVPI = nextVirtualPath(null, tempUser, next_s);
                                                                string newVCI = nextVirtualConnection(null, tempUser, newVPI, next_s);
                                                                newMapping = new NodeMapping(next_s, newVPI, newVCI, "-", "-", "-", currConnection.connId);
                                                            }
                                                            else if (foundMapping != null && tempUser.userAddr.ToString() != currConnection.destAddr) //PIERWSZY NODE W NOWEJ PODSIECI
                                                            {
                                                                //NodeMapping prevMapping = prevTempUser.userMappings[prevTempUser.userMappings.Count() - 1];
                                                                string newVPI = nextVirtualPath(null, tempUser, next_s);
                                                                string newVCI = nextVirtualConnection(foundMapping, tempUser, newVPI, next_s);
                                                                //BLEDNE MAPOWANIE 1 W NOWYM NODE DO SPRAWDZENIA!!!!
                                                                foundMapping.outcomingAddr = next_s;
                                                                foundMapping.outcomingVP = newVPI;
                                                                foundMapping.outcomingVC = newVCI;
                                                            }
                                                            /*else if (foundMapping != null && tempUser.userAddr.ToString() == currConnection.destAddr)//PIERWSZY NODE W NOWEJ PODSIECI I OSTATNI W POŁĄCZENIU
                                                            {
                                                                NodeMapping prevMapping = tempUser.userMappings[tempUser.userMappings.Count() - 1];
                                                                //NodeMapping prevMapping = null;
                                                                //if (prevTempUser.userMappings.Count() > 0)
                                                                  //  prevMapping = prevTempUser.userMappings[prevTempUser.userMappings.Count() - 1];
                                                                newMapping = new NodeMapping(prev_s, prevMapping.outcomingVP, prevMapping.outcomingVC, "-", "-", "-", currConnection.connId);
                                                                currConnection.established = true;
                                                            }*/
                                                        }
                                                        catch(Exception e)
                                                        {
                                                            SetText("Error while operating on first ROUTE command member..., Exception " + e.ToString());
                                                        }
                                                    }//KONIEC PIERWSZEGO ADRESU Z ROUTE'A
                                                    else{
                                                        try
                                                        {
                                                            if (tempUser.userAddr.ToString() == currConnection.destAddr && !tempUser.userAddr.ToString().Equals(prevTempUser.userAddr.ToString()))//NIE PIERWSZY W ROUTE ALE OSTATNI W POŁĄCZENIU I NIE TEN SAM CO WCZESNIEJ
                                                            {
                                                                try
                                                                {
                                                                    NodeMapping prevMapping = prevTempUser.userMappings[prevTempUser.userMappings.Count() - 1];

                                                                    string outvpi = null;

                                                                    if (prevMapping.outcomingVP == "-")
                                                                        outvpi = prevMapping.incomingVP;
                                                                    else
                                                                        outvpi = prevMapping.outcomingVP;

                                                                    string outvci = null;

                                                                    if (prevMapping.outcomingVP == "-")
                                                                        outvci = prevMapping.incomingVC;
                                                                    else
                                                                        outvci = prevMapping.outcomingVC;

                                                                    newMapping = new NodeMapping(prev_s, outvpi, outvci, "-", "-", "-", currConnection.connId);
                                                                    currConnection.established = true;
                                                                }
                                                                catch(Exception e)
                                                                {
                                                                    SetText("Error from not first in ROUTE but last in connection, node " + s + ", error: " + e.ToString());
                                                                }
                                                            }
                                                            else //NODIX GDZIEŚ POMIĘDZY, MA WEJŚCIE I WYJŚCIE
                                                            {
                                                                try
                                                                {
                                                                    NodeMapping prevMapping = prevTempUser.userMappings[prevTempUser.userMappings.Count() - 1];
                                                                    string newVPI = nextVirtualPath(prevMapping, tempUser, next_s);
                                                                    string newVCI = nextVirtualConnection(prevMapping, tempUser, newVPI, next_s);

                                                                    string outvpi = null;

                                                                    if (prevMapping.outcomingVP == "-")
                                                                        outvpi = prevMapping.incomingVP;
                                                                    else
                                                                        outvpi = prevMapping.outcomingVP;

                                                                    string outvci = null;

                                                                    if (prevMapping.outcomingVP == "-")
                                                                        outvci = prevMapping.incomingVC;
                                                                    else
                                                                        outvci = prevMapping.outcomingVC;

                                                                    newMapping = new NodeMapping(prev_s, outvpi, outvci, next_s, newVPI, newVCI, currConnection.connId);
                                                                }
                                                                catch(Exception e)
                                                                {
                                                                    SetText("Error from transit node: " + s + "Exception e: " + e.ToString());
                                                                }
                                                            }
                                                        }
                                                        catch
                                                        {
                                                            SetText("Error while operating on not-first members of ROUTE command");
                                                        }
                                                    }

                                                    try
                                                    {
                                                        if (newMapping != null)
                                                        {
                                                            tempUser.userMappings.Add(newMapping);
                                                            prevTempUser = tempUser;
                                                        }
                                                        else if (foundMapping != null)
                                                        {
                                                            prevTempUser = tempUser;
                                                        }
                                                    }
                                                    catch
                                                    {
                                                        SetText("Error while adding newMapping to current NODE");
                                                    }

                                                    currConnection.connNodes.Add(tempUser);
                                                    //TU ZAMKNIJ
                                                }
                                                else
                                                    SetText("Error while operating on ROUTE, there is no connected client having address: " + s);
                                            }
                                            else
                                            {
                                                //PIERWSZY NIE Z GWIAZDKA I OSTATNI W OGOLE CZYLI NODE Z NEXT SUBNET
                                                currConnection.outNodeAddr = prev_s;
                                                currConnection.inNodeAddr = s;
                                                NodeMapping prevMapping = prevTempUser.userMappings[prevTempUser.userMappings.Count() - 1];
                                                //string newVPI = nextVirtualPath(prevMapping, tempUser, next_s);
                                                //TU_VP
                                                currConnection.outVP = Convert.ToInt32(prevMapping.outcomingVP);
                                                currConnection.outVC = Convert.ToInt32(prevMapping.outcomingVC);
                                            }

                                        }
                                        else
                                        {
                                            //TU ZŁAPIE SIĘ TYLKO PIERWSZY Z GWIAZDKA I SUPER BO PRZEKSZTALCAMY GWIAZDKE NA 1 I MAMY NOWY CC DO KTOREGO WYSYLAMY REQ_CONN

                                            currConnection.nextCCAddr = s.Replace('*', '1');

                                            break;
                                        }
                                    }
                                    catch(Exception e)
                                    {
                                        SPacket pck = new SPacket(myAddr.ToString(), _senderAddr.ToString(), "Nie wyszło " + e.ToString());
                                        whatToSendQueue.Enqueue(pck);
                                    }
                                }

                                //ROZESLIJ WSZELKIE OCZEKUJACE MAPPINGI DO NODE'ÓW
                                sendMappingsToNodes();

                                if (currConnection.inNodeAddr != "-" && currConnection.outNodeAddr != "-" && currConnection.nextCCAddr != "-")
                                    sendToNextSubnet();

                                if(currConnection.established == true)
                                {
                                    SPacket pck = new SPacket(myAddr.ToString(), NCCAddr.ToString(), "CONN_EST " + currConnection.connId);
                                    whatToSendQueue.Enqueue(pck);
                                }

                                myConnections.Add(currConnection);

                            }
                            catch(Exception e)
                            {
                                SPacket pck = new SPacket(myAddr.ToString(), _senderAddr.ToString(), "ROUTE ERROR PODLACZYŁEŚ JAKIEŚ KLIENTY DEBILU? " + e.ToString());
                                whatToSendQueue.Enqueue(pck);
                            }
                        }
                        else if (_msgList[0] == "ROUTE_NOT_FOUND")
                        {

                        }
                        else if(_msgList[0] == "RES_VPATHS")
                        {
                            try
                            {
                                receiveVirtualPaths(_msgList, _senderAddr.ToString());
                            }
                            catch
                            {
                                SetText("Error whilst receiving VPATHS...");
                            }
                        }
                        else if(_msgList[0] == "DEAD")
                        {
                            string deadAddr = _msgList[1];

                            List<ConnectionRequest> toRestoreConns = new List<ConnectionRequest>();

                            foreach(ConnectionRequest cr in myConnections)
                            {
                                foreach(UserData ud in cr.connNodes)
                                {
                                    foreach (NodeMapping nm in ud.userMappings)
                                    {
                                        if (nm.incomingAddr.Equals(deadAddr) || nm.outcomingAddr.Equals(deadAddr))
                                        {
                                            var conn = from c in toRestoreConns where c.connId == cr.connId select c;

                                            if(!conn.Any())
                                                toRestoreConns.Add(cr);
                                        }
                                    }
                                }
                            }

                            /*try
                            {
                                foreach (ConnectionRequest cr in toRestoreConns)
                                {
                                    foreach (UserData us in cr.connNodes)
                                    {
                                        foreach (NodeMapping nm in us.userMappings)
                                        {
                                            try
                                            {
                                                string msg = "DEL_MAPPING " + nm.incomingAddr + " " + nm.incomingVP + " " + nm.incomingVC + " " + nm.outcomingAddr + " " + nm.outcomingVP + " " + nm.outcomingVC;
                                                SPacket pck = new SPacket(myAddr.ToString(), us.userAddr.ToString(), msg);
                                                whatToSendQueue.Enqueue(pck);

                                                deleteVirtualConnection(us, nm.outcomingVP, nm.outcomingVC, nm.outcomingAddr);
                                            }
                                            catch
                                            {
                                                SetText("Error sending DEL mapping in DEAD section");
                                            }
                                        }
                                    }

                                    try
                                    {
                                        string secParam = null;

                                        if(cr.outNodeAddr == "-")
                                        {
                                            secParam = cr.srcAddr;
                                        }
                                        else
                                        {
                                            secParam = cr.inNodeAddr;
                                        }

                                        SPacket pck;
                                        if (cr.prevCCAddr == NCCAddr.ToString())
                                        {
                                           // SPacket pck = new SPacket(myAddr.ToString(), myRCAddr.ToString(), "REQ_ROUTE " + cr.srcAddr + " " + secParam);
                                            pck = new SPacket(cr.prevCCAddr, myAddr.ToString(), "REQ_CONN " + cr.srcAddr + " " + cr.destAddr + " " + cr.connId);
                                        }else{
                                            pck = new SPacket(myAddr.ToString(), cr.prevCCAddr, "REQ_CONN " + cr.connId + " " + cr.outNodeAddr + " " +
                                                cr.outVP + " " + cr.outVC + " " + cr.destAddr);
                                        }
                                        whatToSendQueue.Enqueue(pck);

                                    }
                                    catch
                                    {
                                        SetText("Error whilst sending request to RC for restoring in-domain route");
                                    }
                                }
                            }
                            catch
                            {
                                SetText("Error whilst disconnecting connection");
                            }
                            */

                            try
                            {
                                foreach (ConnectionRequest cr in toRestoreConns)
                                {
                                    try
                                    {
                                        string msg = null;

                                        if(cr.prevCCAddr == "1.0.2")
                                        {
                                            msg = "REQ_CONN " + cr.srcAddr + " " + cr.destAddr + " " + cr.connId;
                                        }
                                        else
                                        {
                                            msg = "REQ_CONN " + cr.connId + " " + cr.incomingAddr + " " + cr.srcAddr + " " + cr.inVP + " " + cr.inVC + " " + cr.destAddr;
                                        }

                                        SPacket pck = new SPacket(cr.prevCCAddr, myAddr.ToString(), msg);
                                        whatToSendQueue.Enqueue(pck);

                                    }
                                    catch
                                    {
                                        SetText("Error sending DEL mapping in DEAD section");
                                    }
                                }
                            }
                            catch
                            {
                                SetText("Error whilst connection restoration");
                            }

                            //SetText("");

                            //DISCONNECT SASIEDNIE WEZLY ZMAPOWANE

                            //SPacket pck = new SPacket(myAddr.ToString(), "0.0.2", "REQ_CONN );
                            //whatToSendQueue.Enqueue(pck);
                        }
                        /*else if (_msgList[0] == "REQ_SRC")
                        {
                            int id = Convert.ToInt32(_msgList[1]);

                            var conn = from c in myConnections where c.connId == id select c;

                            if(conn.Any()){
                                foreach(var c in conn)
                                {
                                    SPacket pck = new SPacket(myAddr.ToString(), _senderAddr.ToString(), "MY_SRC " + c.srcAddr);
                                    whatToSendQueue.Enqueue(pck);
                                }
                            }
                        }*/
                    }
                }
                catch
                {
                    SetText("Coś poszło nie tak");
                }
            }
        }
        /// <summary>
        /// Shows the detail.
        /// </summary>
        /// <param name="connectionRequestId">The connection request identifier.</param>
        /// <param name="connectionOpportunityId">The connectionOpportunity id.</param>
        public void ShowDetail( int connectionRequestId, int? connectionOpportunityId )
        {
            bool editAllowed = UserCanEdit;

            // autoexpand the person picker if this is an add
            this.Page.ClientScript.RegisterStartupScript(
                this.GetType(),
                "StartupScript", @"Sys.Application.add_load(function () {

                // if the person picker is empty then open it for quick entry
                var personPicker = $('.js-authorizedperson');
                var currentPerson = personPicker.find('.picker-selectedperson').html();
                if (currentPerson != null && currentPerson.length == 0) {
                    $(personPicker).find('a.picker-label').trigger('click');
                }

            });", true );

            using ( var rockContext = new RockContext() )
            {
                var connectionOpportunityService = new ConnectionOpportunityService( rockContext );
                var connectionRequestService = new ConnectionRequestService( rockContext );
                var connectionStatusService = new ConnectionStatusService( rockContext );

                ConnectionOpportunity connectionOpportunity = null;
                ConnectionRequest connectionRequest = null;

                if ( connectionRequestId > 0 )
                {
                    connectionRequest = new ConnectionRequestService( rockContext ).Get( connectionRequestId );
                }

                if ( connectionRequest == null )
                {
                    connectionOpportunity = connectionOpportunityService.Get( connectionOpportunityId.Value );
                    if ( connectionOpportunity != null )
                    {
                        var connectionStatus = connectionStatusService
                            .Queryable()
                            .Where( s =>
                                s.ConnectionTypeId == connectionOpportunity.ConnectionTypeId &&
                                s.IsDefault )
                            .FirstOrDefault();

                        if ( connectionStatus != null )
                        {
                            connectionRequest = new ConnectionRequest();
                            connectionRequest.ConnectionOpportunity = connectionOpportunity;
                            connectionRequest.ConnectionOpportunityId = connectionOpportunity.Id;
                            connectionRequest.ConnectionState = ConnectionState.Active;
                            connectionRequest.ConnectionStatus = connectionStatus;
                            connectionRequest.ConnectionStatusId = connectionStatus.Id;

                            int? campusId = GetUserPreference( CAMPUS_SETTING ).AsIntegerOrNull();
                            if ( campusId.HasValue )
                            {
                                connectionRequest.CampusId = campusId.Value;
                            }
                        }
                    }
                }
                else
                {
                    connectionOpportunity = connectionRequest.ConnectionOpportunity;
                }

                if ( connectionOpportunity != null && connectionRequest != null )
                {
                    hfConnectionOpportunityId.Value = connectionRequest.ConnectionOpportunityId.ToString();
                    hfConnectionRequestId.Value = connectionRequest.Id.ToString();
                    lConnectionOpportunityIconHtml.Text = string.Format( "<i class='{0}' ></i>", connectionOpportunity.IconCssClass );

                    pnlReadDetails.Visible = true;

                    if ( connectionRequest.PersonAlias != null && connectionRequest.PersonAlias.Person != null )
                    {
                        lTitle.Text = connectionRequest.PersonAlias.Person.FullName.FormatAsHtmlTitle();
                    }
                    else
                    {
                        lTitle.Text = String.Format( "New {0} Connection Request", connectionOpportunity.Name );
                    }

                    // Only users that have Edit rights to block, or edit rights to the opportunity
                    if ( !editAllowed )
                    {
                        editAllowed = connectionRequest.IsAuthorized( Authorization.EDIT, CurrentPerson );
                    }

                    // Grants edit access to those in the opportunity's connector groups
                    if ( !editAllowed && CurrentPersonId.HasValue )
                    {
                        // Grant edit access to any of those in a non campus-specific connector group
                        editAllowed = connectionOpportunity.ConnectionOpportunityConnectorGroups
                            .Any( g =>
                                !g.CampusId.HasValue &&
                                g.ConnectorGroup != null &&
                                g.ConnectorGroup.Members.Any( m => m.PersonId == CurrentPersonId ) );

                        if ( !editAllowed )
                        {
                            //If this is a new request, grant edit access to any connector group. Otherwise, match the request's campus to the corresponding campus-specific connector group
                            foreach ( var groupCampus in connectionOpportunity
                                .ConnectionOpportunityConnectorGroups
                                .Where( g =>
                                    ( connectionRequest.Id == 0 || ( connectionRequest.CampusId.HasValue && g.CampusId == connectionRequest.CampusId.Value ) ) &&
                                    g.ConnectorGroup != null &&
                                    g.ConnectorGroup.Members.Any( m => m.PersonId == CurrentPersonId ) ) )
                            {
                                editAllowed = true;
                                break;
                            }
                        }
                    }

                    lbConnect.Visible = editAllowed;
                    lbEdit.Visible = editAllowed;
                    lbTransfer.Visible = editAllowed;
                    gConnectionRequestActivities.IsDeleteEnabled = editAllowed;
                    gConnectionRequestActivities.Actions.ShowAdd = editAllowed;

                    if ( !editAllowed )
                    {
                        // User is not authorized
                        nbEditModeMessage.Text = EditModeMessage.ReadOnlyEditActionNotAllowed( ConnectionRequest.FriendlyTypeName );
                        ShowReadonlyDetails( connectionRequest );
                    }
                    else
                    {
                        nbEditModeMessage.Text = string.Empty;
                        if ( connectionRequest.Id > 0 )
                        {
                            ShowReadonlyDetails( connectionRequest );
                        }
                        else
                        {
                            ShowEditDetails( connectionRequest, rockContext );
                        }
                    }
                }
            }
        }
Beispiel #53
0
        /// <summary>
        /// Handles the Click event of the btnEdit control.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="EventArgs" /> instance containing the event data.</param>
        protected void btnConnect_Click( object sender, EventArgs e )
        {
            using ( var rockContext = new RockContext() )
            {
                var opportunityService = new ConnectionOpportunityService( rockContext );
                var connectionRequestService = new ConnectionRequestService( rockContext );
                var personService = new PersonService( rockContext );

                // Get the opportunity and default status
                int opportunityId = PageParameter( "OpportunityId" ).AsInteger();
                var opportunity = opportunityService
                    .Queryable()
                    .Where( o => o.Id == opportunityId )
                    .FirstOrDefault();

                int defaultStatusId = opportunity.ConnectionType.ConnectionStatuses
                    .Where( s => s.IsDefault )
                    .Select( s => s.Id )
                    .FirstOrDefault();

                // If opportunity is valid and has a default status
                if ( opportunity != null && defaultStatusId > 0 )
                {
                    Person person = null;

                    string firstName = tbFirstName.Text.Trim();
                    string lastName = tbLastName.Text.Trim();
                    string email = tbEmail.Text.Trim();
                    int? campudId = cpCampus.SelectedCampusId;

                    if ( CurrentPerson != null &&
                        CurrentPerson.LastName.Equals( lastName, StringComparison.OrdinalIgnoreCase ) &&
                        CurrentPerson.NickName.Equals( firstName, StringComparison.OrdinalIgnoreCase ) &&
                        CurrentPerson.Email.Equals( email, StringComparison.OrdinalIgnoreCase ) )
                    {
                        // If the name and email entered are the same as current person (wasn't changed), use the current person
                        person = personService.Get( CurrentPerson.Id );
                    }

                    else
                    {
                        // Try to find matching person
                        var personMatches = personService.GetByMatch( firstName, lastName, email );
                        if ( personMatches.Count() == 1 )
                        {
                            // If one person with same name and email address exists, use that person
                            person = personMatches.First();
                        }
                    }

                    // If person was not found, create a new one
                    if ( person == null )
                    {
                        // If a match was not found, create a new person
                        var dvcConnectionStatus = DefinedValueCache.Read( GetAttributeValue( "ConnectionStatus" ).AsGuid() );
                        var dvcRecordStatus = DefinedValueCache.Read( GetAttributeValue( "RecordStatus" ).AsGuid() );

                        person = new Person();
                        person.FirstName = firstName;
                        person.LastName = lastName;
                        person.IsEmailActive = true;
                        person.Email = email;
                        person.EmailPreference = EmailPreference.EmailAllowed;
                        person.RecordTypeValueId = DefinedValueCache.Read( Rock.SystemGuid.DefinedValue.PERSON_RECORD_TYPE_PERSON.AsGuid() ).Id;
                        if ( dvcConnectionStatus != null )
                        {
                            person.ConnectionStatusValueId = dvcConnectionStatus.Id;
                        }
                        if ( dvcRecordStatus != null )
                        {
                            person.RecordStatusValueId = dvcRecordStatus.Id;
                        }

                        PersonService.SaveNewPerson( person, rockContext, campudId, false );
                        person = personService.Get( person.Id );
                    }

                    // If there is a valid person with a primary alias, continue
                    if ( person != null && person.PrimaryAliasId.HasValue )
                    {
                        var changes = new List<string>();

                        if ( pnHome.Visible )
                        {
                            SavePhone( pnHome, person, _homePhone.Guid, changes );
                        }

                        if ( pnMobile.Visible )
                        {
                            SavePhone( pnMobile, person, _cellPhone.Guid, changes );
                        }

                        if ( changes.Any() )
                        {
                            HistoryService.SaveChanges(
                                rockContext,
                                typeof( Person ),
                                Rock.SystemGuid.Category.HISTORY_PERSON_DEMOGRAPHIC_CHANGES.AsGuid(),
                                person.Id,
                                changes );
                        }

                        // Now that we have a person, we can create the connection request
                        var connectionRequest = new ConnectionRequest();
                        connectionRequest.PersonAliasId = person.PrimaryAliasId.Value;
                        connectionRequest.Comments = tbComments.Text.Trim();
                        connectionRequest.ConnectionOpportunityId = opportunity.Id;
                        connectionRequest.ConnectionState = ConnectionState.Active;
                        connectionRequest.ConnectionStatusId = defaultStatusId;
                        connectionRequest.CampusId = campudId;

                        if ( !connectionRequest.IsValid )
                        {
                            // Controls will show warnings
                            return;
                        }

                        connectionRequestService.Add( connectionRequest );
                        rockContext.SaveChanges();

                        var mergeFields = new Dictionary<string, object>();
                        mergeFields.Add( "Opportunity", new ConnectionOpportunityService( rockContext ).Get( PageParameter( "OpportunityId" ).AsInteger() ) );
                        mergeFields.Add( "CurrentPerson", CurrentPerson );
                        mergeFields.Add( "Person", person );

                        lResponseMessage.Text = GetAttributeValue( "LavaTemplate" ).ResolveMergeFields( mergeFields );
                        lResponseMessage.Visible = true;

                        pnlSignup.Visible = false;
                    }
                }
            }
        }
        protected void ddlPlacementGroup_SelectedIndexChanged( object sender, EventArgs e )
        {
            using ( var rockContext = new RockContext() )
            {
                var connectionRequestService = new ConnectionRequestService( rockContext );
                var connectionRequest = connectionRequestService.Get( hfConnectionRequestId.ValueAsInt() );
                if ( connectionRequest == null )
                {
                    connectionRequest = new ConnectionRequest();
                    var connectionOpportunity = new ConnectionOpportunityService( rockContext ).Get( hfConnectionOpportunityId.ValueAsInt() );
                    if ( connectionOpportunity != null )
                    {
                        connectionRequest.ConnectionOpportunity = connectionOpportunity;
                        connectionRequest.ConnectionOpportunityId = connectionOpportunity.Id;
                    }
                }

                RebindGroupRole( connectionRequest, rockContext );

            }
        }
        /// <summary>
        /// Executes the specified workflow.
        /// </summary>
        /// <param name="rockContext">The rock context.</param>
        /// <param name="action">The action.</param>
        /// <param name="entity">The entity.</param>
        /// <param name="errorMessages">The error messages.</param>
        /// <returns></returns>
        public override bool Execute( RockContext rockContext, WorkflowAction action, Object entity, out List<string> errorMessages )
        {
            errorMessages = new List<string>();

            // Get the person
            PersonAlias personAlias = null;
            Guid personAliasGuid = action.GetWorklowAttributeValue(GetAttributeValue( action, "PersonAttribute" ).AsGuid()).AsGuid();
            personAlias = new PersonAliasService( rockContext ).Get( personAliasGuid );
            if ( personAlias == null )
            {
                errorMessages.Add( "Invalid Person Attribute or Value!" );
                return false;
            }

            // Get the opportunity
            ConnectionOpportunity opportunity = null;
            Guid opportunityTypeGuid = action.GetWorklowAttributeValue( GetAttributeValue( action, "ConnectionOpportunityAttribute" ).AsGuid() ).AsGuid();
            opportunity = new ConnectionOpportunityService( rockContext ).Get( opportunityTypeGuid );
            if ( opportunity == null )
            {
                errorMessages.Add( "Invalid Connection Opportunity Attribute or Value!" );
                return false;
            }

            // Get connection status
            ConnectionStatus status = null;
            Guid? connectionStatusGuid = null;
            Guid? connectionStatusAttributeGuid = GetAttributeValue( action, "ConnectionStatusAttribute" ).AsGuidOrNull();
            if ( connectionStatusAttributeGuid.HasValue )
            {
                connectionStatusGuid = action.GetWorklowAttributeValue( connectionStatusAttributeGuid.Value ).AsGuidOrNull();
                if ( connectionStatusGuid.HasValue )
                {
                    status = opportunity.ConnectionType.ConnectionStatuses
                        .Where( s => s.Guid.Equals( connectionStatusGuid.Value ) )
                        .FirstOrDefault();
                }
            }
            if ( status == null )
            {
                connectionStatusGuid = GetAttributeValue( action, "ConnectionStatus" ).AsGuidOrNull();
                if ( connectionStatusGuid.HasValue )
                {
                    status = opportunity.ConnectionType.ConnectionStatuses
                        .Where( s => s.Guid.Equals( connectionStatusGuid.Value ) )
                        .FirstOrDefault();
                }
            }
            if ( status == null )
            {
                status = opportunity.ConnectionType.ConnectionStatuses
                    .Where( s => s.IsDefault )
                    .FirstOrDefault();
            }

            // Get Campus
            int? campusId = null;
            Guid? campusAttributeGuid = GetAttributeValue( action, "CampusAttribute" ).AsGuidOrNull();
            if ( campusAttributeGuid.HasValue )
            {
                Guid? campusGuid = action.GetWorklowAttributeValue( campusAttributeGuid.Value ).AsGuidOrNull();
                if ( campusGuid.HasValue )
                {
                    var campus = CampusCache.Read( campusGuid.Value );
                    if ( campus != null )
                    {
                        campusId = campus.Id;
                    }
                }
            }

            // Get the Comment
            String comment = action.GetWorklowAttributeValue(GetAttributeValue(action, "ConnectionCommentAttribute").AsGuid());

            var connectionRequestService = new ConnectionRequestService( rockContext );

            var connectionRequest = new ConnectionRequest();
            connectionRequest.PersonAliasId = personAlias.Id;
            connectionRequest.ConnectionOpportunityId = opportunity.Id;
            connectionRequest.ConnectionState = ConnectionState.Active;
            connectionRequest.ConnectionStatusId = status.Id;
            connectionRequest.CampusId = campusId;
            connectionRequest.ConnectorPersonAliasId = opportunity.GetDefaultConnectorPersonAliasId( campusId );
            connectionRequest.Comments = comment;

            connectionRequestService.Add( connectionRequest );
            rockContext.SaveChanges();

            // If request attribute was specified, requery the request and set the attribute's value
            Guid? connectionRequestAttributeGuid = GetAttributeValue( action, "ConnectionRequestAttribute" ).AsGuidOrNull();
            if ( connectionRequestAttributeGuid.HasValue )
            {
                connectionRequest = connectionRequestService.Get( connectionRequest.Id );
                if ( connectionRequest != null )
                {
                    SetWorkflowAttributeValue( action, connectionRequestAttributeGuid.Value, connectionRequest.Guid.ToString() );
                }
            }

            return true;
        }
Beispiel #56
0
        /// <summary>
        /// Shows the edit details.
        /// </summary>
        /// <param name="_connectionRequest">The _connection request.</param>
        private void ShowEditDetails( ConnectionRequest connectionRequest )
        {
            btnSave.Visible = true;
            pnlReadDetails.Visible = false;
            wpConnectionRequestActivities.Visible = false;
            wpConnectionRequestWorkflow.Visible = false;
            pnlEditDetails.Visible = true;

            tbComments.Text = connectionRequest.Comments.ScrubHtmlAndConvertCrLfToBr();

            ddlAssignedGroup.Items.Clear();
            ddlAssignedGroup.Items.Add( new ListItem( String.Empty, String.Empty ) );

            var opportunityGroupIds = connectionRequest.ConnectionOpportunity.ConnectionOpportunityGroups.Select( o => o.Id ).ToList();

            var groups = connectionRequest.ConnectionOpportunity.ConnectionOpportunityGroups
                                .Where( g =>
                                    g.Group.Campus == null ||
                                    g.Group.CampusId == connectionRequest.CampusId ||
                                    g.Group.Id == connectionRequest.AssignedGroupId
                                )
                                .Select( g => g.Group);

            foreach ( var g in groups )
            {
                ddlAssignedGroup.Items.Add( new ListItem( String.Format( "{0} ({1})", g.Name, g.Campus != null ? g.Campus.Name : "No Campus" ), g.Id.ToString().ToUpper() ) );
            }

            // Get the connectors from the connector groups
            var connectors = new Dictionary<int, Person>();
            if ( connectionRequest.ConnectionOpportunity != null &&
                connectionRequest.ConnectionOpportunity.ConnectionType != null )
            {
                    connectionRequest.ConnectionOpportunity.ConnectionOpportunityConnectorGroups
                        .SelectMany( g => g.ConnectorGroup.Members )
                        .Select( m => m.Person )
                        .ToList()
                        .ForEach( p => connectors.AddOrIgnore( p.Id, p ) );
            }

            // Make sure the current connector is a possible connector
            if ( connectionRequest.ConnectorPersonAlias != null && connectionRequest.ConnectorPersonAlias.Person != null )
            {
                connectors.AddOrIgnore( connectionRequest.ConnectorPersonAlias.Person.Id, connectionRequest.ConnectorPersonAlias.Person );
            }

            // Add the current person as possible connector
            if ( CurrentPerson != null )
            {
                connectors.AddOrIgnore( CurrentPerson.Id, CurrentPerson );
            }

            // Add connectors to dropdown list
            ddlConnectorEdit.Items.Clear();
            ddlConnectorEdit.Items.Add( new ListItem( "", "" ) );
            connectors
                .ToList()
                .OrderBy( p => p.Value.LastName )
                .ThenBy( p => p.Value.NickName )
                .ToList()
                .ForEach( c =>
                    ddlConnectorEdit.Items.Add( new ListItem( c.Value.FullName, c.Key.ToString() ) ) );

            ddlConnectorEdit.SetValue(
                connectionRequest != null && connectionRequest.ConnectorPersonAlias != null ?
                connectionRequest.ConnectorPersonAlias.PersonId : CurrentPersonAliasId ?? 0 );

            if ( connectionRequest.PersonAlias != null )
            {
                ppRequestor.SetValue( connectionRequest.PersonAlias.Person );
                ppRequestor.Enabled = false;
            }
            else
            {
                ppRequestor.Enabled = true;
            }

            rblStatus.SetValue( connectionRequest.ConnectionStatus.Id );
            rblStatus.Enabled = true;
            rblStatus.Label = "Status";

            if ( connectionRequest.AssignedGroupId != null )
            {
                try
                {
                    ddlAssignedGroup.SelectedValue = connectionRequest.AssignedGroupId.ToString();
                }
                catch
                {

                }
            }
            ddlAssignedGroup.DataBind();

            ddlCampus.Items.Clear();
            foreach ( var campus in CampusCache.All() )
            {
                ddlCampus.Items.Add( new ListItem( campus.Name, campus.Id.ToString().ToUpper() ) );
            }
            if ( connectionRequest.CampusId != null )
            {
                ddlCampus.SelectedValue = connectionRequest.CampusId.ToString();
            }
            ddlCampus.DataBind();

            rblState.BindToEnum<ConnectionState>();
            if ( !connectionRequest.ConnectionOpportunity.ConnectionType.EnableFutureFollowup )
            {
                rblState.Items.RemoveAt( 2 );
            }

            rblState.SetValue( connectionRequest.ConnectionState.ConvertToInt().ToString() );

            rblStatus.Items.Clear();
            foreach ( var status in connectionRequest.ConnectionOpportunity.ConnectionType.ConnectionStatuses )
            {
                rblStatus.Items.Add( new ListItem( status.Name, status.Id.ToString().ToUpper() ) );
            }

            rblStatus.SelectedValue = connectionRequest.ConnectionStatusId.ToString();

            if ( connectionRequest.ConnectionState == ConnectionState.FutureFollowUp )
            {
                dpFollowUp.Visible = true;
                if ( connectionRequest.FollowupDate != null )
                {
                    dpFollowUp.SelectedDate = connectionRequest.FollowupDate;
                }
                else
                {
                    dpFollowUp.Visible = false;
                }
            }
        }
Beispiel #57
0
        public void SendConnectionRequest()
        {
            var packet = new ConnectionRequest()
            {
                clientGuid = _clientGuid,
                timestamp = DateTime.UtcNow.Ticks,
                doSecurity = 0,
            };

            SendPackage(packet);
        }