/*******************************************************************************************
volunteers.cpp
    read data into an array of objects, display them and do some calculations on them
*******************************************************************************************/
#include <iostream>
#include <string>
#include <fstream>

using namespace std;

#include "safearray.h"

//prototypes
void readFrom(string file, safearray& list);
void showList(const safearray&);
int countPrivates(const safearray&);

void main() {
    safearray volunteers;

    string filename;
    cout << "What is the file to read: ";
    cin >> filename;

    readFrom(filename, volunteers);

    showList(volunteers);
    cout << "-----------------------" << endl
         << "Privates: " << countPrivates(volunteers) << endl;
}

int countPrivates(const safearray& list) {
    int sum = 0;
    for (int i = 0; i < list.count(); i++)
        if (list[i].rank == "Private")
            sum++;
    return sum;
}

void showList(const safearray& list) {
    for (int i = 0; i < list.count(); i++) {
        cout << list[i].last << ", " << list[i].first
             << " (" << list[i].rank << ")" << endl;
    }
}

void readFrom(string file, safearray& list) {
    ifstream fin(file.c_str());
    
    for (int i = 0; i < list.maxsize; i++) {
        string rank;
        if(fin >> rank) {
          list[i].rank = rank;
          fin >> list[i].first >> list[i].last;
        }
        else
            break;
    }
}