// Fil          : PHus.cc
// Beskrivning  : En parkeringhusklass
// Version      : 1
// Senast ändrad : 1998-03-01 Tor-Åke Fransson

#include "PHus.hh"

PHus::PHus()
{
  cout << "Skapar nytt PHus med 10 platser...\n";

  // fixa 10 lediga platser
  for (int i=0;i<10;i++)
    pplats[i].ockupant=NULL;
}

int
PHus::ledigplats()
{
  // sök reda på en tom plats
  for (int i=0;i<10;i++)
    {
      if (pplats[i].ockupant==NULL)
         {
           return i;
         }
    }
  return -1;
}

void PHus::visastatus()
{
  char typ[64];
  cout << "|";
for (int i=0;i<10;i++)
    {
      if (pplats[i].ockupant==NULL)
         { // Inget fordon på denna plats
           cout << " |";
         }
      else
         { // markera med första bokstaven i fordonstypens namn
           strcpy(typ, pplats[i].ockupant->Typ());
           cout << typ[0] << "|";
         }
    }
cout << endl;
}

bool
PHus::parkera(Person &kund)
{
  int lp;
  // vi hade inte släppt in någon i p-huset om det inte fanns nån ledig plats
  lp = ledigplats();
  pplats[lp].ockupant = kund.Fordon;
  kund.PPlats = lp;
  kund.Biljett = automat.TaBiljett();
  databas.Add(kund);
  visastatus();
  return (true);
}

bool
PHus::avparkera(String namn, Person &kund)
{
 
  if (databas.Find(namn, kund))
    {
      pplats[kund.PPlats].ockupant= NULL;
      automat.BetalaBiljett(kund.Biljett);
      visastatus();
      databas.Delete(namn);
      return true;
    }
  else
    return false;
}