Merge pull request 'Fixed the employee duplication bug while adding the email to employee that does not have one' (#20) from Ashutosh_Bug_#75_Employee_duplicatation into Feature_Task_management

Reviewed-on: #20
This commit is contained in:
Vikas Nale 2025-04-16 05:24:17 +00:00
commit bda8cbc466

View File

@ -191,6 +191,7 @@ namespace MarcoBMS.Services.Controllers
[HttpPost("manage")] [HttpPost("manage")]
public async Task<IActionResult> CreateUser([FromForm] CreateUserDto model) public async Task<IActionResult> CreateUser([FromForm] CreateUserDto model)
{ {
int tenantId = _userHelper.GetTenantId();
if (model == null) if (model == null)
return BadRequest(ApiResponse<object>.ErrorResponse("Invalid data", "Invaild Data", 400)); return BadRequest(ApiResponse<object>.ErrorResponse("Invalid data", "Invaild Data", 400));
@ -201,12 +202,14 @@ namespace MarcoBMS.Services.Controllers
{ {
// Check if user already exists by email // Check if user already exists by email
IdentityUser? existingUser = await _userHelper.GetRegisteredUser(model.Email); IdentityUser? existingUser = await _userHelper.GetRegisteredUser(model.Email);
var existingEmployee = await _context.Employees.FirstOrDefaultAsync(e => e.Id == model.Id);
if (existingUser != null) if (existingUser != null)
{ {
/* Identity user Exists - Create/update employee Employee */ /* Identity user Exists - Create/update employee Employee */
// Update Employee record // Update Employee record
var existingEmployee = await _context.Employees.FirstOrDefaultAsync(e => e.Email == model.Email && e.Id == model.Id); existingEmployee = await _context.Employees.FirstOrDefaultAsync(e => e.Email == model.Email && e.Id == model.Id);
if (existingEmployee != null) if (existingEmployee != null)
{ {
existingEmployee = GetUpdateEmployeeModel(model, existingEmployee, existingUser); existingEmployee = GetUpdateEmployeeModel(model, existingEmployee, existingUser);
@ -231,7 +234,9 @@ namespace MarcoBMS.Services.Controllers
{ {
UserName = model.Email, UserName = model.Email,
Email = model.Email, Email = model.Email,
EmailConfirmed = true EmailConfirmed = true,
TenantId = tenantId
}; };
// Create Identity User // Create Identity User
@ -239,19 +244,42 @@ namespace MarcoBMS.Services.Controllers
if (!result.Succeeded) if (!result.Succeeded)
return Ok(ApiResponse<object>.ErrorResponse("Failed to create user", result.Errors, 400)); return Ok(ApiResponse<object>.ErrorResponse("Failed to create user", result.Errors, 400));
Employee newEmployee = GetNewEmployeeModel(model, TenantId, user.Id); if (existingEmployee == null)
_context.Employees.Add(newEmployee);
await _context.SaveChangesAsync();
/* SEND USER REGISTRATION MAIL*/
var token = await _userManager.GeneratePasswordResetTokenAsync(user);
var resetLink = $"{_configuration["AppSettings:WebFrontendUrl"]}/reset-password?token={WebUtility.UrlEncode(token)}";
if (newEmployee.FirstName != null)
{ {
await _emailSender.SendResetPasswordEmailOnRegister(user.Email, newEmployee.FirstName, resetLink); Employee newEmployee = GetNewEmployeeModel(model, TenantId, user.Id);
_context.Employees.Add(newEmployee);
await _context.SaveChangesAsync();
/* SEND USER REGISTRATION MAIL*/
var token = await _userManager.GeneratePasswordResetTokenAsync(user);
var resetLink = $"{_configuration["AppSettings:WebFrontendUrl"]}/reset-password?token={WebUtility.UrlEncode(token)}";
if (newEmployee.FirstName != null)
{
await _emailSender.SendResetPasswordEmailOnRegister(user.Email, newEmployee.FirstName, resetLink);
}
} }
else
{
existingEmployee.Email = model.Email;
existingEmployee = GetUpdateEmployeeModel(model, existingEmployee, existingUser);
_context.Employees.Update(existingEmployee);
await _context.SaveChangesAsync();
/* SEND USER REGISTRATION MAIL*/
var token = await _userManager.GeneratePasswordResetTokenAsync(user);
var resetLink = $"{_configuration["AppSettings:WebFrontendUrl"]}/reset-password?token={WebUtility.UrlEncode(token)}";
if (existingEmployee.FirstName != null)
{
await _emailSender.SendResetPasswordEmailOnRegister(user.Email, existingEmployee.FirstName, resetLink);
}
}
responsemessage = "User created successfully. Password reset link is sent to registered email"; responsemessage = "User created successfully. Password reset link is sent to registered email";
} }