public ActionResult SearchByLocation(float latitude, float longitude)
        {
            var dinners = dinnerReadModel.FindDinnerByLocation(latitude, longitude);

            var jsonDinners = from dinner in dinners.AsEnumerable()
                              select JsonDinnerFromDinner(dinner);

            return(Json(jsonDinners.ToList()));
        }
        public ActionResult Flair([DefaultValue("html")] string format)
        {
            string SourceIP = string.IsNullOrEmpty(Request.ServerVariables["HTTP_X_FORWARDED_FOR"]) ?
                              Request.ServerVariables["REMOTE_ADDR"] :
                              Request.ServerVariables["HTTP_X_FORWARDED_FOR"];

            var location = GeolocationService.HostIpToPlaceName(SourceIP);
            var dinners  = dinnerReadModel.
                           FindDinnerByLocation(location.Position.Lat, location.Position.Long).
                           OrderByDescending(p => p.EventDate).Take(3);

            // Select the view we'll return. Using a switch because we'll add in JSON and other formats later.
            // Will probably extract or refactor this.
            string view;

            switch (format.ToLower())
            {
            case "javascript":
                view = "JavascriptFlair";
                break;

            default:
                view = "Flair";
                break;
            }

            return(View(
                       view,
                       new FlairViewModel
            {
                Dinners = dinners.ToList(),
                LocationName = string.IsNullOrEmpty(location.City) ? "you" : String.Format("{0}, {1}", location.City, location.RegionName)
            }
                       ));
        }