public async Task <IHttpActionResult> Postgroup_comment(group_comment group_comment)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            db.group_comment.Add(group_comment);
            db.SaveChanges();
            //send notification to all friends
            var friends  = db.friends.Where(x => x.UserId == group_comment.user_id && x.Confirmed == true).Select(x => x.friendId);
            var friends2 = db.friends.Where(x => x.friendId == group_comment.user_id && x.Confirmed == true).Select(x => x.UserId);

            friends.Concat(friends2);

            var new_notifi = new cls_notifi
            {
                source_name  = "group",
                source_id    = group_comment.group_id.ToString(),
                image        = db.AspNetUsers.FirstOrDefault(x => x.Id == group_comment.user_id).Photo,//"no image",
                body_English = db.AspNetUsers.FirstOrDefault(x => x.Id == group_comment.user_id).UserName + " commented on work group " + db.work_group.FirstOrDefault(x => x.id == group_comment.group_id).name,
                body_Arabic  = "كتب " + db.AspNetUsers.FirstOrDefault(x => x.Id == group_comment.user_id).UserName + " تعليق على مجموعة " + db.work_group.FirstOrDefault(x => x.id == group_comment.group_id).name,
                timestamp    = DateTime.Now,
                readed       = false
            };

            //await Push(new_notifi, "notifications/" + db.courses.FirstOrDefault(x => x.id == group_comment.group_id).instructor + "/" + DateTime.UtcNow.ToString("dd-MM-yyyy"));
            foreach (var item in friends)
            {
                await Push(new_notifi, "notifications/" + item + "/" + DateTime.UtcNow.ToString("dd-MM-yyyy"));

                PushNotifi(db.AspNetUsers.FirstOrDefault(x => x.Id == item).DeviceToken, "New Comment", new_notifi.body_English, "group", group_comment.group_id.ToString());
            }
            return(CreatedAtRoute("DefaultApi", new { id = group_comment.id }, group_comment));
        }
Exemplo n.º 2
0
        public async Task <IHttpActionResult> likeGroup(like like)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            like.liked_type = "group";
            db.likes.Add(like);
            db.SaveChanges();


            var new_notifi = new cls_notifi
            {
                source_name  = "group",
                source_id    = like.liked_id.ToString(),
                image        = db.AspNetUsers.FirstOrDefault(x => x.Id == like.user_id).Photo,//"no image",
                body_English = db.AspNetUsers.FirstOrDefault(x => x.Id == like.user_id).UserName + " likes your work group " + db.work_group.FirstOrDefault(x => x.id == like.liked_id).name,
                body_Arabic  = "اعجب " + db.AspNetUsers.FirstOrDefault(x => x.Id == like.user_id).UserName + " بإنشاء مجموعتك " + db.work_group.FirstOrDefault(x => x.id == like.liked_id).name,
                timestamp    = DateTime.Now,
                readed       = false
            };
            var Group_admin = db.work_group.FirstOrDefault(x => x.id == like.liked_id).admin;

            await Push(new_notifi, "notifications/" + Group_admin.ToString() + "/" + DateTime.UtcNow.ToString("dd-MM-yyyy"));

            PushNotifi(db.AspNetUsers.FirstOrDefault(x => x.Id == Group_admin).DeviceToken, "More Likes", new_notifi.body_English, "group", like.liked_id.ToString());



            return(CreatedAtRoute("DefaultApi", new { id = like.id }, like));
        }
Exemplo n.º 3
0
        public async Task Push(cls_notifi notifi, string path)
        {
            IFirebaseClient client    = new FirebaseClient(config);
            var             my_notifi = notifi;
            PushResponse    response  = await client.PushAsync(path, my_notifi);

            var xcv = response.Result.name; //The result will contain the child name of the new data that was added
        }
