public async Task <IActionResult> AddEmployeeAsync([FromBody] Infrastructure.Entities.Employee employee) { var userIdentity = Request.Headers["claims_userid"]; if (userIdentity.Count == 0) { return(NotFound(new { Message = $"You are not authorized to add employee." })); } employee.CreatedBy = employee.ModifiedBy = userIdentity; try { // Commit Add Employee var addedEmployee = await _employeeService.AddEmployee(employee); var eployeeChangedEvent = new EmployeeAddIntegrationEvent(employee.Id, employee.FirstName, employee.LastName, employee.ModifiedBy); await _employeeIntegrationEventService.AddAndSaveEventAsync(eployeeChangedEvent); await _employeeIntegrationEventService.PublishEventsThroughEventBusAsync(eployeeChangedEvent); return(Ok(employee.Id)); } catch (Exception ex) { throw new Exception(ex.Message); } }
public async Task <ActionResult> UpdateEmployeeAsync([FromBody] Infrastructure.Entities.Employee employeeToUpdate) { var userIdentity = Request.Headers["claims_userid"]; if (userIdentity.Count == 0) { return(NotFound(new { Message = $"You are not authorized to add employee." })); } employeeToUpdate.ModifiedBy = userIdentity; var existingEmployee = await _employeeService.GetByIdAsync(employeeToUpdate.Id); if (existingEmployee == null) { return(NotFound(new { Message = $"Employee with id {employeeToUpdate.Id} not found." })); } else { // Update Employee existingEmployee.FirstName = employeeToUpdate.FirstName; existingEmployee.LastName = employeeToUpdate.LastName; existingEmployee.Address = employeeToUpdate.Address; existingEmployee.Contact = employeeToUpdate.Contact; existingEmployee.DepartmentName = employeeToUpdate.DepartmentName; existingEmployee.EmpCode = employeeToUpdate.EmpCode; existingEmployee.IsActive = employeeToUpdate.IsActive; existingEmployee.JoiningDate = employeeToUpdate.JoiningDate; existingEmployee.ModifiedBy = employeeToUpdate.ModifiedBy; // Subscribe Event var eployeeChangedEvent = new EmployeeChangedIntegrationEvent(employeeId: existingEmployee.Id, firstName: employeeToUpdate.FirstName, lastName: employeeToUpdate.LastName, address: employeeToUpdate.Address, contact: employeeToUpdate.Contact, departmentName: employeeToUpdate.DepartmentName, joiningDate: employeeToUpdate.JoiningDate, empCode: employeeToUpdate.EmpCode, isActive: employeeToUpdate.IsActive, modifiedBy: employeeToUpdate.ModifiedBy, // Default Values For Salary salary: 2000, startDate: DateTime.Now, endDate: DateTime.Now.AddDays(90)); await _employeeIntegrationEventService.AddAndSaveEventAsync(eployeeChangedEvent); await _employeeIntegrationEventService.PublishEventsThroughEventBusAsync(eployeeChangedEvent); // Commit Update Employee await _employeeService.UpdateEmployee(existingEmployee); return(NoContent()); } }