Beispiel #1
0
        public async Task <IActionResult> AddStaff([FromBody] StaffInfoDTO staffInfoDto)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var result = await _repository.AddStaff(staffInfoDto, User.FindFirst(ClaimTypes.NameIdentifier).Value);

            if (result.Succeeded)
            {
                return(StatusCode(201, "Staff has been added successfully!"));
            }

            throw new Exception("Add new user failed");
        }
        public async Task <IdentityResult> AddStaff(StaffInfoDTO staff, string adminId)
        {
            if (await FindUserByUserName(staff.Email) == null)
            {
                var newStaff = new ApplicationUser
                {
                    UserName = staff.Email,
                    Email    = staff.Email,
                    FullName = staff.FullName
                };

                var result = await _userManager.CreateAsync(newStaff, staff.Password);

                if (result.Succeeded)
                {
                    var newUser = await FindUserByUserName(staff.Email);

                    var currentAdmin = adminId;

                    await _context.Staff.AddAsync(new Staff
                    {
                        StaffId = newUser.Id,
                        AddBy   = currentAdmin,
                        AddDate = staff.AddDate,
                        Address = staff.Address,
                        Phone   = staff.Phone,
                        Salary  = staff.Salary
                    });

                    await _context.SaveChangesAsync();

                    return(await _userManager.AddToRoleAsync(newStaff, staff.Role));
                }
            }

            return(IdentityResult.Failed());
        }