public async Task <string> DeleteConversation(string id) { Conversation exist = await conversationRepository.GetByIdAsync(ObjectId.Parse(id)); if (exist != null) { //delete conversation await conversationRepository.DeleteAsync(ObjectId.Parse(id)); //Delete notification group FilterDefinition <ClientGroup> finder = Builders <ClientGroup> .Filter.Eq("name", id); ClientGroup clientGroup = await clientGroupRepository.FindAsync(finder); if (clientGroup != null) { await clientGroupRepository.DeleteAsync(clientGroup.Id); } return("Xóa cuộc trò chuyện thành công"); } else { throw new Exception("Đã có lỗi xảy ra"); } }
public async Task SendMessage(string clientGroupName, MessageViewModel message) { FilterDefinition <ClientGroup> finder = Builders <ClientGroup> .Filter.Eq("name", clientGroupName); ClientGroup clientGroup = await clientGroupRepository.FindAsync(finder); foreach (string item in clientGroup.UserIds) { try { FilterDefinition <FcmInfo> user = Builders <FcmInfo> .Filter.Eq("user_id", item); string token = (await fcmInfoRepository.FindAsync(user))?.DeviceToken; User sender = await userRepository.GetByIdAsync(ObjectId.Parse(message.SenderId)); var notifyBody = string.Empty; switch (message.MessageType.Value) { case MessageBaseType.Text: notifyBody = (message.Content as List <string>)[0]; break; case MessageBaseType.Image: notifyBody = "Đã gửi một ảnh. "; break; case MessageBaseType.MultiMedia: notifyBody = "Đã gửi một phương tiện. "; break; case MessageBaseType.PostThumbnail: notifyBody = "Đã gửi một liên kết. "; break; case MessageBaseType.ConversationActivity: notifyBody = "Đã có hoạt động mới. "; break; case MessageBaseType.Other: notifyBody = "Đã có thông báo mới. "; break; default: break; } try { FirebaseAdmin.Messaging.Message mes = new FirebaseAdmin.Messaging.Message() { Token = token, Data = new Dictionary <string, string>() { { "message", JsonConvert.SerializeObject(message) } }, Notification = new Notification() { Title = sender.LastName, Body = notifyBody, ImageUrl = sender.AvatarHash } }; string response = await FirebaseMessaging.DefaultInstance.SendAsync(mes).ConfigureAwait(true); } catch (Exception) { //Do nothing } } catch (Exception) { continue; } } }