static void Main(string[] args)
        {
            while (true)
            {
                // Sökklient

                var searchServiceName = ConfigurationManager.AppSettings.Get("SearchServiceName");
                var apiKey            = ConfigurationManager.AppSettings.Get("SearchServiceApiKey");

                var searchClient = new SearchServiceClient(searchServiceName, new SearchCredentials(apiKey));


                Console.WriteLine("Sök. Välj vad du vill göra:");
                Console.WriteLine("");

                Console.WriteLine("");
                Console.WriteLine("--- Söka --- ");

                Console.WriteLine("S = Sök");

                Console.WriteLine("H = Hämta ett event");

                Console.WriteLine("");
                Console.WriteLine("--- Ladda återskapa ---");
                Console.WriteLine("F = Fyll index");
                Console.WriteLine("I = Skapa index, ingen laddning");
                Console.WriteLine("");
                Console.WriteLine("Q = Avsluta");

                var key = Console.ReadKey();
                Console.WriteLine("");


                // Logger

                // Index handler
                var indexHandler = new EventSearchIndex(searchClient);



                // Sökningar
                if (key.Key == ConsoleKey.S)
                {
                    var result = indexHandler.SearchEvents("", "", "asc", 1000, 0, "");
                    result.Wait();

                    foreach (var ev in result.Result.EventSearchDocuments)
                    {
                        Console.WriteLine("" + ev.Title);
                    }
                }



                else if (key.Key == ConsoleKey.H)
                {
                }


                //Indexeringar
                else if (key.Key == ConsoleKey.I)
                {
                    var task = indexHandler.RecreateEventIndex();
                    task.Wait();
                }
                else if (key.Key == ConsoleKey.F)
                {
                    var taskRecreate = indexHandler.RecreateEventIndex();
                    taskRecreate.Wait();

                    //var eventDocuments = new List<EventSearchDocument>() {
                    //    //new EventSearchDocument()
                    //    //{
                    //    //    EventId = "1",
                    //    //     EventDate = DateTime.Now.ToString(),
                    //    //     Description = "Lampan är förstörd",
                    //    //     Title = "Trasig lampa",
                    //    //     Location = GeographyPoint.Create(2, 3),
                    //    //     Category = "safety", // crime, traffic, air
                    //    //     Level = "0"
                    //    //}
                    //};

                    // Brottsplats
                    var task = BrottsplatsImporter.GetData();
                    task.Wait();
                    var eventDocuments = task.Result;
                    var indexTask      = indexHandler.IndexDocuments(eventDocuments);
                    indexTask.Wait();

                    // Luftkvalitet
                    var taskLuft = LuftkvalitetImporter.GetData();
                    taskLuft.Wait();
                    var luftEventDocuments = taskLuft.Result;
                    var indexTaskLuft      = indexHandler.IndexDocuments(luftEventDocuments);
                    indexTaskLuft.Wait();

                    // Mockade rapporter
                    var taskReport = MockedReportsImporter.GetData();
                    taskReport.Wait();
                    var reportEventDocuments = taskReport.Result;
                    var indexTaskreport      = indexHandler.IndexDocuments(reportEventDocuments);
                    indexTaskreport.Wait();
                }


                //Avslut
                else if (key.Key == ConsoleKey.Q)
                {
                    break;
                }
            }

            Console.WriteLine("Klar.");
            Console.ReadLine();
        }
        // GET: api/Events
        public async Task <EventSearchResultDocument> Get(string longitude = null, string latitude = null, string distance = "", string category = "", string now = "")
        {
            EventSearchResultDocument events = null;

            string filter = "";

            if (string.IsNullOrEmpty(distance))
            {
                distance = "2"; // default 2 kilometer
            }

            if (string.IsNullOrEmpty(category))
            {
                category = ""; // default alla
            }
            else
            {
                filter = $"Category eq '{category}'";



                if (string.IsNullOrEmpty(now))
                {
                    now = DateTime.UtcNow.AddHours(1).ToString();
                }

                if (category == "air" && now != "")
                {
                    var start = DateTime.Parse(now).ToUniversalTime().ToString("o");
                    start = start.Replace("02-23", "02-22"); // TODO: fuling, vi har vara air-data den 22:a
                    start = start.Replace("02-24", "02-22"); // TODO: fuling, vi har vara air-data den 22:a

                    var s**t = DateTime.Parse(now).ToUniversalTime().AddMinutes(15).ToString("o");
                    s**t = s**t.Replace("02-23", "02-22"); // TODO: fuling, vi har vara air-data den 22:a
                    s**t = s**t.Replace("02-24", "02-22"); // TODO: fuling, vi har vara air-data den 22:a


                    //var nowDate = DateTimeOffset.Parse(now);
                    //var hour = nowDate.AddHours(1).Hour;
                    //var minute = nowDate.Minute;
                    //var minuteNextKvart = nowDate.AddMinutes(15);
                    //var datePlus = $"2018-02-22T{hour}:{minuteNextKvart}:00Z-00:00";
                    //var dateMinus = $"2018-02-22T{hour}:{minute}:00Z-00:00";
                    //filter += $" and EventDateOffset ge {dateMinus} and EventDateOffset le {datePlus} ";
                    filter += $" and (EventDateOffset ge {start} and EventDateOffset lt {s**t}) ";
                }
            }

            if (string.IsNullOrEmpty(longitude) || string.IsNullOrEmpty(latitude))
            {
                events = await _eventsIndexHandler.SearchEvents("", "EventDate", "asc", 1000, 0, filter);
            }
            else
            {
                if (!string.IsNullOrEmpty(filter))
                {
                    filter += " and ";
                }

                filter += $"geo.distance(Location, geography'POINT({longitude} {latitude})') le {distance}";
                events  = await _eventsIndexHandler.SearchEvents("", "EventDate", "asc", 1000, 0, filter);
            }


            return(events);
        }