public async Task<StatusData<LoginResponse>> Login(LoginRequest request)
        {
            var data = new StatusData<LoginResponse> { Status = SystemDbStatus.Selected, Data = new LoginResponse() };
            var result = new StatusData<LoginResponse> { Status = SystemDbStatus.Selected };

            var user = new User { UsernameEmail = request.UserName, Password = request.Password, DeviceId = request.DeviceId, Session = new Session { Replay = true, DeviceType = request.DeviceType, PushCode = request.PushCode, TransportIp = request.Ip, ModelName = request.ModelName } };
            var response = await Task.Factory.StartNew(() => Client.UserService.Auth(user)).ConfigureAwait(false);

            data.Status = (SystemDbStatus)response.DbStatusCode;

            if (!data.Status.IsOperationSuccessful())
            {
                //switch ((SystemAccountStatus)response.DbStatusCode)
                //{
                //    case SystemAccountStatus.UserNotExist:
                //    case SystemAccountStatus.WrongPassword:
                //    case SystemAccountStatus.NotYetApproved:
                //    case SystemAccountStatus.Locked:
                //    case SystemAccountStatus.Deactivated:
                //        {
                //            data.Status = SystemDbStatus.Unauthorized;
                //            data.Data.LoginStatus = (SystemAccountStatus)response.DbStatusCode;
                //            data.Message = response.DbStatusMsg;
                //            return data;
                //        }
                //}
                //data.Status = SystemDbStatus.Unauthorized;
                data.SubStatus = response.DbSubStatusCode;
                data.Message = response.DbStatusMsg;
                return data;
            }

            result.Data = new LoginResponse
            {
                UserId = Convert.ToInt32(response.UserId),
                UserName = response.UserName,
                UserTypeId = (response.UserInfoPerson == null ? SystemUserType.Business : SystemUserType.Person),
                Token = response.Session.SessionToken
            };
            result.Data.AuthorizationToken = Convert.ToBase64String(Encoding.UTF8.GetBytes(string.Format("{0}:{1}:{2}:{3}:{4}:{5}", result.Data.UserId, result.Data.UserName, (byte)result.Data.UserTypeId, request.DeviceType, request.DeviceId, result.Data.Token)));
            return result;
        }
 public Task<StatusData<LoginResponse>> Login(LoginRequest request)
 {
     return _jUnitOfWork.Account.Login(request);
 }