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(); }
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; }
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()); } }
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))); } }
/// <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(); }
private void ListenerOnConnectionRequestEvent(ConnectionRequest request) { if (ConnectionRequestEvent != null) { ConnectionRequestEvent(request); return; } if (AcceptClients) { request.AcceptIfKey(Password); } else { request.Reject(); } }
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); } }
/// <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)); }
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"); }
/// <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]); }
/// <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); } }
/// <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; } }
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(); })); }
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); }
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))); }
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(); } } } }
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(); } }
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); } }
/// <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 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); }
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); }
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))); }
/// <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 ); }
/// <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); }
/// <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 ); }
public void SendConnectionRequest() { var packet = new ConnectionRequest() { }; SendPackage(packet); }
/// <summary> /// Adds the connections requests to the system from the given XML element. /// </summary> /// <example> /// <connections> /// <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" /> /// </connections> /// </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 ); } } }
/// <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 ); }
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 ); } } } } }
/// <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; }
/// <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; } } }
public void SendConnectionRequest() { var packet = new ConnectionRequest() { clientGuid = _clientGuid, timestamp = DateTime.UtcNow.Ticks, doSecurity = 0, }; SendPackage(packet); }