/// <summary>
        /// Create new recover account session
        /// </summary>
        /// <param name="email"></param>
        /// <returns></returns>
        public async Task <ResultModel <RecoverSessionModel> > CreateRecoverSession(string email)
        {
            ResultModel <RecoverSessionModel> result = new ResultModel <RecoverSessionModel>();
            var account = await GetAccountByEmail(email);

            if (account == null)
            {
                result.Status = ActionStatus.NotFound;
            }
            else
            {
                var newCode = Guid.NewGuid();
                var session = new RecoverSession
                {
                    AccountId   = account.AccountId,
                    ExpiredTime = DateTime.Now.AddMinutes(15),
                    Code        = newCode
                };

                var existItems = await UnitOfWork.RecoverSessionRepository
                                 .GetManyAsync(c => c.AccountId == account.AccountId);

                if (existItems.Any())
                {
                    UnitOfWork.RecoverSessionRepository.DeleteRange(existItems);
                }

                UnitOfWork.RecoverSessionRepository.Add(session);

                var iResult = await UnitOfWork.CommitAsync();

                if (iResult > 0)
                {
                    session.Account = new Account
                    {
                        Id          = account.AccountId,
                        AccountName = account.AccountName,
                        AccountInfo = new AccountInfo {
                            DisplayName = account.DisplayName
                        }
                    };

                    result.Status = ActionStatus.Ok;
                    result.Data   = session.ToModel();
                }
            }
            return(result);
        }
Esempio n. 2
0
 public static RecoverSessionModel ToModel(this RecoverSession entity)
 {
     return(ModelRegister.Mapper.Map <RecoverSessionModel>(entity));
 }