示例#1
0
        public void Join(int userId, int shopId)
        {
            List<OrderDetail> orders = new List<OrderDetail>();
            ShopModel sm = new ShopModel();
            UserModel um = new UserModel();

            UserInfo userInfo = um.GetUserInfo(userId);
            short userGradeLevel = userInfo.UserGradeCategory.GradeLevel;

            ClientInfo clientInfo = new ClientInfo()
            { ConnectionId = Context.ConnectionId, UserId = userId, UserName = userInfo.Name, GradeLevel = userGradeLevel };

            if (_ClientInfos.Any(r => r.Key == userId))
            {
                _ClientInfos[userId] = clientInfo;
            }
            else
            {
                _ClientInfos[userId] = clientInfo;
            }

            if (_Managers.Any(r => r == Context.ConnectionId))
            {
                if (userGradeLevel != 9)
                {
                    _Managers.Remove(Context.ConnectionId);
                }
            }
            else
            {
                if (userGradeLevel == 9)
                {
                    _Managers.Add(Context.ConnectionId);
                }
            }

            orders = sm.GetAvailableUserOrderDetail(shopId)
                .Select(r => new OrderDetail()
                {
                    Id = r.Id,
                    DisheId = r.DisheId,
                    Count = r.OrderCount,
                    Price = r.Price,
                    Available = (r.UserId == userId || userGradeLevel == 9) ? 1 : 0
                }).ToList<OrderDetail>();

            Clients.Caller.broadcastOrderAdd(orders);
        }