public async static void RelationTypeChanged(String invited, String author, RelationStatus relationStatus) { if (OnlineUsers.TryGetValue(invited, out AccountRelationsProvider.ServiceImplementation.AccountRelationsServiceProvider provider)) { await Task.Run(() => provider?.Callback.ChangeRelationType(author, relationStatus)); } }
/// <summary> /// modify the relation between current user and other user /// </summary> /// <param name="userid">other user id</param> /// <param name="action">action to perform on the relatioin</param> /// <returns>relation's status</returns> public async Task <RelationStatus> Self_ModifyRelation(string accesstoken, long userid, RelationAction action) { FormUrlEncodedContent content = new FormUrlEncodedContent(new[] { new KeyValuePair <string, string>("action", action.ToString()) }); RelationStatus status = new RelationStatus(); try { _ResponseMessage = await _HttpClient.PostAsync(_HttpClient.BaseAddress.AbsoluteUri + "users/" + userid.ToString() + "/relationship?access_token=" + accesstoken, content); if (_ResponseMessage.IsSuccessStatusCode) { string responsestring = await _ResponseMessage.Content.ReadAsStringAsync(); status = JsonConvert.DeserializeObject <RelationStatus>(responsestring); } else { status.meta.code = int.Parse(_ResponseMessage.StatusCode.ToString()); } return(status); } catch (Exception ex) { if (_Telemetryclient != null) { _Telemetryclient.TrackException(ex); } status.meta.code = int.Parse(_ResponseMessage.StatusCode.ToString()); } return(status); }
/// <summary> /// get relation's status between current user and other user /// </summary> /// <param name="userid">other user id</param> /// <returns>relation's status between current user and other user</returns> public async Task <RelationStatus> Self_GetRelationStatus(long userid, string accesstoken) { RelationStatus status = new RelationStatus(); try { _ResponseMessage = await _HttpClient.GetAsync(_HttpClient.BaseAddress.AbsoluteUri + "users/" + userid.ToString() + "/relationship?access_token=" + accesstoken); if (_ResponseMessage.IsSuccessStatusCode) { string responsestring = await _ResponseMessage.Content.ReadAsStringAsync(); status = JsonConvert.DeserializeObject <RelationStatus>(responsestring); } else { status.meta.code = int.Parse(_ResponseMessage.StatusCode.ToString()); } return(status); } catch (Exception ex) { if (_Telemetryclient != null) { _Telemetryclient.TrackException(ex); } status.meta.code = int.Parse(_ResponseMessage.StatusCode.ToString()); } return(status); }
public OperationResult <bool> ChangeRelationType(String login, RelationStatus status) { try { return(channel.ChangeRelationType(login, status)); } catch (CommunicationException ex) { ReloadChannel(); return(new OperationResult <bool>(false, false, "Connection error")); } }
public void PreInitialize(int numberOfFactions) { _numberOfFactions = numberOfFactions; _factionRelations = new FactionRelationData[_numberOfFactions][]; for (int factionIndex = 0; factionIndex < _factionRelations.Length; factionIndex++) { _factionRelations[factionIndex] = new FactionRelationData[_numberOfFactions]; } _factionRelationStatuses = new RelationStatus[numberOfFactions][]; for (int factionIndex = 0; factionIndex < _factionRelationStatuses.Length; factionIndex++) { _factionRelationStatuses[factionIndex] = new RelationStatus[_numberOfFactions]; } }
//private long CreateConversation(int authorId, int? partnerId, String name = "name", String description = "description",ConversationType conversationType= ConversationType.Dialog ) //{ // DbMain.EFDbContext.Conversation conversation = new DbMain.EFDbContext.Conversation() // { // } //} private List <String> GetContacts(DbMain.EFDbContext.ChatEntities db, RelationStatus relation) { var user = db.Users.FirstOrDefault(x => x.Id == curUser.Id); List <String> result = new List <string>(); switch (relation) { case RelationStatus.BlockedBoth: case RelationStatus.Friendship: result = user.Contacts.Where(x => x.RelationTypeId == (int)relation).Select(x => x.User1.Login).ToList(); result.AddRange(user.Contacts1.Where(x => x.RelationTypeId == (int)relation).Select(x => x.User.Login).ToList()); break; case RelationStatus.FriendshipRequestSent: result.AddRange(user.Contacts.Where(x => x.RelationTypeId == (int)RelationStatus.FriendshipRequestSent).Select(x => x.User1.Login)); result.AddRange(user.Contacts1.Where(x => x.RelationTypeId == (int)RelationStatus.FrienshipRequestRecive).Select(x => x.User.Login)); break; case RelationStatus.FrienshipRequestRecive: result.AddRange(user.Contacts.Where(x => x.RelationTypeId == (int)RelationStatus.FrienshipRequestRecive).Select(x => x.User1.Login)); result.AddRange(user.Contacts1.Where(x => x.RelationTypeId == (int)RelationStatus.FriendshipRequestSent).Select(x => x.User.Login)); break; case RelationStatus.BlockedByMe: result.AddRange(user.Contacts.Where(x => x.RelationTypeId == (int)RelationStatus.BlockedByMe).Select(x => x.User1.Login)); result.AddRange(user.Contacts1.Where(x => x.RelationTypeId == (int)RelationStatus.BlockedByPartner).Select(x => x.User.Login)); break; case RelationStatus.BlockedByPartner: result.AddRange(user.Contacts.Where(x => x.RelationTypeId == (int)RelationStatus.BlockedByPartner).Select(x => x.User1.Login)); result.AddRange(user.Contacts1.Where(x => x.RelationTypeId == (int)RelationStatus.BlockedByMe).Select(x => x.User.Login)); break; default: break; } // if (relation == RelationStatus.BlockedByMe || relation == RelationStatus.FriendshipRequestSent) // { // result.AddRange(user.Contacts.Where(x => x.RelationTypeId == (int)relation).Select(x => x.User1.Login)); // result.AddRange(user.Contacts1.Where(x => x.RelationTypeId == (int)relation).Select(x => x.User1.Login)) // } // result = user.Contacts.Where(x => x.RelationTypeId == (int)relation).Select(x => x.User1.Login).ToList(); // result.AddRange(user.Contacts1.Where(x => x.RelationTypeId == (int)relation).Select(x => x.User.Login).ToList()); return(result); // var convers = db.Contacts.Where(x => (x.AdderId == curUser.Id || x.InvitedId == curUser.Id) && (RelationStatus)x.RelationTypeId == relation).ToList(); // var friends = convers.Select(x => x.AdderId == curUser.Id ? x.User1.Login : x.User.Login).ToList(); }
//public OperationResult<List<User>> GetFriends() //{ // try // { // return channel.GetFriends(); // } // catch (CommunicationException ex) // { // ReloadChannel(); // var res = channel.GetFriends(); // if (!res.IsOk) // { // res = new OperationResult<List<User>>(new List<User>(), false, ex.Message); // } // return res; // } //} public OperationResult <List <User> > GetUsersByRelationStatus(RelationStatus relationStatus) { try { return(channel.GetUsersByRelationStatus(relationStatus)); } catch (CommunicationException ex) { ReloadChannel(); var res = channel.GetUsersByRelationStatus(relationStatus); if (!res.IsOk) { res = new OperationResult <List <User> >(new List <User>(), false, ex.Message); } return(res); } }
public OperationResult <List <User> > GetUsersByRelationStatus(RelationStatus relationStatus) { Console.WriteLine($"AccountUpdateServiceprovider GetUsersByRelationStatus. Login {curUser.Login}, staus - {relationStatus} "); try { using (db = new DbMain.EFDbContext.ChatEntities()) { List <User> res = new List <User>(); List <String> contactsLogins; contactsLogins = GetContacts(db, relationStatus); // contactsLogins.AddRange(GetUsers(db, relationStatus)); switch (relationStatus) { case RelationStatus.Friendship: res = GetFriends(db, contactsLogins); break; case RelationStatus.FriendshipRequestSent: res = GetFriendshipRequestSendUsers(db, contactsLogins); break; case RelationStatus.FrienshipRequestRecive: res = GetFriendshipRequestReceiveUsers(db, contactsLogins); break; case RelationStatus.BlockedByMe: res = GetBlockedUsers(db, contactsLogins); break; } return(new OperationResult <List <User> >(res)); } } catch (Exception ex) { return(new OperationResult <List <User> >(new List <User>(), false, "Internal error. Try again later")); } }
public void ChangeRelationType(string login, RelationStatus relationStatus) { var friend = _callbackModel.Friends.FirstOrDefault(x => x.Login == login); // var notAllowedFriend = _callbackModel.FriendshipNotAllowed.FirstOrDefault(x => x.Login == login); var requestReceive = _callbackModel.FriendshipRequestReceive.FirstOrDefault(x => x.Login == login); var requestSent = _callbackModel.FriendshipRequestSend.FirstOrDefault(x => x.Login == login); if (friend != null) { friend.RelationStatus = relationStatus; } if (requestReceive != null) { requestReceive.RelationStatus = relationStatus; } if (requestSent != null) { requestSent.RelationStatus = relationStatus; } switch (relationStatus) { case RelationStatus.None: if (requestReceive != null) { // _callbackModel.FriendshipNotAllowed.Remove(notAllowedFriend); _callbackModel.FriendshipRequestReceive.Remove(requestReceive); } if (requestSent != null) { _callbackModel.FriendshipRequestSend.Remove(requestSent); } break; case RelationStatus.Friendship: if (requestReceive != null) { _callbackModel.Friends.Add(requestReceive); // _callbackModel.FriendshipNotAllowed.Remove(notAllowedFriend); _callbackModel.FriendshipRequestReceive.Remove(requestReceive); } else if (requestSent != null) { _callbackModel.Friends.Add(requestSent); _callbackModel.FriendshipRequestSend.Remove(requestSent); } break; case RelationStatus.FriendshipRequestSent: if (friend != null) { _callbackModel.Friends.Remove(friend); _callbackModel.FriendshipRequestSend.Add(friend); } break; case RelationStatus.FrienshipRequestRecive: if (friend != null) { _callbackModel.Friends.Remove(friend); // _callbackModel.FriendshipNotAllowed.Add(friend); _callbackModel.FriendshipRequestReceive.Add(friend); } break; case RelationStatus.BlockedByMe: case RelationStatus.BlockedByPartner: case RelationStatus.BlockedBoth: if (friend != null) { _callbackModel.Friends.Remove(friend); } else if (requestSent != null) { // _callbackModel.FriendshipNotAllowed.Remove(notAllowedFriend); _callbackModel.FriendshipRequestSend.Remove(requestSent); } else if (requestReceive != null) { // _callbackModel.FriendshipNotAllowed.Remove(notAllowedFriend); _callbackModel.FriendshipRequestReceive.Remove(requestReceive); } break; default: break; } }
public static string ToRelationStatusName(this RelationStatus type) { return(RelationStatusNames[type.GetHashCode()]); }
public Relations(Civilisation target) { Target = target; Status = RelationStatus.Unknown; }
private void CreateContactAndDialog(DbMain.EFDbContext.ChatEntities db, out DbMain.EFDbContext.Contact contact, DbMain.EFDbContext.User user, RelationStatus status) { contact = new DbMain.EFDbContext.Contact() { AdderId = curUser.Id, InvitedId = user.Id, RelationTypeId = (int)status }; DbMain.EFDbContext.Conversation conversation = new DbMain.EFDbContext.Conversation() { AuthorId = curUser.Id, PartnerId = user.Id, Name = $"Dialog: {curUser.Name} - {user.Name}", ConversationTypeId = (int)ConversationType.Dialog }; contact.Conversation = conversation; DbMain.EFDbContext.ConversationMember member = new DbMain.EFDbContext.ConversationMember() { MemberId = curUser.Id, Conversation = conversation, MemberStatusId = (int)ConversationMemberStatus.Admin, }; DbMain.EFDbContext.ConversationMember member2 = new DbMain.EFDbContext.ConversationMember() { MemberId = user.Id, Conversation = conversation, MemberStatusId = (int)(status != RelationStatus.BlockedByMe ? ConversationMemberStatus.Admin : ConversationMemberStatus.Blocked), AddedId = curUser.Id }; db.ConversationMembers.Add(member); db.ConversationMembers.Add(member2); db.Conversations.Add(conversation); db.Contacts.Add(contact); }
public OperationResult <bool> ChangeRelationType(string login, RelationStatus status) { Console.WriteLine("AccountUpdateServiceprovider ChangeRelationType"); try { using (db = new DbMain.EFDbContext.ChatEntities()) { RelationStatus statusForPartner = status; if (login == curUser.Login) { return(new OperationResult <bool>(false, false, "Login error")); } var user = db.Users.FirstOrDefault(x => x.Login == login); if (user == null) { return(new OperationResult <bool>(false, false, "User not found")); } var contact = db.Contacts.FirstOrDefault(x => (x.AdderId == curUser.Id && x.InvitedId == user.Id) || (x.InvitedId == curUser.Id && x.AdderId == user.Id)); if (contact != null && contact.RelationTypeId == (int)status) { return(new OperationResult <bool>(false, false, "Status is the same")); } if (contact == null) { CreateContactAndDialog(db, out contact, user, status); } else { var convMember = user.ConversationMembers.FirstOrDefault(x => x.Conversation == contact.Conversation); switch (status) { case RelationStatus.None: convMember.MemberStatusId = (int)ConversationMemberStatus.None; contact.RelationTypeId = (int)status; break; case RelationStatus.Friendship: convMember.MemberStatusId = (int)ConversationMemberStatus.Admin; contact.RelationTypeId = (int)status; break; case RelationStatus.FrienshipRequestRecive: if (contact.AdderId == curUser.Id) { contact.RelationTypeId = (int)status; } else { contact.RelationTypeId = (int)RelationStatus.FriendshipRequestSent; } statusForPartner = RelationStatus.FriendshipRequestSent; break; case RelationStatus.BlockedByMe: if (contact.AdderId == curUser.Id && (RelationStatus)contact.RelationTypeId != RelationStatus.BlockedByPartner) { contact.RelationTypeId = (int)status; statusForPartner = RelationStatus.BlockedByPartner; } else if (contact.AdderId == curUser.Id && contact.RelationTypeId == (int)RelationStatus.BlockedByPartner || contact.InvitedId == curUser.Id && contact.RelationTypeId == (int)RelationStatus.BlockedByMe) { contact.RelationTypeId = (int)RelationStatus.BlockedBoth; statusForPartner = RelationStatus.BlockedBoth; } else if (contact.InvitedId == curUser.Id && (RelationStatus)contact.RelationTypeId != RelationStatus.BlockedByMe) { contact.RelationTypeId = (int)RelationStatus.BlockedByPartner; statusForPartner = RelationStatus.BlockedByPartner; } convMember.MemberStatusId = (int)ConversationMemberStatus.Blocked; break; } } var res = db.SaveChanges(); if (res < 1) { return(new OperationResult <bool>(false, false, "Faild")); } if (status == RelationStatus.Friendship) { UserRelationsMain.UserNetworkStatusChange(new List <string>() { curUser.Login }, user.Login, (NetworkStatus)user.NetworkStatusId); UserRelationsMain.UserNetworkStatusChange(new List <string>() { user.Login }, curUser.Login, (NetworkStatus)curUser.NetworkStatusId); } else { UserRelationsMain.UserNetworkStatusChange(new List <string>() { curUser.Login }, user.Login, NetworkStatus.Unknown); UserRelationsMain.UserNetworkStatusChange(new List <string>() { user.Login }, curUser.Login, NetworkStatus.Unknown); } UserRelationsMain.RelationTypeChanged(user.Login, curUser.Login, statusForPartner); return(new OperationResult <bool>(true)); } } catch (Exception ex) { return(new OperationResult <bool>(false, false, "Internal error. Try again later")); } }
public OperationResult <User> FriendshipRequest(string body, string userLogin) { try { using (db = new DbMain.EFDbContext.ChatEntities()) { var invited = db.Users.FirstOrDefault(x => x.Login == userLogin); if (userLogin == curUser.Login || invited == null) { return(new OperationResult <User>(null, false, "Login error")); } var contact = db.Contacts.FirstOrDefault(x => (x.InvitedId == curUser.Id && x.AdderId == invited.Id) || (x.InvitedId == invited.Id && x.AdderId == curUser.Id)); if (contact != null) { RelationStatus status = (RelationStatus)contact.RelationTypeId; bool IsInitiator = contact.AdderId == curUser.Id; String message = String.Empty; switch (status) { case RelationStatus.Friendship: message = "Friendship already confirmed"; break; case RelationStatus.FriendshipRequestSent: message = IsInitiator ? "Friendship Request already Sent" : "Frienship Request already Recive"; break; case RelationStatus.FrienshipRequestRecive: message = IsInitiator ? "Frienship Request already Recive" : "Friendship Request already Sent"; break; case RelationStatus.BlockedByMe: message = IsInitiator ? "You blocked partner" : "You are Blocked By Partner"; break; case RelationStatus.BlockedByPartner: message = IsInitiator ? "you are Blocked By Partner" : "You blocked partner"; break; case RelationStatus.BlockedBoth: message = "Blocked Both"; break; default: break; } if (!String.IsNullOrEmpty(message)) { return(new OperationResult <User>(null, false, message)); } } else { CreateContactAndDialog(db, out contact, invited, RelationStatus.FriendshipRequestSent); } if (contact.AdderId == curUser.Id) { contact.RelationTypeId = (int)RelationStatus.FriendshipRequestSent; } else { contact.RelationTypeId = (int)RelationStatus.FrienshipRequestRecive; } if (db.SaveChanges() > 0) { UserRelationsMain.SendFrienshipRequest(invited.Login, new User() { ConversationId = contact.ConversationId, Icon = curUser.Icon, Login = curUser.Login, Name = curUser.Name, NetworkStatus = NetworkStatus.Unknown, RelationStatus = RelationStatus.FrienshipRequestRecive }, "Hello"); return(new OperationResult <User>(new User { ConversationId = contact.Conversation.Id, Login = userLogin, Name = invited.Name, RelationStatus = RelationStatus.FriendshipRequestSent, Icon = invited.Icon, NetworkStatus = NetworkStatus.Unknown })); } return(new OperationResult <User>(null, false, "Internal error. Try again later")); } } catch (Exception ex) { return(new OperationResult <User>(null, false, "Internal error")); } }
public override string ToString() { StringBuilder sb = new StringBuilder(base.ToString()); sb.Append("USR"); if (IsOnline.HasValue) { sb.AppendFormat("-A{0}", IsOnline.Value ? "1" : "0"); } if (!string.IsNullOrEmpty(Vorname)) { sb.AppendFormat("-B{0}", Vorname.ToLower()); } if (!string.IsNullOrEmpty(Name)) { sb.AppendFormat("-C{0}", Name.ToLower()); } if (!string.IsNullOrEmpty(Sex)) { sb.AppendFormat("-D{0}", Sex.ToLower()); } if (!string.IsNullOrEmpty(RelationStatus)) { sb.AppendFormat("-E{0}", RelationStatus.ToLower()); } if (!string.IsNullOrEmpty(AttractedTo)) { sb.AppendFormat("-F{0}", AttractedTo.ToLower()); } if (!string.IsNullOrEmpty(EyeColor)) { sb.AppendFormat("-G{0}", EyeColor.ToLower()); } if (!string.IsNullOrEmpty(HairColor)) { sb.AppendFormat("-H{0}", HairColor.ToLower()); } if (BodyHeightFrom.HasValue) { sb.AppendFormat("-I{0}", BodyHeightFrom.Value); } if (BodyHeightTo.HasValue) { sb.AppendFormat("-J{0}", BodyHeightTo.Value); } if (BodyWeightFrom.HasValue) { sb.AppendFormat("-K{0}", BodyWeightFrom.Value); } if (BodyWeightTo.HasValue) { sb.AppendFormat("-L{0}", BodyWeightTo.Value); } if (AgeFrom.HasValue) { sb.AppendFormat("-M{0}", AgeFrom.Value); } if (AgeTo.HasValue) { sb.AppendFormat("-N{0}", AgeTo.Value); } if (CommunityIDMember.HasValue) { sb.AppendFormat("-O{0}", CommunityIDMember.Value); } if (!string.IsNullOrEmpty(AddressCity)) { sb.AppendFormat("-P{0}", AddressCity.ToLower()); } if (!string.IsNullOrEmpty(AddressZip)) { sb.AppendFormat("-Q{0}", AddressZip.ToLower()); } if (!string.IsNullOrEmpty(AddressLand)) { sb.AppendFormat("-R0}", AddressLand.ToLower()); } if (AddressRangeKM.HasValue) { sb.AppendFormat("-S{0}", AddressRangeKM.Value); } if (!string.IsNullOrEmpty(InterestTopic)) { sb.AppendFormat("-T0}", InterestTopic.ToLower()); } if (!string.IsNullOrEmpty(Interesst)) { sb.AppendFormat("-U0}", Interesst.ToLower()); } if (!string.IsNullOrEmpty(Talent)) { sb.AppendFormat("-V0}", Talent.ToLower()); } if (ForObjectType.HasValue) { sb.AppendFormat("-W{0}", ForObjectType.Value); } if (LoadVisits.HasValue) { sb.AppendFormat("-X{0}", LoadVisits.Value ? "1" : "0"); } return(sb.ToString()); }