using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Net.Http; using System.Web.Http; namespace ChatRoomServer.Www.Areas.Api.Controllers { using System.Data.Entity; using System.Threading.Tasks; using ChatRoomServer.Db; using ChatRoomServer.Db.Entities; using ChatRoomServer.Www.Areas.Api.Models; using Newtonsoft.Json; [RoutePrefix("api/room")] public class RoomController : ApiController { [AllowAnonymous] [Route("list"), HttpGet] public async Task GetRoomss() { var db = new ChatDb(); var items = await db.Rooms.AsNoTracking().ToArrayAsync(); var sgroup = await db.ServerGroups.AsNoTracking().ToDictionaryAsync(s => s.ID); var result = items.Select(s => new { id = s.ID, onlinecount = s.OnlineCount, room_people_num = 1000, category = s.Category, url = (sgroup.GetValue(s.ServerGroup)?.Url.EnsureEndWith("/") ?? "") + "room/" + s.ID + "/#uid#", status = s.Status, name = s.Name }).ToArray(); return result; } [AllowAnonymous] [Route("updateOnlineCount")] [HttpPost] public async Task UpdateOnlineCount([FromBody]List idata) { var db = new ChatDb(); var rooms = await db.Rooms.ToDictionaryAsync(s => s.ID); foreach (var x1 in idata) { var room = rooms.GetValue(x1.Id); if (room != null) { room.OnlineCount = x1.Count; db.OnlineHistories.Add(new OnlineHistory() { Time = DateTime.Now, RoomID = x1.Id, OnlineCount = x1.Count }); } } //log to history await db.SaveChangesAsync(); return "Operation succeed"; } } }