private void OnContactUpdated(ModelUpdatedMessageResult <Contact> updateResult)
        {
            RecentContacts.UpdateCollection(updateResult.UpdatedModel, updateResult.UpdateEvent);

            if (RecentContacts.Count == 1 && !CurrentUser.HasShownFirstContactAchievementPrompt)
            {
                ShowFirstContactPrompt();
            }
        }
        private async void RemoveContact(Contact contact)
        {
            var result = await UserNotifier.ShowConfirmAsync("Are your sure you want to delete this contact?", "delete contact", "yes");

            if (result)
            {
                var deleteResult = await _repository.DeleteContactAsync(contact);

                if (deleteResult.IsValid())
                {
                    RecentContacts.UpdateCollection(contact, ModelUpdateEvent.Deleted);
                }
            }
        }
예제 #3
0
        /// <summary>
        /// 将消息添加到数据库中 若添加失败,则返回0
        ///                    若是重复消息,则返回-1
        /// </summary>
        /// <param name="msg"></param>
        /// <returns></returns>
        public int InsertMsg(Msg msg)
        {
            try
            {
                var unitOfWork = new UnitOfWork();
                //查询是不是重发的(主要是关于移动端的)添加前先查询是否已经存在对应的数据
                if (!string.IsNullOrEmpty(msg.id1))
                {
                    var query = unitOfWork.DIMMsg.Get(p => p.FromuID == msg.fromuid && p.id1 == msg.id1).FirstOrDefault();
                    if (query != null)
                    {
                        LoggerHelper.Error("尝试添加一条重复的消息:" + JsonConvert.SerializeObject(msg));
                        return(-1);
                    }
                }
                var immsg = new IMMsg
                {
                    FromuID      = msg.fromuid,
                    CreateDate   = DateTime.Now,
                    TouID        = msg.touid,
                    CreateUser   = msg.fromuid,
                    QuoteContent = msg.quoteContent,
                    fromusername = msg.fromrealname,
                    tousername   = msg.torealname,
                    isgroup      = msg.isgroup,
                    Type         = msg.msgtype.ToString(),
                    id1          = string.Empty,//默认为空
                    IsDel        = 0,
                    NewFileName  = string.Empty,
                    Msg          = msg.msg,
                    IsNotice     = false,
                    FileUrl      = msg.filename,
                    ThumbCount   = 0,
                };
                if (msg.quoteId != null)
                {
                    immsg.QuoteId = msg.quoteId;
                }
                else
                {
                    immsg.QuoteId = 0;
                }

                if (!string.IsNullOrEmpty(msg.id1))
                {
                    immsg.id1 = msg.id1;
                }
                if (msg.msgtype == 0)
                {
                    //纯文本消息
                    //去掉html标签

                    immsg.Msg = RemoveHTML(msg.msg);
                }
                else if (msg.msgtype == 1)
                {
                    //单张图片,存放的是图片的url
                    //immsg.Msg = msg.msg;
                    immsg.FileUrl = msg.filename;
                }
                else if (msg.msgtype == 2)
                {
                    //文件消息
                    immsg.Msg     = msg.filename;
                    immsg.FileUrl = msg.msg;
                    //暂时用Duration这个字段来存放文件的大小,以字节为单位
                    immsg.Duration = msg.duration;

                    /*
                     * 1.取出filecode
                     */
                    if (msg.msg.Contains("&fileCode="))
                    {
                        var index    = msg.msg.LastIndexOf("&fileCode=");
                        var fileCode = msg.msg.Substring(index + 10);
                        immsg.NewFileName = fileCode;
                    }
                }
                else if (msg.msgtype == 3)
                {
                    //图文混合消息,
                    immsg.Msg     = msg.msg;
                    immsg.ImgList = "";
                    foreach (var img in msg.imglist)
                    {
                        immsg.ImgList += img + ";";
                    }
                }
                else if (msg.msgtype == 4)
                {
                    //语音消息
                    immsg.Msg      = "语音消息";
                    immsg.FileUrl  = msg.msg;
                    immsg.Duration = msg.duration;
                }
                else if (msg.msgtype == 5)
                {
                    //地图类消息 用这个字段存放json
                    var p = new GDPosition();
                    p.latitude = msg.filename;
                    p.address  = msg.msg;
                    immsg.Msg  = JsonConvert.SerializeObject(p);
                }

                immsg.SubjectId = "0";//默认为0
                if (!string.IsNullOrEmpty(msg.subjectId))
                {
                    if (msg.subjectId == "null")
                    {
                        immsg.SubjectId = "0";
                    }
                    else
                    {
                        immsg.SubjectId = msg.subjectId;
                    }
                }
                msg.msgtime = DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss");
                unitOfWork.DIMMsg.Insert(immsg);
                var result = unitOfWork.Save();
                if (result.ResultType == OperationResultType.Success)
                {
                    msg.id0 = immsg.ID.ToString();

                    Task.Run(() =>
                    {
                        /*2019年5月13日 新增,更新最近聊天发送聊天记录的数据,这里只更新单人聊天*/
                        if (msg.isgroup == 0)
                        {
                            var query =
                                unitOfWork.DRecentContacts.Get(
                                    p => (p.uID == msg.fromuid && p.ContactID == msg.touid) || (p.uID == msg.touid && p.ContactID == msg.fromuid))
                                .FirstOrDefault();
                            if (query != null)
                            {
                                query.ContactDate = Convert.ToDateTime(msg.msgtime);
                                unitOfWork.DRecentContacts.Update(query);
                            }
                            else
                            {
                                var item         = new RecentContacts();
                                item.uID         = msg.fromuid;
                                item.ContactID   = msg.touid;
                                item.ContactDate = DateTime.Now;
                                unitOfWork.DRecentContacts.Insert(item);
                            }
                            unitOfWork.Save();
                        }
                    });
                    return(immsg.ID);
                }
                return(0);
            }
            catch (Exception ex)
            {
                //记录下异常
                LoggerHelper.Error(ex.ToString());
                return(0);
            }
        }