SIMS 7 - Sample Code - Staff Iteration using staff edit
            Overview of Example
This demonstrates how to obtain an example set of staff data using the employee browse and detail form.
Example Call
            List<SIMSInterface.StaffDetails> sd =  SIMSInterface.Staff.GetStaff();
            string _sd = JsonConvert.SerializeObject(sd,Formatting.Indented);
            File.WriteAllText(Path.Combine(OutputFolder,"staff.json"), _sd);
Output Class
    public class StaffDetails
    {
        public int id;
        public string name;
        public List<string> FormerFamilyNames = new List<string>();
        /// <summary>
        /// Disability
        /// </summary>
        public List<string> Impairments = new List<string>();
        /// <summary>
        /// QTLS
        /// </summary>
        public string QTLS { get; set; }
        /// <summary>
        /// EYTS
        /// </summary>
        public string EYTS { get; set; }
        /// <summary>
        /// NewlyQualifiedTeacher
        /// </summary>
        public string NQT { get; set; }
        //Post
        //DestinationCode
        //Origin
        public List<dContracts> Contracts = new List<dContracts>();
        //YearGroup
    }
Code Sample
public static List<StaffDetails> GetStaff()
{
    List<StaffDetails> staffdatas = new List<StaffDetails>(); 
    BrowseEmployee employees = new BrowseEmployee();
    employees.Load(EmployeeFilter.All,"%","%","%","%","%",false, DateTime.Now);
    foreach (SIMS.Entities.EmployeeSummary empSum in employees.Employees)
    {
        StaffDetails s = new StaffDetails();
        SIMS.Processes.EditEmployee editEmployee = new EditEmployee();
        s.id = empSum.PersonID;
        s.name = empSum.Forename + " " + empSum.Surname; // Just to make it readable
        editEmployee.Load(empSum.PersonID, System.DateTime.Now);
        foreach (SIMS.Entities.EmployeePreviousName name in editEmployee.Employee.PreviousNames)
        {
            s.FormerFamilyNames.Add(name.Surname);
        }
        s.QTLS = editEmployee.Employee.QTLSStatusAttribute.Value.ToString();
        s.EYTS = editEmployee.Employee.EYTStatusAttribute.Value.ToString();
        s.NQT = "Null";
        if (editEmployee.Employee.NQTStatusAttribute.Value != null)
            s.NQT = editEmployee.Employee.NQTStatusAttribute.Value.ToString();
        foreach (SIMS.Entities.Impairment imp in  editEmployee.Employee.ImpairmentsAttribute.Value)
        {  // Need to decide what data is needed.
            s.Impairments.Add(imp.Description);
        }
        foreach( SIMS.Entities.Contract c in editEmployee.Employee.Contracts.Value)
        {
            dContracts x = new dContracts();
            x.DestinationCode = "Null";
            x.Origin = "Null";
            x.Post = "Null";
            if (c.Destination != null)
                x.DestinationCode = c.Destination.Code;
            if (c.Origin != null)
                x.Origin = c.Origin.Code;
            if (c.PostDescription != null)
                x.Post = c.PostDescription;
            foreach (SIMS.Entities.ContractScale sc in c.Scales.Value)
            {
                if (sc.RangeType)  // Just consider pay range type records.
                {
                    PayRange pr = new PayRange();   
                    pr.Start = sc.StartDate;
                    pr.End  = sc.EndDate;    
                    pr.Amount = sc.SalaryAmount;
                    x.PayRange.Add(pr);
                }
            }
            s.Contracts.Add(x);
        }
        staffdatas.Add(s);
    }
    return staffdatas;  
}
Example Output
  {
    "id": 12268,
    "name": "Mildred Abdullah",
    "FormerFamilyNames": [
      "Jane",
      "Abdullah"
    ],
    "Impairments": [
      "Wooden Leg"
    ],
    "Contracts": [
      {
        "PayRange": [],
        "Post": "TCHR-Teacher",
        "DestinationCode": "Null",
        "Origin": "TCHLEA"
      }
    ],
    "QTLS": "True",
    "EYTS": "True",
    "NQT": "Not in year 1 or 2 of QT Status Induction"
  },