Exemple #1
0
        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());
        }