private async Task <User> PrepareUser(UserDto dto, string roleName) { var entity = await UserContext.Users.Include(u => u.UserRoles).Where(u => u.Username == dto.Username).FirstOrDefaultAsync(); // This user already exists if (entity != null) { return(null); } // Create role if not exists var roleEntity = await UserContext.Roles.FirstOrDefaultAsync(r => r.Name == roleName) ?? new Role() { Id = UserContext.Roles.Count() + 1, Name = roleName }; // Get identifier of lastly created user var userEntity = QueryGenericHelper.GetLastEntity(UserContext.Users); var nextUserID = userEntity.Id + 1; // List of roles that will be added to new user var roles = new List <UserRoles> { new UserRoles() { User = new User() { Id = nextUserID, Username = dto.Username }, Role = roleEntity } }; // Encryption process CryptographyHelper.CreatePasswordHash(dto.Password, out var passwordHash, out var passwordSalt); // Creation of new user var newUser = new User { Id = nextUserID, Username = dto.Username, UserRoles = roles, PasswordHash = passwordHash, PasswordSalt = passwordSalt }; return(newUser); }
/// <summary> /// Creation of customer /// </summary> /// <param name="customerDto">Data transfer object for customers</param> /// <returns></returns> public async Task <Customer> CreateCustomer(CustomerRegisterDto customerDto) { if (customerDto.FirstName == string.Empty || customerDto.Lastname == string.Empty) { return(null); // Creation cannot be performed } var user = await _userHelperService.PrepareUser(new UserDto { Username = customerDto.Username, Password = customerDto.Password }, "Customer"); if (user != null) { user.Id++; } // Get identifier of lastly created user var userId = QueryGenericHelper.GetLastEntity(UserContext.Users); // Get identifier of lastly created customer var customerId = QueryGenericHelper.GetLastEntity(UserContext.Customers); // Creation of customer object from user a customer data var customerResult = new Customer { Id = customerId?.Id + 1 ?? 1, FirstName = customerDto.FirstName, LastName = customerDto.Lastname, Discount = customerDto.Discount, User = user, UserId = userId?.Id + 1 ?? 1 }; // Add new object to the customer collection UserContext.Customers.Add(customerResult); // Return new added object return(customerResult); }
public void GetLastEntity__ReturnsGenericEntity() { // Arrange var ctx = new Mock <UserContext>(); var users = new List <User>() { new User { Username = "******", Id = 1 }, new User { Username = "******", Id = 2 } }; var mockDbSet = MockHelper.GetMockDbSet <User>(users); ctx.Setup(c => c.Set <User>()).Returns(mockDbSet.Object); // Act var entity = QueryGenericHelper.GetLastEntity(mockDbSet.Object.AsQueryable() as DbSet <User>); // Assert Assert.Equal(2, entity.Id); }