/// <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); }
public static RecoverSessionModel ToModel(this RecoverSession entity) { return(ModelRegister.Mapper.Map <RecoverSessionModel>(entity)); }