public async Task ShouldUpdate_Employee_UsingEditEmployeeInfoCommand() { var command = new EditEmployeeInfo { Id = new Guid("4b900a74-e2d9-4837-b9a4-9e828752716e"), SupervisorId = new Guid("4b900a74-e2d9-4837-b9a4-9e828752716e"), LastName = "Hello", FirstName = "World", MiddleInitial = "Z", SSN = "523019999", Telephone = "214-654-9874", MaritalStatus = "S", Exemptions = 2, PayRate = 25.00M, StartDate = new DateTime(2021, 8, 29), IsActive = true }; await _employeeCmdHdlr.Handle(command); Employee result = await _dbContext.Employees.FindAsync(command.Id); Assert.Equal(command.LastName, result.EmployeeName.LastName); Assert.Equal(command.FirstName, result.EmployeeName.FirstName); Assert.Equal(command.SSN, result.SSN); }
public async Task ShouldAdd_EmployeeAddress_UsingEmployeeAggregate() { EditEmployeeInfo employee = GetEmployeeInfoForEditing(); EditEmployeeAddressInfo newAddress = new EditEmployeeAddressInfo { AddressId = 0, EmployeeId = employee.Id, AddressLine1 = "32145 Main Street", AddressLine2 = "3rd Floor", City = "Dallas", StateCode = "TX", Zipcode = "75021", Status = RecordStatus.New }; employee.Addresses.Add(newAddress); await _employeeCmdHdlr.Handle(employee); Employee result = await _dbContext.Employees.FindAsync(employee.Id); var found = (from item in result.Addresses() where item.AddressDetails.AddressLine1.Equals(newAddress.AddressLine1) && item.AddressDetails.AddressLine2.Equals(newAddress.AddressLine2) && item.AddressDetails.City.Equals(newAddress.City) && item.AddressDetails.StateCode.Equals(newAddress.StateCode) && item.AddressDetails.Zipcode.Equals(newAddress.Zipcode) select item).SingleOrDefault(); Assert.NotNull(found); }
public async Task <IActionResult> EditEmployeeInfo([FromBody] EditEmployeeInfo writeModel) { try { await _employeeCmdHdlr.Handle(writeModel); return(Ok()); } catch (Exception ex) { _logger.LogError(ex.Message); return(BadRequest(ex.Message)); } }
private EditEmployeeInfo GetEmployeeInfoForEditing() { Guid empID = new Guid("4b900a74-e2d9-4837-b9a4-9e828752716e"); EditEmployeeInfo employeeInfo = new EditEmployeeInfo { Id = empID, SupervisorId = empID, LastName = "Sanchez", FirstName = "Ken", MiddleInitial = "J", SSN = "123789999", Telephone = "817-987-1234", MaritalStatus = "M", Exemptions = 5, PayRate = 40.00M, StartDate = new DateTime(1998, 12, 2), IsActive = true }; EditEmployeeAddressInfo addressInfo1 = new EditEmployeeAddressInfo { AddressId = 1, EmployeeId = empID, AddressLine1 = "321 Tarrant Pl", City = "Fort Worth", StateCode = "TX", Zipcode = "78965" }; EditEmployeeAddressInfo addressInfo2 = new EditEmployeeAddressInfo { AddressId = 2, EmployeeId = empID, AddressLine1 = "1 Desoto Plaza", AddressLine2 = "1st Floor", City = "Desoto", StateCode = "TX", Zipcode = "75115" }; employeeInfo.Addresses.Add(addressInfo1); employeeInfo.Addresses.Add(addressInfo2); return(employeeInfo); }
public async Task ShouldDelete_EmployeeAddress_UsingEmployeeAggregate() { EditEmployeeInfo employee = GetEmployeeInfoForEditing(); EditEmployeeAddressInfo address = employee.Addresses.Where(a => a.AddressId == 1).FirstOrDefault(); address.Status = RecordStatus.Deleted; await _employeeCmdHdlr.Handle(employee); Employee result = await _dbContext.Employees.FindAsync(employee.Id); var found = (from item in result.Addresses() where item.Id.Equals(address.AddressId) select item).SingleOrDefault(); Assert.Null(found); }
public async Task ShouldUpdate_EmployeeInfo_UsingEmployeeController() { var command = new EditEmployeeInfo { Id = new Guid("4b900a74-e2d9-4837-b9a4-9e828752716e"), SupervisorId = new Guid("4b900a74-e2d9-4837-b9a4-9e828752716e"), LastName = "Hello", FirstName = "World", MiddleInitial = "Z", SSN = "523019999", Telephone = "214-654-9874", MaritalStatus = "S", Exemptions = 2, PayRate = 25.00M, StartDate = new DateTime(2021, 8, 29), IsActive = true }; string jsonEmployee = JsonConvert.SerializeObject(command); HttpContent content = new StringContent(jsonEmployee, Encoding.UTF8, "application/json"); var response = await _client.PutAsync($"{_serviceAddress}{_rootAddress}/editemployeeinfo/{command.Id}", content); Assert.True(response.IsSuccessStatusCode); }
public static async Task Execute(EditEmployeeInfo model, IEmployeeAggregateRepository repo, IUnitOfWork unitOfWork) { var employee = await repo.GetByIdAsync(model.Id) ?? throw new InvalidOperationException($"An employee with id '{model.Id}' could not be found!"); if (model.Status == RecordStatus.Modified) { employee.UpdateSupervisorId(SupervisorId.Create(model.SupervisorId)); employee.UpdateEmployeeName(PersonName.Create(model.FirstName, model.LastName, model.MiddleInitial)); employee.UpdateSSN(SSN.Create(model.SSN)); employee.UpdateTelephone(PhoneNumber.Create(model.Telephone)); employee.UpdateMaritalStatus(MaritalStatus.Create(model.MaritalStatus)); employee.UpdateTaxExemptions(TaxExemption.Create(model.Exemptions)); employee.UpdatePayRate(PayRate.Create(model.PayRate)); employee.UpdateLastModifiedDate(); if (model.IsActive) { employee.Activate(); } else if (!model.IsActive) { employee.Deactivate(); } } if (model.Addresses != null && model.Addresses.Count > 0) { foreach (var address in model.Addresses) { if (address.Status == RecordStatus.New) { employee.AddAddress(0, AddressVO.Create(address.AddressLine1, address.AddressLine2, address.City, address.StateCode, address.Zipcode)); } else if (address.Status == RecordStatus.Modified) { employee.UpdateAddress(address.AddressId, AddressVO.Create(address.AddressLine1, address.AddressLine2, address.City, address.StateCode, address.Zipcode)); } else if (address.Status == RecordStatus.Deleted) { employee.DeleteAddress(address.AddressId); } } } if (model.Contacts != null && model.Contacts.Count > 0) { foreach (var contact in model.Contacts) { if (contact.Status == RecordStatus.New) { employee.AddContactPerson(0, PersonName.Create(contact.FirstName, contact.LastName, contact.MiddleInitial), PhoneNumber.Create(contact.Telephone), contact.Notes); } else if (contact.Status == RecordStatus.Modified) { employee.UpdateContactPerson(contact.PersonId, PersonName.Create(contact.FirstName, contact.LastName, contact.MiddleInitial), PhoneNumber.Create(contact.Telephone), contact.Notes); } if (contact.Status == RecordStatus.Deleted) { employee.DeleteContactPerson(contact.PersonId); } } } await unitOfWork.Commit(); }