<?php

class AbbeyLodgeRoomUnits extends Migration {
  public function __construct($arguments) {
    parent::__construct($arguments);

    $this->description = t('Import Room Units data.');

    $path = drupal_get_path('module', 'abbey_lodge_migrate') . '/source/room_units.csv';

    $csvcolumns[0] = array('id', 'The Source ID');
    $csvcolumns[1] = array('type', 'Room Type');
    $csvcolumns[2] = array('name', 'Room Name');
    $csvcolumns[3] = array('base_price', 'Base Price');
    $csvcolumns[4] = array('min_sleeps', 'Min Adults');
    $csvcolumns[5] = array('max_sleeps', 'Max Adults');
    $csvcolumns[6] = array('min_children', 'Min Children');
    $csvcolumns[7] = array('max_children', 'Max Children');
    $csvcolumns[8] = array('singles', 'Singles');
    $csvcolumns[9] = array('doubles', 'Doubles');


    $options = array('header_rows' => TRUE);

    $source_fields = array(
      'id' => 'Source ID',
    );

    $this->source = new MigrateSourceCSV($path, $csvcolumns, $options, $source_fields);
    $this->destination = new MigrateDestinationRoomsUnit('rooms_unit');

    $this->map = new MigrateSQLMap($this->machineName,
      array(
        'id' => array(
          'type' => 'int',
          'unsigned' => TRUE,
          'not null' => TRUE,
        )
      ),
      MigrateDestinationNode::getKeySchema()
    );

    $this->addFieldMapping('type', 'type');
    $this->addFieldMapping('name', 'name');
    $this->addFieldMapping('base_price', 'base_price');
    $this->addFieldMapping('min_sleeps', 'min_sleeps');
    $this->addFieldMapping('max_sleeps', 'max_sleeps');
    $this->addFieldMapping('min_children', 'min_children');
    $this->addFieldMapping('max_children', 'max_children');
    $this->addFieldMapping('singles', 'singles');
    $this->addFieldMapping('doubles', 'doubles');
  }

  public function postImport() {
    parent::postImport();
    // Add 1 year of availability for all rooms
    $start_date = new DateTime("now");
    $end_date = new DateTime("+1 year");
    $event_id = ROOMS_AVAILABLE;
    $query = db_select('rooms_units', 'n')->fields('n', array('unit_id', 'name'));
    $rooms_units = $query->execute()->fetchAll();
    foreach ($rooms_units as $room) {
      $unit_id = $room->unit_id;
      $be = new BookingEvent($unit_id, $event_id, $start_date, $end_date);
      $events = array($be);
      $rc = new UnitCalendar($unit_id);
      $rc->updateCalendar($events);
    }
  }

}
