public async Task ShouldDelete_Employee_UsingDeleteEmployeeInfoCommand() { Employee employee = await _dbContext.Employees.FindAsync(new Guid("e6b86ea3-6479-48a2-b8d4-54bd6cbbdbc5")); Assert.NotNull(employee); var command = new DeleteEmployeeInfo { Id = employee.Id, }; await _employeeCmdHdlr.Handle(command); Employee result = await _dbContext.Employees.FindAsync(command.Id); Assert.Null(result); }
public static async Task Execute(DeleteEmployeeInfo 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 (employee.Addresses().Count > 0) { foreach (Address address in employee.Addresses()) { employee.DeleteAddress(address.Id); } } if (employee.ContactPersons().Count > 0) { foreach (ContactPerson contact in employee.ContactPersons()) { employee.DeleteContactPerson(contact.Id); } } repo.Delete(employee); await unitOfWork.Commit(); }