public static BaseResponse <BaseWalletResponseData> ProcessRollback(BaseRequest request)
        {
            dynamic requestData = new ExpandoObject();

            requestData.Token          = request.SessionToken;
            requestData.UID            = request.UserUID;
            requestData.TransactionID  = request.TransactionID;
            requestData.EventId        = request.EventID;
            requestData.EventName      = request.EventName;
            requestData.RollbackAmount = request.Amount;

            dynamic serviceData = new ExpandoObject();

            CallService(ConfigurationHelper.GetConfigurationItem("RollbackServiceEndpoint"), requestData, out serviceData);

            BaseWalletResponseData data = new BaseWalletResponseData();

            //JavaScriptSerializer serializer = new JavaScriptSerializer();
            data.UserUID       = serviceData.IUD;
            data.TransactionID = serviceData.TransactionID;
            data.Balance       = (decimal)serviceData.Balance;
            data.errorCode     = (WalletErrorCode)Enum.ToObject(typeof(WalletErrorCode), serviceData.ErrorCode);
            data.ErrorMessage  = serviceData.ErrorDescription;
            data.SessionToken  = serviceData.Token;
            data.Date          = serviceData.Date;

            if (data.errorCode.Equals(WalletErrorCode.Success))
            {
                return(new BaseResponse <BaseWalletResponseData>(data, ResponseStatus.OK));
            }
            else
            {
                return(new BaseResponse <BaseWalletResponseData>(data, ResponseStatus.Fail, string.Format("Service error: {0} - {1}", data.errorCode, data.ErrorMessage)));
            }
        }
        public static BaseResponse <BaseWalletResponseData> ProcessBetCredit(CreditRequest request)
        {
            dynamic requestData = new ExpandoObject();

            requestData.Token         = request.SessionToken;
            requestData.UID           = request.UserUID;
            requestData.TransactionID = request.TransactionID;
            requestData.EventId       = request.EventID;
            requestData.EventName     = request.EventName;
            requestData.CreditAmount  = request.Amount;
            requestData.WinningDetail = request.BetDetail;

            dynamic serviceData = new ExpandoObject();

            CallService(ConfigurationHelper.GetConfigurationItem("CreditServiceEndpoint"), requestData, out serviceData);

            BaseWalletResponseData data = new BaseWalletResponseData();

            //JavaScriptSerializer serializer = new JavaScriptSerializer();
            data.UserUID       = serviceData.IUD;
            data.TransactionID = serviceData.TransactionID;
            data.Balance       = (decimal)serviceData.Balance;
            data.errorCode     = (WalletErrorCode)Enum.ToObject(typeof(WalletErrorCode), serviceData.ErrorCode);
            data.ErrorMessage  = serviceData.ErrorDescription;
            data.SessionToken  = serviceData.Token;
            //data.Date = serviceData.Date;
            DateTime outputDate = DateTime.Now;

            if (DateTime.TryParse(serviceData.Date.ToString(), out outputDate))
            {
                data.Date = outputDate;
            }
            else
            {
                if (serviceData.Date.GetType().Equals(typeof(System.DateTime)))
                {
                    data.Date = serviceData.Date;
                }
                else
                {
                    data.Date = DateTime.UtcNow;
                }
            }

            if (data.errorCode.Equals(WalletErrorCode.Success))
            {
                return(new BaseResponse <BaseWalletResponseData>(data, ResponseStatus.OK));
            }
            else
            {
                return(new BaseResponse <BaseWalletResponseData>(data, ResponseStatus.Fail, string.Format("Service error: {0} - {1}", data.errorCode, data.ErrorMessage)));
            }
        }
        //JavaScriptSerializer jsSerializer = new JavaScriptSerializer();

        public static BaseResponse <BaseWalletResponseData> ProcessLogin(BaseRequest request)
        {
            dynamic requestData = new ExpandoObject();

            requestData.Token = request.LaunchToken;

            dynamic serviceData = new ExpandoObject();

            CallService(ConfigurationHelper.GetConfigurationItem("AuthenticateUserServiceEndpoint"), requestData, out serviceData);

            BaseWalletResponseData data = new BaseWalletResponseData();

            JavaScriptSerializer serializer = new JavaScriptSerializer();

            data.UserUID      = serviceData.UID.ToString();
            data.NickName     = serviceData.NickName;
            data.Balance      = (decimal)serviceData.Balance;
            data.errorCode    = (WalletErrorCode)Enum.ToObject(typeof(WalletErrorCode), serviceData.ErrorCode);
            data.ErrorMessage = serviceData.ErrorDescription;
            data.SessionToken = serviceData.Token;
            //data.Date = serializer.Deserialize(serviceData.Date.ToString(), typeof(System.DateTime));
            //data.Date = serviceData.Date;
            DateTime outputDate = DateTime.Now;

            if (DateTime.TryParse(serviceData.Date.ToString(), out outputDate))
            {
                data.Date = outputDate;
            }
            else
            {
                if (serviceData.Date.GetType().Equals(typeof(System.DateTime)))
                {
                    data.Date = serviceData.Date;
                }
                else
                {
                    data.Date = DateTime.UtcNow;
                }
            }

            if (data.errorCode.Equals(WalletErrorCode.Success))
            {
                return(new BaseResponse <BaseWalletResponseData>(data, ResponseStatus.OK));
            }
            else
            {
                return(new BaseResponse <BaseWalletResponseData>(data, ResponseStatus.Fail, string.Format("Service error: {0} - {1}", data.errorCode, data.ErrorMessage)));
            }
        }