public HomeModule()
        {
            Get["/"] = parameters => {

                StaticConfiguration.DisableErrorTraces = false;

                var connectionFactory = new ConnectionFactory(ConfigurationManager.AppSettings["DatabaseServer"], ConfigurationManager.AppSettings["DatabaseName"], ConfigurationManager.AppSettings["DatabaseParameters"]);
                var amadeusQueueRepository = new AmadeusQueueRepository(connectionFactory);
                var categoryRepository = new CategoryRepository(connectionFactory);
                var amadeusSyncTaskRepository = new AmadeusSyncTaskRepository(connectionFactory);
                var pnrRepository = new PassengerNameRecordRepository(connectionFactory);

                var queues = amadeusQueueRepository.GetAll();
                var pnrs = pnrRepository.GetAll();
                var categories = categoryRepository.GetAll();

                var reservationsModel = new ReservationsModel();
                var lastSync = amadeusSyncTaskRepository.GetLatestSync();
                reservationsModel.LastSyncStatus = (lastSync == null || amadeusSyncTaskRepository.IsExecuting()) ? "" : (lastSync.CompletedSuccessfully ? "Successfully synchronized on " + lastSync.ExecutionTime.ToString()  : "Synchronization was interrupted on " + lastSync.ExecutionTime.ToString()) + " ..." ;
                reservationsModel.ExecutionText = (amadeusSyncTaskRepository.IsExecuting() ? "Synchronizing ..." : "");
                foreach (var pnr in pnrs)
                {
                    var matchingCategories = categories.Where(c => c.Id == pnr.CategoryId).ToList();
                    var category = String.Empty;
                    if (matchingCategories.Count() == 1)
                    {
                        category = matchingCategories.First().Name;
                    }

                    var matchingQueues = queues.Where(q => q.Id == pnr.QueueId);
                    if (matchingQueues.Count() == 1)
                    {
                        var queue = matchingQueues.First();
                        try
                        {
                            reservationsModel.Reservations.Add(new ReservationsModel.ReservationModel()
                            {
                                Id = pnr.Id,
                                QueueId = pnr.QueueId,
                                QueueCode = queue.Code,
                                QueueName = queue.Name,
                                OfficeId = pnr.OfficeId,
                                QueueingOfficeId = pnr.QueueingOfficeId,
                                CreationOfficeId = pnr.CreationOfficeId,
                                CreationDate = pnr.CreationDate,
                                Location = pnr.Location,
                                IataCode = pnr.IataCode,
                                Category = category,
                                IsGroupBooking = pnr.IsGroupBooking,
                                DepartureDate = pnr.DepartureDate,
                                DepartureAirport = pnr.DepartureAirport,
                                ArrivalAirport = pnr.ArrivalAirport,
                                Error = pnr.Error,
                                ErrorIndicator = String.IsNullOrEmpty(pnr.Error) ? "" : "*",
                                Info = pnr.Info,
                                Pnr = pnr.Number,
                                Quantity = pnr.Quantity,
                                SurName = pnr.SurName,
                                TimeStamp = pnr.TimeStamp,
                                Type = char.Parse(pnr.Type)
                            });
                        }
                        catch (Exception ex)
                        {
                            throw new DashboardException(string.Format("Couldn't add Pnr to the list. Pnr:{0}, OfficeId:{1}", pnr.Number, queue.OfficeId), ex);

                        }
                    }
                    else
                    {
                        throw new DashboardException(string.Format("Unexpected error: Too many or no matching queues where found. QueueId:{0}, NumberOfMatch:{1}", pnr.QueueId, matchingQueues.Count()));
                    }
                }

                return View["Index", reservationsModel];
            };


            Post["/UpdateReservations"] = p =>
            {
                UpdateReservationsAsynchronously();
                return "Synchronized successfully";
            };

        }