Код добавляет только часть «Пользователь», а не часть «Сотрудник». .
Код: Выделить всё
//Register employee
[HttpPost("register-employee")]
public async Task Register([FromBody] RegisterEmployeeRequestVM registration)
{
if (registration == null)
return BadRequest("Invalid registration data.");
if(!ModelState.IsValid)
return BadRequest(ModelState);
var employee = await _employeeService.RegisterEmployeeAsync(registration);
if(!employee.Success)
return BadRequest(employee.Message);
return Ok(employee);
}
public interface IEmployeeService
{
Task RegisterEmployeeAsync(RegisterEmployeeRequestVM registrationDto);
}
public class EmployeeService: IEmployeeService
{
private readonly UserManager _userManager;
private readonly AppDbContext _appDbContext;
public EmployeeService(UserManager userManager, AppDbContext context)
{
_appDbContext = context;
_userManager = userManager;
}
public async Task RegisterEmployeeAsync(RegisterEmployeeRequestVM registrationDto)
{
//var currentUsers = await _userManager.FindByNameAsync(registrationDto.Name);
//if(currentUsers == null)
//{
//}
var username = $"{registrationDto.EmpFirstName.ToLower()}.{registrationDto.EmpLastName}@SbyS.com";
// Create a new User
var user = new User
{
Id = Guid.NewGuid().ToString(),
UserName = registrationDto.UserName, // or a different username policy
Name = registrationDto.EmpFirstName + "" + registrationDto.EmpLastName,
Email = registrationDto.EmpEmail
// Set other properties if needed
};
var createUserResult = await _userManager.CreateAsync(user, registrationDto.Name+registrationDto.EmpDOB); // Set a secure password
if (!createUserResult.Succeeded)
return new OperationResult { Success = false, Message = string.Join(", ", createUserResult.Errors.Select(e => e.Description)) };
// Create a new Employee
var employee = new Employee
{
EmpFirstName = registrationDto.EmpFirstName,
EmpLastName = registrationDto.EmpLastName,
EmpDOB = registrationDto.EmpDOB,
EmpGender = registrationDto.EmpGender,
EmpAddress = registrationDto.EmpAddress,
EmpPhone = registrationDto.EmpPhone,
EmpEmail = registrationDto.EmpEmail,
RoleId = registrationDto.RoleId,
EmpTypeId = registrationDto.empTypeId,
UserId = user.Id,
};
_appDbContext.Employees.Add(employee);
await _appDbContext.SaveChangesAsync();
return new OperationResult { Success = true, Message = "Employee registered successfully." + "UserName:" + username + "Password:" + registrationDto.Password};
}
}
Подробнее здесь: https://stackoverflow.com/questions/789 ... only-saves