Esempio n. 1
0
        public async Task <IHttpActionResult> sendMessage(cls_msg _Msg)
        {
            IFirebaseClient client = new FirebaseClient(config);

            if (_Msg.File != null)
            {
                string filename  = Guid.NewGuid().ToString();// Path.GetFileNameWithoutExtension(post1.imagefile.FileName);
                string extention = Path.GetExtension(_Msg.File.FileName);
                filename     = filename + DateTime.Now.ToString("yymmddssfff") + extention;
                _Msg.message = "~/Content/image/" + filename;
                filename     = Path.Combine(System.Web.Hosting.HostingEnvironment.MapPath("~/Content/image/"), filename);
                //other way
                // Path.Combine(HttpContext.Current.Server.MapPath("~/Content/image/"), filename);
                _Msg.File.SaveAs(filename);
            }
            var new_msg = new
            {
                sender       = db.AspNetUsers.FirstOrDefault(x => x.Id == _Msg.sender_id).UserName,
                sender_photo = db.AspNetUsers.FirstOrDefault(x => x.Id == _Msg.sender_id).Photo,
                message      = _Msg.message,
                timeStamp    = DateTime.Now,
                type         = _Msg.MsgType
            };

            await Push(new_msg, "chat/messages/" + _Msg.Room_id);

            ////////////////////////////////////////////////////////////////////////////////////////////
            FirebaseResponse response_ids = await client.GetAsync("chat/members/" + _Msg.Room_id);

            dynamic data = JsonConvert.DeserializeObject <dynamic>(response_ids.Body);
            var     list = new List <mems>();

            foreach (var itemDynamic in data)
            {
                list.Add(JsonConvert.DeserializeObject <mems>(((JProperty)itemDynamic).Value.ToString()));
            }
            var members = list.Where(x => x.mem_id != _Msg.sender_id).Select(x => x.mem_id);

            foreach (var item in members)
            {
                PushNotifi(db.AspNetUsers.FirstOrDefault(x => x.Id == item).DeviceToken, "new message from " + new_msg.sender, _Msg.message, "room", _Msg.Room_id);
            }
            /////////////////////////////////////////////////////////////////////////////////////////////
            FirebaseResponse response = await client.GetAsync("chat/rooms/" + _Msg.Room_id);

            cls_chat_room todo = response.ResultAs <cls_chat_room>();

            todo.lastMessage = _Msg.message;
            todo.timeStamp   = DateTime.Now;

            FirebaseResponse response2 = await client.UpdateAsync("chat/rooms/" + _Msg.Room_id, todo);

            return(Ok(new_msg));
        }
Esempio n. 2
0
        public async Task <IHttpActionResult> addRoom(cls_chat_room room)
        {
            var file = HttpContext.Current.Request.Files.Count > 0 ?
                       HttpContext.Current.Request.Files[0] : null;

            if (file != null && file.ContentLength > 0)
            {
                //var fileName = Path.GetFileName(file.FileName);
                string filename  = Path.GetFileNameWithoutExtension(file.FileName);
                string extention = Path.GetExtension(file.FileName);
                filename = filename + DateTime.Now.ToString("yymmddssfff") + extention;
                var path = Path.Combine(
                    HttpContext.Current.Server.MapPath("~/uploads/images/"),
                    filename
                    );
                room.photo = "~/uploads/images/" + filename;
                file.SaveAs(path);
            }



            IFirebaseClient client   = new FirebaseClient(config);
            var             new_room = room;

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

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

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

            /////////////////////////////
            var new_room2 = new
            {
                RoomId        = xcv,
                RoomName      = room.name,
                about         = room.about,
                AddedOn       = DateTime.UtcNow,
                RoomType      = "ordinary-room",
                RelatedTypeId = 0
            };

            await Push(new_room2, "chat/memberRooms/" + db.AspNetUsers.FirstOrDefault(x => x.UserName == room.adminName).Id);

            return(Ok(room));
        }