public async Task<StatusData<AccountInternal>> GetUserInfo(string userNameOrEmailOrId)
        {
            var response = new StatusData<AccountInternal> { Status = SystemDbStatus.Selected };

            var user = await Task.Factory.StartNew(() => Client.UserService.getUserLoginInfo(userNameOrEmailOrId)).ConfigureAwait(false);
            if (user == null)
            {
                response.Status = SystemDbStatus.NotFound;
                return response;
            }

            var userInfo = new AccountInternal
            {
                UserId = Convert.ToInt32(user.UserId),
                UserName = user.UserName,
                FirstName = user.UserInfo.UserTypeId == (byte)SystemUserType.Person ? user.UserInfoPerson.FirstName + ' ' + user.UserInfoPerson.LastName : user.UserInforCompany.Name,
                ImageServerAddress = SystemConstants.ImageServerAddress.ToString(),
                UserGuid = user.UserGUID,
                Email = user.Email
            };

            response.Status = (SystemDbStatus)user.DbStatusCode;
            response.Data = userInfo;
            response.Message = user.DbStatusMsg;
            return response;
        }
        public async Task<StatusData<AccountInternal>> ForgotPassword(string userName)
        {
            var response = new StatusData<AccountInternal> { Status = SystemDbStatus.Updated };

            var user = await Task.Factory.StartNew(() => Client.UserService.getUserLoginInfo(userName)).ConfigureAwait(false);
            if (user == null)
            {
                response.Status = SystemDbStatus.NotFound;
                return response;
            }

            var userGuid = await GetPasswordResetCode(user.UserId, user.UserName).ConfigureAwait(false);
            userGuid = userGuid.TrimEnd('\r', '\n');

            var userInfo = new AccountInternal
            {
                UserId = Convert.ToInt32(user.UserId),
                UserName = user.UserName,
                UserGuid = userGuid,
                FirstName = user.UserInfo.UserTypeId == (byte)SystemUserType.Person ? user.UserInfoPerson.FirstName : user.UserInforCompany.Name,
                ImageServerAddress = SystemConstants.ImageServerAddress.ToString(),
                UrlRegistrationLink = new Uri(new Uri(SystemConstants.WebUrl.Value), "index.html#/confirm-email-reset/" + HttpUtility.UrlEncode(Convert.ToBase64String(Encoding.UTF8.GetBytes(user.UserName))) + "/" + HttpUtility.UrlEncode(userGuid) + "/true").ToString(),
                UrlVerificationLink = new Uri(new Uri(SystemConstants.WebUrl.Value), "index.html#/confirm-email-reset/" + HttpUtility.UrlEncode(Convert.ToBase64String(Encoding.UTF8.GetBytes(user.UserName))) + "/" + HttpUtility.UrlEncode(userGuid) + "/false").ToString(),
                Email = user.Email
            };

            // user.UserGUID = userGuid;
            // user.LastActivityDate = DateTime.UtcNow;

            response.Status = SystemDbStatus.Updated;
            response.Data = userInfo;
            return response;
        }
        private async Task<HttpResponseMessage> SignUpPerson(SignUpRequestPerson request)
        {
            var response = await _accountService.SignUpPerson(request);
            if (response.Status.IsOperationSuccessful())
            {
                var registration = new AccountInternal
                {
                    Email = request.Email,
                    FirstName = request.FirstName,
                    UserName = request.UserName,
                    ImageServerAddress = SystemConstants.ImageServerAddress.ToString(),
                    UrlRegistrationLink =
                        new Uri(new Uri(SystemConstants.WebUrl.Value),
                            "index.html#/activation/" +
                            HttpUtility.UrlEncode(Convert.ToBase64String(Encoding.UTF8.GetBytes(request.UserName))) + "/" +
                            HttpUtility.UrlEncode((Convert.ToBase64String(Encoding.UTF8.GetBytes(response.Data.UserGuid)))))
                            .ToString(),
                    UrlVerificationLink =
                        new Uri(new Uri(SystemConstants.WebUrl.Value),
                            "index.html#/activation/" +
                            HttpUtility.UrlEncode(Convert.ToBase64String(Encoding.UTF8.GetBytes(request.UserName))) + "/")
                            .ToString(),
                    UserGuid = response.Data.UserGuid,
                    UserId = response.Data.UserId
                };

                var html = ViewRenderer.RenderView("~/Views/Home/OutMail/_RegistrationTemplatePartial.cshtml",
                        registration);
                Helper.SendMail(registration.Email, "Activation Mail", html,
                    bodyImages: new List<string> { "~/Images/iLoop.png" });
            }
            return Request.SystemResponse<string>(response.Status);
        }