public async Task <HttpResponseMessage> Forgot(string email)
 {
     if (!string.IsNullOrEmpty(email) && email.EmailPatternIsValid())
     {
         //check whether user exists or not.
         var user = this._accountService.GetByEmail(email);
         if (user != null)
         {
             //create forgot password token.
             var tokenId = this._tokenService.Add(user.Id);
             //get email setting to send email to user.
             var emailSetting = this._emailServerSettingService.GetServerSetting();
             if (emailSetting != null)
             {
                 //hash token value in url.
                 string url         = $"{AppSettingManager.BaseURL}resetPassword?token={tokenId}";
                 var    credentials = new Credentials
                 {
                     UserName   = emailSetting.UserName,
                     Password   = emailSetting.Password,
                     Host       = emailSetting.Host,
                     Port       = emailSetting.Port,
                     EnableSsl  = emailSetting.EnableSsl,
                     IsBodyHtml = emailSetting.IsBodyHtml
                 };
                 //async sent email.No need wait for response.
                 Task.Run(() => Email.TrySendEmail(credentials, emailSetting.UserName, MessageString.FORGOT_PASSWORD_EMAIL_SUBJECT, EmailTemplates.GetForgetPasswordMessage(user.FirstName, user.LastName, url), new List <string>()
                 {
                     user.Email
                 }, null, null, null));
             }
             return(await Task.Run(() => Request.CreateResponse(HttpStatusCode.OK, new ResponseMessage <object>(true, MessageString.FORGOT_PASSWORD, null))));
         }
         //user not exists.
         return(await Task.Run(() => Request.CreateResponse(HttpStatusCode.OK, new ResponseMessage <object>(false, MessageString.EMAIL_NOT_EXISTS, null))));
     }
     //invalid request.
     return(await Task.Run(() => Request.CreateResponse(HttpStatusCode.OK, new ResponseMessage <object>(false, MessageString.INVALID_REQUEST_PARMS, null))));
 }