Esempio n. 1
0
        private SDKAccount CreateNewSDKAccount(RequestSDKLogin request)
        {
            SDKAccount account = new SDKAccount
            {
                Id       = Guid.NewGuid(),
                SDKId    = request.Id,
                UserName = request.User,
            };

            return(account);
        }
Esempio n. 2
0
        public async Task <BaseResponse <DOLoginResult> > SDKLogin(RequestSDKLogin request)
        {
            BaseResponse <DOLoginResult> response = CreateResponse <DOLoginResult>();

            try
            {
                //check user
                bool userIsExist = await IsExistAsync(DM_SDK_ACCOUNT, request.User);

                if (!userIsExist)
                {
                    //check at mongoDB
                    IMongoCollection <SDKAccount> collectionSDKAccount = MongoGetCollection <SDKAccount>();
                    SDKAccount account = collectionSDKAccount.Find(document => document.UserName == request.User).FirstOrDefault();
                    if (account == null)
                    {
                        account = CreateNewSDKAccount(request);
                    }
                    IMongoCollection <Player> collectionPlayer = MongoGetCollection <Player>();
                    Player player = collectionPlayer.Find(doc => doc.Name == account.UserName).FirstOrDefault();
                    if (player == null)
                    {
                        player = _playerService.CreatePlayer(account);
                    }
                    account.PlayerId = player.Id;
                    SaveAccount(account);
                }

                SDKAccount checkAccount = GetObject <SDKAccount>(DM_SDK_ACCOUNT, request.User);
                if (!checkAccount.SDKId.Equals(request.Id))
                {
                    response.OK      = false;
                    response.Message = "SDK ID không trùng khớp";
                }
                else
                {
                    response.OK             = true;
                    response.Message        = "Đăng nhập thành công";
                    response.Data           = checkAccount.MapTo();
                    checkAccount.LastLogin  = DateTime.Now;
                    checkAccount.LastLogout = null;
                    SaveAccount(checkAccount);
                    CheckOnline(request);
                }
            }
            catch (Exception e)
            {
                ExceptionHandle(response, e);
            }
            return(response);
        }
Esempio n. 3
0
        public void CheckOnline(RequestSDKLogin request)
        {
            if (IsExist(DM_ONLINE_ACCOUNT, request.User))
            {
                string onlineConnectionId = Get(DM_ONLINE_ACCOUNT, request.User);
                if (!request.ConnectionId.Equals(onlineConnectionId))
                {
                    SendToClient(onlineConnectionId, "ReceiveDisconnectCommand");
                }
            }
            int expiredSecond = 300; //5 minutes

            SetWithExpire(DM_ONLINE_ACCOUNT, request.User, request.ConnectionId, expiredSecond);
        }