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); }
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); }