To solve this optimization problem, we need to define variables for the number of egg sandwiches and ham sandwiches made. Let's denote these as `x` (number of egg sandwiches) and `y` (number of ham sandwiches). The objective is to maximize profit, which can be calculated based on the profit per sandwich type.

The constraints are:
1. Egg availability: Each egg sandwich requires 5 eggs, and each ham sandwich requires 1 egg. With a total of 50 eggs available, we have `5x + y <= 50`.
2. Ham availability: Each egg sandwich requires 2 slices of ham, and each ham sandwich requires 4 slices of ham. With a total of 60 slices of ham available, we have `2x + 4y <= 60`.

The profit is $3.5 per egg sandwich and $5 per ham sandwich, so the total profit can be represented as `3.5x + 5y`.

Now, let's express this problem in Gurobi code:

```python
from gurobipy import *

# Create a new model
m = Model("FoodTruck")

# Define variables
x = m.addVar(vtype=GRB.INTEGER, name="EggSandwiches")
y = m.addVar(vtype=GRB.INTEGER, name="HamSandwiches")

# Set the objective function: Maximize profit
m.setObjective(3.5*x + 5*y, GRB.MAXIMIZE)

# Add constraints
m.addConstr(5*x + y <= 50, "EggAvailability")
m.addConstr(2*x + 4*y <= 60, "HamAvailability")

# Non-negativity constraints (can't make a negative number of sandwiches)
m.addConstr(x >= 0, "NonNegEggSandwiches")
m.addConstr(y >= 0, "NonNegHamSandwiches")

# Optimize the model
m.optimize()

# Print out the results
for v in m.getVars():
    print('%s %g' % (v.varName, v.x))
```