```json
{
  "sym_variables": [
    ("x0", "hours worked by Jean"),
    ("x1", "hours worked by Bill"),
    ("x2", "hours worked by Mary"),
    ("x3", "hours worked by Dale"),
    ("x4", "hours worked by Ringo"),
    ("x5", "hours worked by Bobby"),
    ("x6", "hours worked by Peggy")
  ],
  "objective_function": "5*x0 + 6*x1 + 2*x2 + 8*x3 + 1*x4 + 7*x5 + 7*x6",
  "constraints": [
    "1*x3 + 14*x5 >= 17",
    "1*x3 + 1*x6 >= 37",
    "1*x3 + 5*x4 >= 16",
    "4*x0 + 1*x6 >= 28",
    "5*x4 + 1*x6 >= 16",
    "10*x1 + 14*x5 >= 22",
    "4*x0 + 1*x3 >= 42",
    "4*x0 + 14*x5 >= 24",
    "4*x0 + 2*x2 >= 24",
    "10*x1 + 1*x3 + 5*x4 >= 27",
    "4*x0 + 14*x5 + 1*x6 >= 27",
    "10*x1 + 1*x3 + 5*x4 >= 31",
    "4*x0 + 14*x5 + 1*x6 >= 31",
    "4*x0 + 10*x1 + 2*x2 + 1*x3 + 5*x4 + 14*x5 + 1*x6 >= 31",
    "-5*x1 + 1*x6 >= 0",
    "10*x1 + 5*x4 <= 302",
    "1*x3 + 5*x4 <= 242",
    "4*x0 + 5*x4 <= 72",
    "10*x1 + 14*x5 <= 70",
    "10*x1 + 1*x6 <= 139",
    "2*x2 + 5*x4 <= 62",
    "2*x2 + 1*x3 <= 61",
    "2*x2 + 1*x6 <= 217",
    "4*x0 + 1*x3 <= 152",
    "4*x0 + 10*x1 <= 151",
    "14*x5 + 1*x6 <= 227",
    "10*x1 + 1*x3 <= 195",
    "4*x0 + 2*x2 <= 98",
    "5*x4 + 1*x6 <= 274",
    "5*x4 + 14*x5 + 1*x6 <= 306",
    "4*x0 + 14*x5 + 1*x6 <= 300",
    "10*x1 + 1*x3 + 14*x5 <= 97",
    "4*x0 + 1*x3 + 14*x5 <= 251",
    "1*x3 + 5*x4 + 1*x6 <= 167",
    "10*x1 + 2*x2 + 5*x4 <= 227",
    "10*x1 + 2*x2 + 1*x6 <= 252",
    "1*x3 + 14*x5 + 1*x6 <= 159",
    "2*x2 + 1*x3 + 5*x4 <= 78",
    "4*x0 + 10*x1 + 5*x4 <= 298",
    "2*x2 + 5*x4 + 14*x5 <= 139",
    "10*x1 + 5*x4 + 1*x6 <= 279",
    "2*x2 + 1*x3 + 14*x5 <= 161",
    "4*x0 + 2*x2 + 1*x6 <= 54",
    "4*x0 + 2*x2 + 14*x5 <= 52"
  ]
}
```

```python
import gurobipy as gp

# Create a new model
model = gp.Model("Minimize_Labor_Cost")

# Create variables
jean = model.addVar(vtype=gp.GRB.INTEGER, name="jean")
bill = model.addVar(vtype=gp.GRB.INTEGER, name="bill")
mary = model.addVar(vtype=gp.GRB.INTEGER, name="mary")
dale = model.addVar(vtype=gp.GRB.INTEGER, name="dale")
ringo = model.addVar(vtype=gp.GRB.CONTINUOUS, name="ringo")
bobby = model.addVar(vtype=gp.GRB.INTEGER, name="bobby")
peggy = model.addVar(vtype=gp.GRB.INTEGER, name="peggy")


# Set objective function
model.setObjective(5*jean + 6*bill + 2*mary + 8*dale + 1*ringo + 7*bobby + 7*peggy, gp.GRB.MINIMIZE)

# Add constraints
model.addConstr(dale + 14*bobby >= 17)
model.addConstr(dale + peggy >= 37)
model.addConstr(dale + 5*ringo >= 16)
model.addConstr(4*jean + peggy >= 28)
model.addConstr(5*ringo + peggy >= 16)
model.addConstr(10*bill + 14*bobby >= 22)
model.addConstr(4*jean + dale >= 42)
model.addConstr(4*jean + 14*bobby >= 24)
model.addConstr(4*jean + 2*mary >= 24)
model.addConstr(10*bill + dale + 5*ringo >= 27)
model.addConstr(4*jean + 14*bobby + peggy >= 27)
model.addConstr(10*bill + dale + 5*ringo >= 31)
model.addConstr(4*jean + 14*bobby + peggy >= 31)
model.addConstr(4*jean + 10*bill + 2*mary + dale + 5*ringo + 14*bobby + peggy >= 31)
model.addConstr(-5*bill + peggy >= 0)
model.addConstr(10*bill + 5*ringo <= 302)
model.addConstr(dale + 5*ringo <= 242)
model.addConstr(4*jean + 5*ringo <= 72)
model.addConstr(10*bill + 14*bobby <= 70)
model.addConstr(10*bill + peggy <= 139)
model.addConstr(2*mary + 5*ringo <= 62)
model.addConstr(2*mary + dale <= 61)
model.addConstr(2*mary + peggy <= 217)
model.addConstr(4*jean + dale <= 152)
model.addConstr(4*jean + 10*bill <= 151)
model.addConstr(14*bobby + peggy <= 227)
model.addConstr(10*bill + dale <= 195)
model.addConstr(4*jean + 2*mary <= 98)
model.addConstr(5*ringo + peggy <= 274)
model.addConstr(5*ringo + 14*bobby + peggy <= 306)
model.addConstr(4*jean + 14*bobby + peggy <= 300)
model.addConstr(10*bill + dale + 14*bobby <= 97)
model.addConstr(4*jean + dale + 14*bobby <= 251)
model.addConstr(dale + 5*ringo + peggy <= 167)
model.addConstr(10*bill + 2*mary + 5*ringo <= 227)
model.addConstr(10*bill + 2*mary + peggy <= 252)
model.addConstr(dale + 14*bobby + peggy <= 159)
model.addConstr(2*mary + dale + 5*ringo <= 78)
model.addConstr(4*jean + 10*bill + 5*ringo <= 298)
model.addConstr(2*mary + 5*ringo + 14*bobby <= 139)
model.addConstr(10*bill + 5*ringo + peggy <= 279)
model.addConstr(2*mary + dale + 14*bobby <= 161)
model.addConstr(4*jean + 2*mary + peggy <= 54)
model.addConstr(4*jean + 2*mary + 14*bobby <= 52)


# Optimize model
model.optimize()

# Print results
if model.status == gp.GRB.OPTIMAL:
    print('Obj: %g' % model.objVal)
    for v in model.getVars():
        print('%s %g' % (v.varName, v.x))
elif model.status == gp.GRB.INFEASIBLE:
    print("The model is infeasible.")
else:
    print(f"Optimization ended with status {model.status}")

```