Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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));
            }
        }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
        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);
        }
Esempio n. 7
0
        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();
        }