示例#1
0
//endrer info etter type (1=annkomst, 2=avreise, 3 = begge)
void Hotell::endre(int type)
{
	bool funnet = false;	//er rommet funnet
	Rom* tempRom;
	List* tempList;
	Reservasjon* tempRes;

	string eier = les("Romeier:");
	int origAnkomst = getdate("\nOriginal ankomst", timer.hent_dato());

	for (int i = 0; i < 3; i++)
	{
		//for alle rom
		for (int j = 1; j <= rom[i]->no_of_elements(); j++)
		{
			
			tempRom = (Rom*)rom[i]->remove_no(j);

			//henter listen over reservasjoner.
			tempList = (List*)tempRom->getlist();
			
			//alle reservasjonene til ett rom.
			for (int k = 1; k <= tempList->no_of_elements(); k++)
			{
				tempRes = (Reservasjon*)tempList->remove_no(k);
				
				//hvis det er en reservasjon for dagens dato.
				if (origAnkomst == tempRes->getAnkomst())
				{
					funnet = true;
					cout << "\nRomnummer: " << tempRom->getid() << endl;
					tempRes->display(false);

					if (confirm("\nVil du endre denne reservasjonen?"))
					{
						if (type == 1 || type == 3)
						{
							//endrer avreisen
							tempRes->setAnkomst(getdate("\nNy ankomst", timer.hent_dato()));
						}
						if (type == 2 || type == 3)
						{
							//endrer avreisen
							tempRes->setAvreise(getdate("\nNy avreise", timer.hent_dato()));
						}
						
					}
				}
				//setter tilbake
				tempList->add(tempRes);
				tempRom->replaceList(tempList);
			}
			rom[i]->add(tempRom);
		}
	}
	if (!funnet)
	{
		cout << "\nReservasjon ikke funnet" << endl;
	}
}
示例#2
0
void Rom::reservationByName(std::string name, int action)
{
	for (int i = 1; i <= Reservations->no_of_elements(); i++)
	{
		Reservasjon* temp = (Reservasjon*) Reservations->remove_no(i);
		
		if (temp->sameNameAsReservation(name))
		{
			temp->display();
			
			// If this method was called with action set to REMOVE,
			// ask the user whether or not to remove the reservation.
			if(action == REMOVE && readChar("Delete reservation?", 'y','n') == 'y')
			{
				Reservations->destroy(temp->getArrival());
			}

			// If the action is set to CHECKIN, and today is the expected arrival date, and the user answers "y" to "Check-in?", 
			// then set checkin timestamp to current datetime by passing no parameters to setCheckin.
			else if(action == CHECKIN && temp->getArrival() == tid.hent_dato() && readChar("Check-in?",'y','n') == 'y')
			{
				temp->setCheckin();
				Reservations->add(temp);
			}
			else
				Reservations->add(temp);
		}
		else
		{
			Reservations->add(temp);
		}
	}
}
示例#3
0
/******************************************************************************
	name:        void listReservations
	description: Lists all reservations for this object
	parameters:  n/a
	returns:     n/a
******************************************************************************/
void Rom::listReservations()
{
	for (int i = 1; i <= Reservations->no_of_elements(); i++)
	{
		Reservasjon* temp = (Reservasjon*) Reservations->remove_no(i);
		Reservations->add(temp);
		temp->display();
	}
}
示例#4
0
void Hotell::displayOkkupant()
{
	Rom* tempRom;
	List* tempList;
	Reservasjon* tempRes;
	bool funnetNr = false;
	bool funnetRes = false;

	int romNr;
	cout << "Ronmummer: ";
	cin >> romNr;

	//for alle typer rom
	for (int i = 0; i < 3; i++)
	{
		//for alle rom
		for (int j = 1; j <= rom[i]->no_of_elements(); j++)
		{
			
			tempRom = (Rom*)rom[i]->remove_no(j);
			rom[i]->add(tempRom);

			if (tempRom->getid() == romNr)
			{
				funnetNr = true;

				//henter listen over reservasjoner.
				tempList = (List*)tempRom->getlist();
				
				//alle reservasjonene til ett rom.
				for (int k = 1; k <= tempList->no_of_elements(); k++)
				{
					tempRes = (Reservasjon*)tempList->remove_no(k);
					tempList->add(tempRes);
					
					//hvis det er en reservasjon for dagens dato.
					if (timer.hent_dato() <= tempRes->getAvreise() && timer.hent_dato() >= tempRes->getAnkomst())
					{
						funnetRes = true;
						tempRes->display(true);
					}
				}
			}
		}
	}

	//hvis rommet eller reservasjonen ikke er funnet
	if (!funnetNr)
	{
		cout << "Romnummer ikke funnet" << endl;
	}
	else if (!funnetRes)
	{
		cout << "Ingen reservasjon i dag" << endl;
	}
}
示例#5
0
void Hotell::avbestille(string txt){

	Rom* tempRom;
	List *tempList;
	Reservasjon *tempRes;

	//Alle romtypene
	for(int x = 0; x < 3; x++){

		//alle rommene
		for (int y = 1; y <= rom[x]->no_of_elements(); y++){

			//henter ut rom.
			tempRom = (Rom*)rom[x]->remove_no(y);
			rom[x]->add(tempRom);

			//henter listen over reservasjoner.
			tempList = (List*)tempRom->getlist();

			//alle reservasjonene til ett rom.
			for (int z = 1; z <= tempList->no_of_elements(); z ++){

				//henter ut reservasjonen
				tempRes = (Reservasjon*)tempList->remove_no(z);

				//dersom det stemmer
				if (!tempRes->compNavn(txt)){

					//skriver ut reservasjonen og spør om den skal fjernes.
					tempRom->display(false);
					tempRes->display(false);
					if(!confirm("\nVil du fjerne?")){
						tempList->add(tempRes);
					}
					//dersom det fjernes minker z, for å kompensere for
					//fjernet reservasjon.
					else (z--);
				}
				//dersom det ikke stemmer legges reservasjonen tilbake.
				else {
					tempList->add(tempRes);
				}
			}
		}
	}
}
示例#6
0
Reservasjon* Rom::reservationByDate(int date, int action)
{
	extern Hotell* hotellet;
	for (int i = 1; i <= Reservations->no_of_elements(); i++)
	{
		Reservasjon* temp = (Reservasjon*) Reservations->remove_no(i);
		
		// If this method was called with action CHECKOUT and departure date is the provided date for the reservation,
		// or action was checkin and arrival date is the date of this reservation, then return the reservation
		if ((action == CHECKOUT) || (action == CHECKIN && temp->getArrival() == date))
		{
			
			// If action is checkout, destroy reservation, and create a temporary reservation object with errorcode
			// "reservation has been pruned" to be returned
			if(action == CHECKOUT && temp->getDeparture() == date)
			{
				temp->display();
				if(readChar("Confirm checkout?",'y','n')=='y')
				{
					// Get filename, subtract file ending and apply new filename
					std::string hotellHst = hotellet->getFilename().substr(0, hotellet->getFilename().size()-4);
					hotellHst += ".hst";
		
					// ... aaaand output! 
					std::ofstream o(hotellHst.c_str(), std::ios::out|ios::app);
					temp->writeDataToFile(o);

					Reservations->destroy(temp->getRoomID());

					temp = new Reservasjon(reservationHasBeenPruned);
				}
				// Otherwise, put it back in the list
				else 
					Reservations->add(temp);
			}
			// If action is checkout, and a reservation on the room is current, but departure on reservation is not today,
			// ask if we want to check him out earlier than planned, and if so, call this method with his/her planned
			// departure date
			else if(action == CHECKOUT && temp->getDeparture() >= date && temp->getArrival() <= date)
			{
				std::cout << "\nGuest in room " << temp->getRoomID() << " is not meant to check out until " << temp->getDeparture();
				if(readChar("\nCheck out anyways?",'y','n') == 'y')
				{
					Reservations->add(temp);
					return reservationByDate(temp->getDeparture(), CHECKOUT);
				}
			}
			// If action is check in, ask for confirmation to check in, and display information about the reservation
			else if(action == CHECKIN && readChar("Check-in?",'y','n') == 'y')
			{
				temp->display();
				temp->setCheckin();
				Reservations->add(temp);
			}
			// Otherwise, put it back in our list
			else
			{
				Reservations->add(temp);
			}
			
			return temp;
		}
		// If the method was called with NOOP action, as in NO OPeration, display the data without modifying it; essentially the same as 
		// checkin, except it ONLY displays data about the reservation, and date may be any date within the time period of the reservation,
		// as opposed to requiring a specific checkin date. It does however require guests to be checked in.
		else if (action == NOOP && temp->getDeparture() >= date && temp->getArrival() <= date  && temp->getInUse() == true)
		{
			//temp->display(roomNumber);
			Reservations->add(temp);
			return temp;
		}
	}

	// If no matching reservation was found, return a new reservations object, with
	// roomID containing the errorcode
	return new Reservasjon(reservationDoesNotExist);
}