public static HtmlString GetContactRequestButton( Context context, IContactService contactService, IContactRequestService contactRequestService, User user, string cssClasses = "") { if (contactRequestService.HasActiveContactRequest(user, context.CurrentUser)) { int requestId = contactRequestService.GetContactRequestsFromUserToUser(user, context.CurrentUser).Where(r => r.IsActive()).Select(c => c.Id).First(); return(new HtmlString( $"<button class='btn btn-outline-success request-{requestId} {cssClasses} margin-right' onclick=\"window.ZokuChat.acceptRequestButtonClick($(this), '{requestId}');\">Accept Request</button>" + $"<button class='btn btn-outline-danger request-{requestId} {cssClasses}' onclick=\"window.ZokuChat.cancelRequestButtonClick($(this), '{requestId}');\">Decline Request</button>" )); } else if (contactRequestService.HasActiveContactRequest(context.CurrentUser, user)) { return(new HtmlString($"<button class='btn btn-outline-primary {cssClasses}' disabled>Request Sent</button>")); } else { return(new HtmlString($"<button class='btn btn-outline-primary {cssClasses}' onclick=\"window.ZokuChat.sendRequestButtonClick($(this), '{user.Id}');\">Send Request</button>")); } }
public static bool CanMakeContactRequest( IContactService contactService, IContactRequestService contactRequestService, User requestor, User requested) { // Validate contactService.Should().NotBeNull(); contactRequestService.Should().NotBeNull(); requestor.Should().NotBeNull(); requested.Should().NotBeNull(); bool result; if (contactRequestService.HasActiveContactRequest(requestor, requested) || contactService.IsUserContact(requestor, requested)) { // The contact or active request already exists so return false result = false; } else { result = true; } return(result); }
public void BlockUser(User blocker, User blocked) { // Validate blocker.Should().NotBeNull(); blocked.Should().NotBeNull(); if (!IsUserBlocked(blocked, blocker)) { DateTime now = DateTime.UtcNow; if (_contactService.IsUserContact(blocker, blocked)) { // The users are contacts so delete the connection Contact contact = _contactService.GetUserContact(blocker, blocked); _contactService.DeleteContact(contact); } else { // The users are not contacts but there may be an active request, so delete if necessary if (_contactRequestService.HasActiveContactRequest(blocker, blocked)) { ContactRequest contactRequest = _contactRequestService.GetContactRequestsFromUserToUser(blocker, blocked).Where(r => r.IsActive()).First(); _contactRequestService.CancelContactRequest(blocker, contactRequest); } else if (_contactRequestService.HasActiveContactRequest(blocked, blocker)) { ContactRequest contactRequest = _contactRequestService.GetContactRequestsFromUserToUser(blocked, blocker).Where(r => r.IsActive()).First(); _contactRequestService.CancelContactRequest(blocker, contactRequest); } } // Block and save _context.BlockedUsers.Add(new BlockedUser { BlockerUID = blocker.Id, BlockedUID = blocked.Id, CreatedUID = blocker.Id, CreatedDateUtc = now, ModifiedUID = blocker.Id, ModifiedDateUtc = now }); _context.SaveChanges(); } }