public async Task <IHttpActionResult> AddFriend(string userId) { var user = manager.FindById(User.Identity.GetUserId()); var friend = manager.FindById(userId); // Check if user is already a friend var existingFriend = db.Friends .Where(f => f.UserId1 == user.Id && f.UserId2 == userId || f.UserId1 == userId && f.UserId2 == user.Id) .FirstOrDefault(); if (existingFriend != null) { return(BadRequest()); } // Do not require accepting friend for prototype var newFriend = new Friend { UserId1 = user.Id, UserId2 = userId, RequestedAt = DateTime.Now, AcceptedAt = DateTime.Now }; db.Friends.Add(newFriend); await db.SaveChangesAsync(); // Set friend notification FirebaseController.Notify(friend, user.FullName + " added you as a friend!", "", FCMType.FriendAdded, 0); return(Ok()); }
public async Task <IHttpActionResult> SendGroupMessage(int groupId, Message message) { var user = manager.FindById(User.Identity.GetUserId()); // Add message to group var msg = new GroupMessage(); msg.GroupId = groupId; msg.SentBy = (SilverUser)user; msg.SentAt = DateTime.Now; msg.MessageData = message.MessageData; msg.Type = MessageType.Voice; db.Messages.Add(msg); await db.SaveChangesAsync(); // Get members from groups var group = await db.Groups .Where(g => g.Id == groupId) .Include(g => g.Members) .FirstOrDefaultAsync(); message.MessageData = null; // Send notification to group members foreach (var member in group.Members) { FirebaseController.Notify(member, "New Message from " + group.Name + "!", message.MessageText, FCMType.GroupMessage, groupId); } return(Ok()); }
public async Task <IHttpActionResult> AddPanicEvent(PanicEvent panic) { var user = manager.FindById(User.Identity.GetUserId()); if (user.Role != UserRole.Silver) { return(BadRequest()); } panic.User = (SilverUser)user; db.PanicEvents.Add(panic); await db.SaveChangesAsync(); foreach (var carer in GetCarers()) { FirebaseController.Notify(carer, "New panic event from " + user.FullName + "!", "", FCMType.PanicEvent, 0); } return(Ok()); }
public async Task <IHttpActionResult> SendFriendMessage(int friendId, Message message) { var user = manager.FindById(User.Identity.GetUserId()); // Add message to friend var msg = new FriendMessage(); msg.SentBy = (SilverUser)user; msg.SentAt = DateTime.Now; msg.FriendId = friendId; msg.MessageData = message.MessageData; msg.Type = MessageType.Voice; db.Messages.Add(msg); await db.SaveChangesAsync(); // Get friend user var friend = await db.Friends .Where(f => f.Id == friendId) .Include(f => f.User) .Include(f => f.UserFriend) .FirstOrDefaultAsync(); if (friend.UserId1 == user.Id) { friend.User = friend.UserFriend; } message.MessageData = null; // Send notification to friend FirebaseController.Notify(friend.User, "New Message from " + user.FullName + "!", message.MessageText, FCMType.FriendMessage, friendId); return(Ok()); }