コード例 #1
0
 public JsonResult Members(int id)
 {
     var issueMembers = repo.GetIssueMembers(id);
     var list = new List<dynamic>();
     if (issueMembers != null)
     {
         foreach (var item in issueMembers)
         {
             var memberVM = new { MemberID = item.MemberID, Name = item.Member.FirstName, AvatarHash = UserService.GetAvatarUrl(item.Member.Avatar), ShowDelete = false };
             list.Add(memberVM);
         }
     }
     return Json(list, JsonRequestBehavior.AllowGet);
 }
コード例 #2
0
ファイル: GameController.cs プロジェクト: PascalS86/wordclash
        public async Task<IHttpActionResult> JoinGame(string id)
        {
            
            var openGames = db.GameModels.Include("Users").Include("StoryParts").Where(c => !c.IsFinished && c.Users.Count < c.PlayerSize);
            var currentUser = await db.Users.Where(c => c.UserName == id).FirstAsync();      
            if(currentUser == null)
            {
                return StatusCode(HttpStatusCode.NotFound);
            }
            
            //Join Game
            GameModel currentGame = null;
            if (!openGames.Any())
            {
                currentGame = new GameModel();
                var storyBegining = await db.StoryBeginingModels.OrderBy(c => Guid.NewGuid()).FirstAsync();
                currentGame.GameText = storyBegining.StoryBegin;
                if (currentGame.Users == null)
                {
                    currentGame.Users = new List<ApplicationUser>() { currentUser };
                    currentGame.StoryParts = new List<MessageModel>();
                }
                db.GameModels.Add(currentGame);
            }
            else
            {
                currentGame = await openGames.FirstAsync();
                currentGame.Users.Add(currentUser);
                if (currentGame.Users.Count == currentGame.PlayerSize)
                {
                    var lottery = currentGame.Users.OrderBy(c => Guid.NewGuid()).ToList();

                    for (int i = 0; i < currentGame.Rounds * currentGame.PlayerSize; i++)
                    {
                        var lotteryIdx = i % (currentGame.PlayerSize);
                        currentGame.StoryParts.Add(new MessageModel { StoryPosition = i, ApplicationUser = lottery.ElementAt(lotteryIdx), ApplicationUserId = lottery.ElementAt(lotteryIdx).Id });
                    }
                }
                db.Entry(currentGame).State = EntityState.Modified;
            }
            try
            {
                await db.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                IObjectContextAdapter adapter = db;

                adapter.ObjectContext.Refresh(RefreshMode.StoreWins, db.GameModels);
                try {
                    await db.SaveChangesAsync();
                }
                catch
                {
                    return StatusCode(HttpStatusCode.InternalServerError);
                }
            }
            if (currentGame.Users.Count == currentGame.PlayerSize)
            {
                var hubContext = GlobalHost.ConnectionManager.GetHubContext<GameHub>();
                var smallGame = new
                {
                    GameId = currentGame.Id,
                    GameText = currentGame.GameText,
                    Rounds = currentGame.Rounds,
                    Players = currentGame.Users.Select(c => new { UserName = c.UserName }),
                    StoryParts = currentGame.StoryParts.Select(c => new { CurrentUser = c.ApplicationUser.UserName, Position = c.StoryPosition })
                };
                hubContext.Clients.All.broadcastMessage("heat", smallGame);
                return Ok();
            }
            return Ok("lobby");

        }
コード例 #3
0
ファイル: Notifier.cs プロジェクト: NikolajLund/NooSphere
 protected static object ConstructEvent(NotificationType type, object obj)
 {
     var notevent = new { Event = type.ToString(), Data = obj };
     return notevent;
 }
コード例 #4
0
 public void broadcast(string username, string message)
 {      
    var msg = new { username=username, message=message };
    Clients.All.broadcastMessage(msg);
 }
コード例 #5
0
ファイル: Api.cs プロジェクト: jplane/AzureATLMeetup
        public static void SendResult(PurchaseResult result, string connectionId)
        {
            var hubContext = GlobalHost.ConnectionManager.GetHubContext<MainHub>();

            if(result.Success)
            {
                hubContext.Clients.Client(connectionId).orderSucceeded(new { id = result.Request.Id });
            }
            else
            {
                hubContext.Clients.Client(connectionId).orderFailed(new { id = result.Request.Id });
            }

            var summary = new
            {
                id = result.Id,
                requested = result.Request.Timestamp.ToString("u"),
                processed = result.Timestamp.ToString("u"),
                success = result.Success.ToString(),
                ticketcount = result.Request.DesiredTickets.Length
            };

            hubContext.Clients.All.requestProcessed(summary);
        }
コード例 #6
0
ファイル: Connection.cs プロジェクト: shoobah/Strudle
 protected override System.Threading.Tasks.Task OnReceived(IRequest request, string connectionId, string data)
 {
     var t = new { Id = data.Length, Name = data, ConnId = connectionId };
     return Connection.Broadcast(t);
 }