public void ConstructorAssignsPropertiesFromParameters(Guid newPayrollId, Employee employee, EmployeePayrollNew employeePayroll)
    {
        var sut = new EmployeePayrollCreateCommand(employee, newPayrollId, employeePayroll);

        sut.Employee.Should().Be(employee);
        sut.NewPayrollId.Should().Be(newPayrollId);
        sut.NewPayroll.Should().Be(employeePayroll);
    }
    public override Task <ActionResult <EmployeePayroll> > HandleAsync([FromBody] EmployeePayrollCreateRequest request, CancellationToken token) =>
    queryDispatcher
    .Dispatch(new EmployeeQuery(request.EmployeeId), token)
    .Bind(employee =>
    {
        var newPayroll = new EmployeePayrollNew
        {
            CheckDate    = request.CheckDate,
            GrossPayroll = request.GrossPayroll,
        };

        var newPayrollId = generator.Generate();

        var command = new EmployeePayrollCreateCommand(employee, newPayrollId, newPayroll);

        return(commandDispatcher.Dispatch(command).ToTryOption());
    })
    .Match <EmployeePayroll, ActionResult <EmployeePayroll> >(
        employeePayroll => employeePayroll,
        () => NotFound($"Could not find employee [{request.EmployeeId}]"),
        ex => new APIErrorResult(ex.Message));