Exemplo n.º 4
0
        public async Task <IHttpActionResult> AcceptRequest(string Sender, string Reciver)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }


            db.accept_friend_request(Reciver, Sender);
            try
            {
                db.SaveChanges();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!friendExists(Sender, Reciver))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }
            var new_notifi = new cls_notifi
            {
                source_name  = "user",
                source_id    = Reciver,
                image        = db.AspNetUsers.FirstOrDefault(x => x.Id == Reciver).Photo,//"no image",
                body_English = db.AspNetUsers.FirstOrDefault(x => x.Id == Reciver).UserName + " accepted your friend request",
                body_Arabic  = "تم قبول طلب صداقتك من قبل " + db.AspNetUsers.FirstOrDefault(x => x.Id == Reciver).UserName,
                timestamp    = DateTime.Now,
                readed       = false
            };

            await Push(new_notifi, "notifications/" + Sender.ToString() + "/" + DateTime.UtcNow.ToString("dd-MM-yyyy"));

            PushNotifi(db.AspNetUsers.FirstOrDefault(x => x.Id == Sender.ToString()).DeviceToken, "Friend Request Accepted", new_notifi.body_English, "user", Reciver);

            //RedirectToRoute("/rpc/notifi/push/", new { notifi = new_notifi, path = "notifications/" + Sender.ToString() + "/friends" });
            return(StatusCode(HttpStatusCode.NoContent));
        }
Exemplo n.º 5
0
        public async Task <IHttpActionResult> SendRequest(friend friend)
        {
            if (!ModelState.IsValid || friend.friendId == friend.UserId)
            {
                return(BadRequest(ModelState));
            }
            db.send_friend_request(friend.UserId, friend.friendId, friend.since);
            //db.friends.Add(friend);

            try
            {
                db.SaveChanges();
            }
            catch (DbUpdateException)
            {
                if (friendExists(friend.UserId, friend.friendId))
                {
                    return(Conflict());
                }
                else
                {
                    throw;
                }
            }
            var new_notifi = new cls_notifi {
                source_name  = "user",
                source_id    = friend.friendId,
                image        = db.AspNetUsers.FirstOrDefault(x => x.Id == friend.friendId).Photo,//"no image",
                body_English = db.AspNetUsers.FirstOrDefault(x => x.Id == friend.friendId).UserName + " send you a friend request",
                body_Arabic  = "قام " + db.AspNetUsers.FirstOrDefault(x => x.Id == friend.friendId).UserName + " بارسال طلب صداقة اليك",

                timestamp = DateTime.Now,
                readed    = false
            };

            await Push(new_notifi, "notifications/" + friend.UserId.ToString() + "/" + DateTime.UtcNow.ToString("dd-MM-yyyy"));

            PushNotifi(db.AspNetUsers.FirstOrDefault(x => x.Id == friend.UserId).DeviceToken, "New Friend Request", new_notifi.body_English, "user", friend.friendId);
            //return RedirectToRoute("~/rpc/notifi/push", new { notifi= new_notifi, path = "notifications/" + friend.UserId.ToString() + "/friends" });
            return(CreatedAtRoute("DefaultApi", new { id = friend.UserId }, friend));
        }
