echo "* total sites : " . $site_details_length . " *" . "\n";
echo "*******************" . "\n";
/**
 * Query the Analytics data.
 * date, source, medium,channel_grouping, device_category, landing_page_path, sessions,
 * transactions, transaction_revenue, page_views, bounces, session_duration, hits, total_events,
 * unique_events, users, entrances, exits
 */
$num = 1;
for ($i = 0; $i < $site_details_length; $i++) {
    $detail = $site_details[$i];
    echo $detail->name . "\n";
    $packaged_data = ReturnedAnalytics::extractAnalytics($analytics, $detail->analytics_profile);
    $analytics_site = "analytics_site" . $num++;
    // echo $analytics_site . "\n";
    /**
     * Instance ReturnedAnalyticsOne Object via tranform method.
     */
    ReturnedAnalytics::transform($packaged_data, $analytics_site);
}
echo "NOTE: To output data to terminal or save to database you will need to uncomment those options in the src/ReturnedAnalytics.php on line 358 or 361. \n";
/**
 * Confirms that each site has be iterated through.
 */
if ($num - $site_details_length === 1) {
    // all the sites have been iterated through.
} else {
    trigger_error('All of the sites have not been iterated through.', E_USER_NOTICE);
    error_log($today . "All of the sites have not been iterated through \n", 3, __DIR__ . "/../../log/error.log");
    exit;
}
    //setting up connection to our database
    $DB = new PDO($server, $username, $password);
    //Throw an exception when an error is encountered in the query
    $DB->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $DB->exec("SET NAMES 'utf8'");
} catch (Exception $e) {
    echo "Could not connect to the database";
    exit;
}
$app = new Silex\Application();
$app["debug"] = true;
$app->register(new Silex\Provider\TwigServiceProvider(), array('twig.path' => __DIR__ . '/../../views'));
use Symfony\Component\HttpFoundation\Request;
Request::enableHttpMethodParameterOverride();
/**
 * Routing to twig templete views
 */
$app->get("/", function () use($app) {
    return $app['twig']->render('index.html.twig', array('sites' => Sites::getAll()));
});
$app->get('/site/{id}', function ($id) use($app) {
    $sites = Sites::getAll();
    function name($sites, $id)
    {
        $id = $id - 1;
        return $sites[$id];
    }
    $sites = name($sites, $id);
    return $app['twig']->render('site.html.twig', array('sites' => $sites, 'analytics' => ReturnedAnalytics::getAll($id)));
});
return $app;
 function test_ReturnedAnalytics_set()
 {
     //Arrange
     $date = '20160121';
     $source = '(direct)';
     $medium = '(none)';
     $channel_grouping = 'direct';
     $device_category = 'desktop';
     $landing_page_path = 'www.hoteldeluxe.com/';
     $sessions = '';
     $transactions = '';
     $transaction_revenue = '';
     $page_views = '';
     $bounces = '';
     $session_duration = '';
     $hits = '';
     $total_events = '';
     $unique_events = '';
     $users = '';
     $entrances = '';
     $exits = '';
     $id = null;
     $test_returnedOne = new ReturnedAnalytics($date, $source, $medium, $channel_grouping, $device_category, $landing_page_path, $sessions, $transactions, $transaction_revenue, $page_views, $bounces, $session_duration, $hits, $total_events, $unique_events, $users, $entrances, $exits, $id);
     //Act
     $test_returnedOne->setDate("19771024");
     $result1 = $test_returnedOne->getDate();
     $test_returnedOne->setSource("(bananas)");
     $result2 = $test_returnedOne->getSource();
     $test_returnedOne->setMedium("(some)");
     $result3 = $test_returnedOne->getMedium();
     $test_returnedOne->setChannelGrouping("indirect");
     $result4 = $test_returnedOne->getChannelGrouping();
     $test_returnedOne->setDeviceCategory("reststop");
     $result5 = $test_returnedOne->getDeviceCategory();
     $test_returnedOne->setLandingPagePath("www.reddit.com/");
     $result6 = $test_returnedOne->getLandingPagePath();
     $test_returnedOne->setSessions("FOO");
     $result7 = $test_returnedOne->getSessions();
     $test_returnedOne->setTransactions("BAR");
     $result8 = $test_returnedOne->getTransactions();
     $test_returnedOne->setTransactionRevenue("TACO");
     $result9 = $test_returnedOne->getTransactionRevenue();
     $test_returnedOne->setPageViews("TIME");
     $result10 = $test_returnedOne->getPageViews();
     $test_returnedOne->setBounces("PIZZA");
     $result11 = $test_returnedOne->getBounces();
     $test_returnedOne->setSessionDuration("HOTDOG");
     $result12 = $test_returnedOne->getSessionDuration();
     $test_returnedOne->setHits("9001");
     $result13 = $test_returnedOne->getHits();
     $test_returnedOne->setTotalEvents("1337");
     $result14 = $test_returnedOne->getTotalEvents();
     $test_returnedOne->setUniqueEvents("2001");
     $result15 = $test_returnedOne->getUniqueEvents();
     $test_returnedOne->setUsers("BIFF");
     $result16 = $test_returnedOne->getUsers();
     $test_returnedOne->setEntrances("1985");
     $result17 = $test_returnedOne->getEntrances();
     $test_returnedOne->setExits("1955");
     $result18 = $test_returnedOne->getExits();
     //Assert
     $this->assertEquals("19771024", $result1);
     $this->assertEquals("(bananas)", $result2);
     $this->assertEquals("(some)", $result3);
     $this->assertEquals("indirect", $result4);
     $this->assertEquals("reststop", $result5);
     $this->assertEquals("www.reddit.com/", $result6);
     $this->assertEquals("FOO", $result7);
     $this->assertEquals("BAR", $result8);
     $this->assertEquals("TACO", $result9);
     $this->assertEquals("TIME", $result10);
     $this->assertEquals("PIZZA", $result11);
     $this->assertEquals("HOTDOG", $result12);
     $this->assertEquals("9001", $result13);
     $this->assertEquals("1337", $result14);
     $this->assertEquals("2001", $result15);
     $this->assertEquals("BIFF", $result16);
     $this->assertEquals("1985", $result17);
     $this->assertEquals("1955", $result18);
 }