#pragma once

#include <vector>


using namespace std;
class Customer
{
public:
	Customer(int _id,
		int _lowerTW,
		int _upperTW,
		int demand,
		int serviceTime,
		vector<int> distances,
		int _distanceFromDepot,
		int _distanceToDepot
	);

	Customer();

	~Customer();
	
	/** return number of nodes */
	inline int getId() const
	{
		return id;
	}

	inline double getLowerTW()
	{
		return lowerTW;
	}

	inline double getUpperTW()
	{
		return upperTW;
	}

	inline int getServiceTime()
	{
		return serviceTime;
	}
	inline int getDemand()
	{
		return demand;
	}
	inline int getCDist(int j)
	{
		return distances[j];
	}
	inline int getDistToDepot()
	{
		return distanceToDepot;
	}
	inline int getDistFromDepot()
	{
		return distanceFromDepot;
	}
	inline double getProcessingSpeed()
	{
		return processingSpeed;
	}

	inline void setProcessingSpeed(double _speed)
	{
		processingSpeed = _speed;
	}


	inline double getCompletionTime()
	{
		return completionTime;
	}

	inline void setCompletionTime(double _completionTime)
	{
		completionTime = _completionTime;
	}
	inline void setLowerTw(double _lowerTW)
	{
		lowerTW = _lowerTW;
	}
	inline void setUpperTw(double _upperTW)
	{
		upperTW = _upperTW;
	}
private:

	int id;
	double lowerTW;
	double upperTW;
	int workLoad;
	double processingSpeed;
	double completionTime;
	int demand;
	int serviceTime;
	vector<int> distances;
	int distanceToDepot;
	int distanceFromDepot;
};


