Example #1
0
 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));
     }
 }
Example #2
0
        /// <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);
        }
Example #3
0
        /// <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];
        }
    }
Example #6
0
        //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);
     }
 }
Example #8
0
        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;
            }
        }
Example #10
0
 public static string ToRelationStatusName(this RelationStatus type)
 {
     return(RelationStatusNames[type.GetHashCode()]);
 }
Example #11
0
 public Relations(Civilisation target)
 {
     Target = target;
     Status = RelationStatus.Unknown;
 }
Example #12
0
 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);
 }
Example #13
0
        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"));
            }
        }
Example #14
0
        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"));
            }
        }
Example #15
0
        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());
        }