Exemplo n.º 6
0
        public async Task <IHttpActionResult> PostCourse_Members(Course_Members course_Members)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            db.Course_Members.Add(course_Members);

            try
            {
                db.SaveChanges();
            }
            catch (DbUpdateException)
            {
                if (Course_MembersExists(course_Members.Course_id, course_Members.Member_id))
                {
                    return(Conflict());
                }
                else
                {
                    throw;
                }
            }

            var new_notifi = new cls_notifi
            {
                source_name  = "user",
                source_id    = course_Members.Member_id,
                image        = db.AspNetUsers.FirstOrDefault(x => x.Id == course_Members.Member_id).Photo,//"no image",
                body_English = db.AspNetUsers.FirstOrDefault(x => x.Id == course_Members.Member_id).UserName + " Joined to Your course (" + db.courses.FirstOrDefault(x => x.id == course_Members.Course_id).name + ")",
                body_Arabic  = "انضم " + db.AspNetUsers.FirstOrDefault(x => x.Id == course_Members.Member_id).UserName + " الي كورس (" + db.courses.FirstOrDefault(x => x.id == course_Members.Course_id).name + ")",
                timestamp    = DateTime.Now,
                readed       = false
            };

            await Push(new_notifi, "notifications/" + db.courses.FirstOrDefault(x => x.id == course_Members.Course_id).instructor + "/" + DateTime.UtcNow.ToString("dd-MM-yyyy"));

            PushNotifi(db.AspNetUsers.FirstOrDefault(x => x.Id == db.courses.FirstOrDefault(Y => Y.id == course_Members.Course_id).instructor).DeviceToken, "New Member To your Course", new_notifi.body_English, "user", course_Members.Member_id);

            //////////////////////////////////////////////////////////////////////add member to room
            IFirebaseClient client = new FirebaseClient(config);

            var Course_room_id = db.courses.FirstOrDefault(x => x.id == course_Members.Course_id).room_id;
            var new_Mem        = new
            {
                mem_id   = course_Members.Member_id,
                mem_name = db.AspNetUsers.FirstOrDefault(x => x.Id == course_Members.Member_id).UserName
            };
            var new_room = new
            {
                RoomId        = Course_room_id,
                RoomName      = db.courses.FirstOrDefault(x => x.id == course_Members.Course_id).name,
                AddedOn       = DateTime.UtcNow,
                about         = course_Members.course.about,
                RoomType      = "course",
                RelatedTypeId = course_Members.Course_id
            };

            await Push_for_room(new_Mem, "chat/members/" + Course_room_id);
            await Push_for_room(new_room, "chat/memberRooms/" + course_Members.Member_id);

            //////////////////////////////////////////////////////////////////////////////////

            return(CreatedAtRoute("DefaultApi", new { id = course_Members.Course_id }, course_Members));
        }
