//  Declaration of the class Contract - with a small set of strings
// File: contrct6.h

// Used in Chapter 10

#ifndef CONTRACT_H
#define CONTRACT_H
class Contract
{public:
	Contract(int ID, int sqFootage, int numDesks, int numDays,           
		     char* name,
		     char* oStreetAddress = "", char* oCity = "",
		     char* oStat = "", char* oZip = "");
/* 
	Purpose:    to instantiate (create) an instance of the class 'contract'.
	Goal:	         a new instance of class 'contract' now exists

	Receives:   ID, Square Footage, Number of Desks, Number of Days (all Integers)
		    name, oStreetAddress, oCity, oState, oZip, oCountry (all strings)
	Returns:    NONE
*/


	Contract();

	/*
	Purpose:	to instantiate (create) an instance of the class 'contract' with
			default values.
	Goal:		a new instance of class 'contract' now exists

	Receives:	NONE
	Returns:	NONE
*/

	Contract(const Contract& c);
	// The Copy Constructor - used to copy one instance to another, for example,
	// when an instance is passed as a parameter.


	Contract:: ~Contract(); // destructor

	void CopyContract(Contract c);


	void ChangeSquareFootage(int sqFootage);
/*
	Purpose:	To change the value of the square footage data member
	Goal:		The square footage data member has a new value

	Receives	The New Square Footage (an integer)
	Returns:	NONE
*/

	void ChangeNumDesks( int numDesks);
	// Design comments go here.


	void ChangeNumDays( int numDays);
	// Design comments go here.

	void ChangeID( int ID);
	// Design comments go here.

	int ProvideSquareFootage();
/*
	Purpose:	To Return the Square Footage of an Office
	Goal:		The Square Footage is returned
	Receives:	NONE
	Returns	the Square Footage (an integer)
*/

	int ProvideNumberOfDesks();
	// Design comments go here.

	int ProvideNumberOfDays();
	// Design comments go here.

	int ProvideID();
	// Design comments go here.

	double ProvidePerWeekCharge ();
/*
	Purpose:	To calculate and return the per week charge for an office
	Goal:	The per week charge is returned

	Receives:	Square Footage, Number of Days Per Week, Number of Desks (all 					integers)
	Returns:	The Per Week Charge (a double)
*/

	// All the Provide and Change functions below follow the same format
	// so we will skip the analysis


	char* ProvideContracteeName();
	void  ChangeContracteeName(char* name);

	char* ProvideOfficeStreetAddress();
	void  ChangeOfficeStreetAddress(char* streetAddr);

	char* ProvideOfficeCity();
	void  ChangeOfficeCity(char* city);

	char* ProvideOfficeState();
	void  ChangeOfficeState(char* state);

	char* ProvideOfficeZip();
	void  ChangeOfficeZip(char* zip);


	private:
		int contractID;
		int squareFootage;
		int numberOfDaysPerWeek;
		int numberOfDesks;

		char* contracteeName;

		char* officeStreetAddress;
		// most complete addresses include space for a 2nd street address
		// We will skip it here for simplicity
		char* officeCity;
		char* officeState;
		char* officeZip;

	};
#endif