Esempio n. 1
0
        public override async Task <IAPIResultVM> AddAsync(ChatRoomAddVM model, Guid?userId = null, bool isCommit = true)
        {
            if (model.IsMain)
            {
                model.IsMain = false;
            }

            var result = await base.AddAsync(model, userId, true);

            if (result.ResultIsNotTrue())
            {
                return(result);
            }

            if (model.Users != null && model.Users.Count > 0)
            {
                foreach (var id in model.Users)
                {
                    ChatRoomUserAddVM item = new ChatRoomUserAddVM();
                    item.ChatRoomId = result.RecId.Value;
                    item.UserId     = id;

                    var userResult = await _chatRoomUserService.AddAsync(item, userId, true);

                    if (userResult.ResultIsNotTrue())
                    {
                        return(userResult);
                    }
                }
            }

            return(result);
        }
Esempio n. 2
0
        public override async Task <IAPIResultVM> UpdateAsync(Guid id, ChatRoomUpdateVM model, Guid?userId = null, bool isCommit = true)
        {
            if (model.IsMain && Repository.Query().Any(a => a.Id != id && a.IsMain))
            {
                return(_apiResult.CreateVMWithStatusCode(id, false, APIStatusCode.ERR01005));
            }

            var result = await base.UpdateAsync(id, model, userId, true);

            if (result.ResultIsNotTrue())
            {
                return(result);
            }

            if (model.Users != null && model.Users.Count > 0)
            {
                foreach (var item in model.Users)
                {
                    bool isExist = await _chatRoomUserService.AnyAsync(a => a.ChatRoomId == id && a.UserId == item);

                    if (!isExist)
                    {
                        ChatRoomUserAddVM rec = new ChatRoomUserAddVM();
                        rec.ChatRoomId = id;
                        rec.UserId     = item;

                        var userResult = await _chatRoomUserService.AddAsync(rec, userId, true);

                        if (userResult.ResultIsNotTrue())
                        {
                            return(userResult);
                        }
                    }
                }
            }

            var removedUsers = _chatRoomUserService.Query().Where(a => a.ChatRoomId == id &&
                                                                  (model.Users == null || !model.Users.Any(x => x == a.UserId))).Select(a => a.Id).ToList();

            if (removedUsers != null)
            {
                foreach (var item in removedUsers)
                {
                    await _chatRoomUserService.DeleteAsync(item, userId, false, true);
                }
            }

            return(result);
        }