Exemplo n.º 7
0
        public async Task <IHttpActionResult> Postwork_group(work_group work_group)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }



            /////// Add Chat Room for the Course ///////////////////////////////////////////////////////////



            IFirebaseClient client   = new FirebaseClient(config);
            cls_room        new_room = new cls_room {
                name = work_group.name, about = "Chat Room for " + work_group.name + " Group", admin = work_group.admin, photo = ""
            };

            PushResponse response = await client.PushAsync("chat/rooms/", new_room);

            var xcv      = response.Result.name;
            var firstMem = new
            {
                mem_id   = work_group.admin,                                                     //db.AspNetUsers.FirstOrDefault(x => x.UserName == room.adminName).Id,
                mem_name = db.AspNetUsers.FirstOrDefault(x => x.Id == work_group.admin).UserName //room.adminName
            };

            await PushChat(firstMem, "chat/members/" + xcv);

            /////////////////////////////
            var new_room2 = new
            {
                RoomId        = xcv,
                RoomName      = new_room.name,
                about         = "Chat room for " + work_group.name + " group",
                AddedOn       = DateTime.UtcNow,
                RoomType      = "group",
                RelatedTypeId = db.work_group.OrderByDescending(x => x.id).FirstOrDefault().id
            };

            await PushChat(new_room2, "chat/memberRooms/" + work_group.admin);

            work_group.room_id = xcv;
            db.work_group.Add(work_group);
            db.SaveChanges();

            Work_group_members wg = new Work_group_members();

            wg.Member_id     = work_group.admin;
            wg.Work_group_id = db.work_group.OrderByDescending(x => x.id).FirstOrDefault().id;
            wg.AddingDate    = System.DateTime.Now;
            db.Work_group_members.Add(wg);
            db.SaveChanges();



            //////////////////////////////////////////////////////////////////////////////////////////////
            //send notification to all friends
            var friends  = db.friends.Where(x => x.UserId == work_group.admin && x.Confirmed == true).Select(x => x.friendId);
            var friends2 = db.friends.Where(x => x.friendId == work_group.admin && x.Confirmed == true).Select(x => x.UserId);

            friends.Concat(friends2);
            //
            var new_notifi = new cls_notifi
            {
                source_name  = "group",
                source_id    = db.work_group.OrderByDescending(x => x.id).FirstOrDefault().id.ToString(),
                image        = "no image",
                body_English = "Work group " + work_group.name + " is available now by your friend " + db.AspNetUsers.FirstOrDefault(x => x.Id == work_group.admin).UserName,
                body_Arabic  = "تمت اتاحة مجموعة " + work_group.name + " من قبل صديقك " + db.AspNetUsers.FirstOrDefault(x => x.Id == work_group.admin).UserName,
                timestamp    = DateTime.UtcNow,
                readed       = false
            };

            foreach (var item in friends)
            {
                await Push(new_notifi, "notifications/" + item + "/" + DateTime.UtcNow.ToString("dd-MM-yyyy"));

                PushNotifi(db.AspNetUsers.FirstOrDefault(x => x.Id == item).DeviceToken, "New Workgroup", new_notifi.body_English, "group", db.work_group.OrderByDescending(x => x.id).FirstOrDefault().id.ToString());
            }



            return(CreatedAtRoute("DefaultApi", new { id = work_group.id }, work_group));
        }
        public async Task <IHttpActionResult> Postcourse(course course)
        {
            // course.instructor=
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            Course_Members cm = new Course_Members();
            course_tags    ct = new course_tags();

            ct.course_id = course.id;
            //ct.tag_id=
            cm.Course_id  = course.id;
            cm.Member_id  = course.instructor;
            cm.AddingDate = course.creating_date;


            //send notification to all friends
            var friends  = db.friends.Where(x => x.UserId == course.instructor && x.Confirmed == true).Select(x => x.friendId);
            var friends2 = db.friends.Where(x => x.friendId == course.instructor && x.Confirmed == true).Select(x => x.UserId);

            friends.Concat(friends2);
            //
            var new_notifi = new cls_notifi
            {
                source_name  = "course",
                source_id    = db.courses.OrderByDescending(x => x.id).FirstOrDefault().id.ToString(),
                image        = "no image",
                body_English = "Course " + course.name + " is available now by your friend " + db.AspNetUsers.FirstOrDefault(x => x.Id == course.instructor).UserName,
                body_Arabic  = "تمت اتاحة كورس " + course.name + " من قبل صديقك  " + db.AspNetUsers.FirstOrDefault(x => x.Id == course.instructor).UserName,
                timestamp    = DateTime.UtcNow,
                readed       = false
            };

            foreach (var item in friends)
            {
                await Push(new_notifi, "notifications/" + item + "/" + DateTime.UtcNow.ToString("dd-MM-yyyy"));

                PushNotifi(db.AspNetUsers.FirstOrDefault(x => x.Id == item).DeviceToken, "New Course", new_notifi.body_English, "course", db.courses.OrderByDescending(x => x.id).FirstOrDefault().id.ToString());
            }


            /////// Add Chat Room for the Course ///////////////////////////////////////////////////////////



            IFirebaseClient client   = new FirebaseClient(config);
            cls_room        new_room = new cls_room {
                name = course.name, about = "Chat Room for " + course.name + " Course", admin = course.instructor, photo = ""
            };

            PushResponse response = await client.PushAsync("chat/rooms/", new_room);

            var xcv      = response.Result.name;
            var firstMem = new
            {
                mem_id   = course.instructor,                                                     //db.AspNetUsers.FirstOrDefault(x => x.UserName == room.adminName).Id,
                mem_name = db.AspNetUsers.FirstOrDefault(x => x.Id == course.instructor).UserName //room.adminName
            };

            await PushChat(firstMem, "chat/members/" + xcv);

            /////////////////////////////
            var new_room2 = new
            {
                RoomId        = xcv,
                RoomName      = new_room.name,
                about         = "Chat room for " + course.name + " course",
                AddedOn       = DateTime.UtcNow,
                RoomType      = "course",
                RelatedTypeId = db.courses.OrderByDescending(x => x.id).FirstOrDefault().id
            };

            await PushChat(new_room2, "chat/memberRooms/" + course.instructor);



            course.room_id = xcv;
            db.courses.Add(course);
            db.Course_Members.Add(cm);
            db.SaveChanges();

            return(CreatedAtRoute("DefaultApi", new { id = course.id }, course));
        }