/// <summary>Method create an access token for current user.</summary> /// <param name="userId">Id of user to create token.</param> /// <returns>Created access toker, or null if was error.</returns> /// <exception cref="InsertDbDataException"/> /// <exception cref="InvalidOperationException"/> public string CreateAccessToken(decimal userId) { string token = string.Empty; DateTime now = DateTime.UtcNow; using (var context = _ContextGenerator.GenerateContext()) { DeleteOldUserAccessTokens(userId, now, context); User currentUser = _UserManager.GetUserById(userId); if (currentUser != null) { token = GenerateAccessToken(now); User_Access access = new User_Access() { Access_Token = token, Date_Creation = now, Date_Expiration = now.AddDays(1), ID_User = currentUser.ID_User }; try { context.User_Access.Add(access); context.SaveChanges(); } catch (DbEntityValidationException ex) { context.User_Access.Remove(access); List <ValidationError> validationErrors = ex.RetrieveValidationsErrors(); throw new InsertDbDataException(validationErrors); } catch (DbUpdateException ex) { context.User_Access.Remove(access); throw new InvalidOperationException("Unable to save user-access", ex); } } } return(token); }
/// <summary>Method retrieve a users from th DB by it ids.</summary> /// <param name="userIds">Ids of users to retrieve.</param> /// <returns>List with retrieving results.</returns> /// <exception cref="InvalidOperationException">No users found.</exception> private IEnumerable <User> GetUsersByIds(IEnumerable <decimal> userIds) { List <User> users = new List <User>(); foreach (var userId in userIds) { User usr = _UserManager.GetUserById(userId); if (usr != null) { users.Add(usr); } } if (users.Count < 1) { throw new InvalidOperationException("Users for project not found."); } return(users); }