public async Task <HttpResponseMessage> Post(UserTransportModel model) { try { var result = await _userRepository.AddUserAsnyc(model, "User"); return(Request.CreateResponse(HttpStatusCode.OK, result)); } catch { return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, "Could not create user.")); } }
/// <inheritdoc /> public Task <long?> AddUserAsnyc(UserTransportModel model, string firstRoleName) { var roleId = _roleRepository.GetRoleIdByNameAsync(firstRoleName).Result; if (!roleId.HasValue) { return(null); } model.Id = _store.Value.Count + 1; var line = $"{model.Id};{roleId};{model.UserName};{model.Email};{model.PasswordHash};{model.EmailConfirmed};{model.LockoutEnabled}"; try { File.AppendAllLines(@"Stores\UserStore.txt", new[] { line }); } catch (Exception e) { return(Task.FromResult(default(long?))); } return(Task.FromResult(model.Id as long?)); }
/// <inheritdoc /> public async Task <long?> AddUserAsnyc(UserTransportModel model, string firstRoleName) { var roleId = await _roleRepository.GetRoleIdByNameAsync(firstRoleName); if (!roleId.HasValue) { HandleException(new ArgumentException("Role not found.", nameof(firstRoleName))); return(null); } var newUser = model.ToEntity(); newUser.EmailConfirmed = true; newUser.AccessFailedCount = 0; newUser.LockoutEnabled = false; newUser.LockoutEndDateUtc = null; newUser.SecurityStamp = Guid.NewGuid().ToString("N"); var userRole = new UserRole { RoleId = roleId.Value }; newUser.UserRoles.Add(userRole); DbContext.Users.Add(newUser); try { await DbContext.SaveChangesAsync(); if (newUser.Id == 0) { await DbContext.Entry(newUser).ReloadAsync(); } return(newUser.Id); } catch (Exception ex) { HandleException(ex); return(default(long?)); } }
/// <summary> /// Converts the <paramref name="source"/> to its entity representation. /// </summary> /// <param name="source">The transportable model.</param> /// <returns>The entity representation.</returns> public static User ToEntity(this UserTransportModel source) { var result = Mapper.Map <User>(source); return(result); }