Example #1
0
        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);
        }
Example #2
0
        /// <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);
        }
Example #3
0
        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);
        }