public async Task <IdentityResult> AddRoleToUser(CustomerInfoDataTransferObject customerUserDataTransferObject,
                                                         string role, UserManager <CustomerInfo> userManager)
        {
            var user = ConvertCustomerUserDataTransferObjectToCustomerUser(customerUserDataTransferObject);

            return(await _database.Customers.AddRoleToUserInDb(userManager, role, user));
        }
        public CustomerInfoDataTransferObject FindUserByUsingUserNameOrEmail(string email,
                                                                             UserManager <CustomerInfo> userManager)
        {
            var customerUserTask = _database.Customers.FindUser(userManager, email);
            var customerUserDataTransferObject = new CustomerInfoDataTransferObject
            {
                Id                   = customerUserTask.Result.Id,
                UserName             = customerUserTask.Result.UserName,
                PasswordHash         = customerUserTask.Result.PasswordHash,
                AccessFailedCount    = customerUserTask.Result.AccessFailedCount,
                ConcurrencyStamp     = customerUserTask.Result.ConcurrencyStamp,
                Email                = customerUserTask.Result.Email,
                EmailConfirmed       = customerUserTask.Result.EmailConfirmed,
                LockoutEnabled       = customerUserTask.Result.LockoutEnabled,
                LockoutEnd           = customerUserTask.Result.LockoutEnd,
                NormalizedEmail      = customerUserTask.Result.NormalizedEmail,
                PhoneNumber          = customerUserTask.Result.PhoneNumber,
                NormalizedUserName   = customerUserTask.Result.NormalizedUserName,
                PhoneNumberConfirmed = customerUserTask.Result.PhoneNumberConfirmed,
                SecurityStamp        = customerUserTask.Result.SecurityStamp,
                TwoFactorEnabled     = customerUserTask.Result.TwoFactorEnabled,
                CustomerId           = customerUserTask.Result.CustomerId
            };

            return(customerUserDataTransferObject);
        }
        public IActionResult CreateCustomer([FromBody] CustomerCreateModel customer)
        {
            if (customer == null || !ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            var newCustomer = new CustomerDataTransferObject
            {
                Name     = customer.Name,
                Adress   = customer.Adress,
                Code     = customer.Code,
                Discount = customer.Discount
            };

            var newCustomerId = _customerService.CreateCustomer(newCustomer);

            var customerUser = new CustomerInfoDataTransferObject
            {
                UserName   = customer.Email,
                Email      = customer.Email,
                CustomerId = newCustomerId
            };

            _customerService.AddCustomerUser(_userManager, customerUser, customer.Password).Wait();

            return(CreatedAtRoute("GetCustomer", new { id = newCustomerId },
                                  new CustomerGetModel
            {
                Id = newCustomerId,
                Name = newCustomer.Name,
                Code = newCustomer.Code,
                Adress = newCustomer.Adress,
                Discount = newCustomer.Discount
            }));
        }
        public Task <bool> CheckIsUserInRole(UserManager <CustomerInfo> userManager,
                                             CustomerInfoDataTransferObject customerUserDataTransferObject,
                                             string role)
        {
            var user = ConvertCustomerUserDataTransferObjectToCustomerUser(customerUserDataTransferObject);

            return(userManager.IsInRoleAsync(user, role));
        }
        public async Task <IdentityResult> AddCustomerUser(UserManager <CustomerInfo> userManager,
                                                           CustomerInfoDataTransferObject customerUserDataTransferObject,
                                                           string password)
        {
            var customerUser = ConvertCustomerUserDataTransferObjectToCustomerUser(customerUserDataTransferObject);

            return(await _database.Customers.Create(userManager, customerUser, password));
        }
 private CustomerInfo ConvertCustomerUserDataTransferObjectToCustomerUser(
     CustomerInfoDataTransferObject customerUserDataTransferObject)
 {
     return(new CustomerInfo
     {
         Id = customerUserDataTransferObject.Id,
         UserName = customerUserDataTransferObject.UserName,
         PasswordHash = customerUserDataTransferObject.PasswordHash,
         AccessFailedCount = customerUserDataTransferObject.AccessFailedCount,
         ConcurrencyStamp = customerUserDataTransferObject.ConcurrencyStamp,
         Email = customerUserDataTransferObject.Email,
         EmailConfirmed = customerUserDataTransferObject.EmailConfirmed,
         LockoutEnabled = customerUserDataTransferObject.LockoutEnabled,
         LockoutEnd = customerUserDataTransferObject.LockoutEnd,
         NormalizedEmail = customerUserDataTransferObject.NormalizedEmail,
         PhoneNumber = customerUserDataTransferObject.PhoneNumber,
         NormalizedUserName = customerUserDataTransferObject.NormalizedUserName,
         PhoneNumberConfirmed = customerUserDataTransferObject.PhoneNumberConfirmed,
         SecurityStamp = customerUserDataTransferObject.SecurityStamp,
         TwoFactorEnabled = customerUserDataTransferObject.TwoFactorEnabled,
         CustomerId = customerUserDataTransferObject.CustomerId
     });
 }