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)); }
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)); }