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:
commit
bda8cbc466
@ -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";
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user