#pragma once
#include <string>
#include "LeafSimulationResult.h"
#include <vector>
using namespace std;

class ExitsInfoDTO: public LeafSimulationResult
{
public:
	int AbstractSimulationResultDTO::getType();
	void setID(string _serviceName);
	string AbstractSimulationResultDTO::getID();
	int getNumberOfExitsWithoutFlaw();
	int getNumberOfExitsWithFlaw();
	double getAverageTimeWithoutFlaw();
	double getAverageTimeWithFlaw();
	void updateExitsWithoutFlaw(double _time);
	void updateExitsWithFlaw(double _time);

	AbstractSimulationResultDTO* LeafSimulationResult::clone();
	ExitsInfoDTO(void){
		numberOfExitsWithoutFlaw = 0;
		numberOfExitsWithFlaw = 0;
		averageTimeWithoutFlaw = 0;
		averageTimeWithFlaw = 0;
		serviceTimesWithoutFlaw = new vector<double>(); 
		serviceTimesWithFlaw = new vector<double>(); 
	}
	ExitsInfoDTO(ExitsInfoDTO* oldCopy){
		numberOfExitsWithoutFlaw = oldCopy->numberOfExitsWithoutFlaw;
		numberOfExitsWithFlaw = oldCopy->numberOfExitsWithFlaw;
		averageTimeWithoutFlaw = oldCopy->averageTimeWithoutFlaw;
		averageTimeWithFlaw = oldCopy->averageTimeWithFlaw;
		serviceTimesWithoutFlaw = oldCopy->serviceTimesWithoutFlaw;
		serviceTimesWithFlaw = oldCopy->serviceTimesWithFlaw;
	}
private:
	static const int type = 6;
	string serviceName;
	int numberOfExitsWithoutFlaw;
	int numberOfExitsWithFlaw;
	double averageTimeWithoutFlaw;
	double averageTimeWithFlaw;
	vector<double>* serviceTimesWithoutFlaw;
	vector<double>* serviceTimesWithFlaw;
};