Exemple #1
0
        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);
        }
Exemple #2
0
        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();
        }