public static void AddEntry(AOCEntry entry)
        {
            if (_engine == null)
                Initialize();

            var table = _engine.OpenXTable<string, AOCEntry>("entries");

            table[entry.Email] = entry;
            _engine.Commit();
        }
        private static void PostForm(IDictionary<string, string> parameters, HttpRequestEventArgs e)
        {
            var entry = new Model.AOCEntry();
            Console.WriteLine("Entry received");

            bool avail = false;
            int score = 0;
            int.TryParse(e.Request.Form["Score"] ?? string.Empty, out score);

            var a = e.Request.Form["Availability"];
            if (!string.IsNullOrEmpty(a))
            {
                a = a.ToLowerInvariant();
                avail = a == "checked" || a == "true";
            }

            entry.FirstName = e.Request.Form["FirstName"] ?? string.Empty;
            entry.LastName = e.Request.Form["LastName"] ?? string.Empty;
            entry.Email = e.Request.Form["Email"] ?? string.Empty;
            entry.Role = e.Request.Form["Role"] ?? string.Empty;
            entry.LineManager = e.Request.Form["LineManager"] ?? string.Empty;
            entry.Reason = e.Request.Form["Reason"] ?? string.Empty;
            entry.Answers = e.Request.Form["Answers"] ?? string.Empty;
            entry.Organisation = e.Request.Form["Organisation"] ?? string.Empty;
            entry.Region = e.Request.Form["Region"] ?? string.Empty;
            entry.Available = avail;
            entry.Score = score;
            entry.Answers = e.Request.Form["Answers"] ?? string.Empty;
            entry.Submitted = DateTime.UtcNow;

            Dictionary<string, object> errors = new Dictionary<string, object>(StringComparer.OrdinalIgnoreCase);
            if (string.IsNullOrEmpty(entry.FirstName) || entry.FirstName.Length < 2)
                errors["FirstName"] = "Please enter a first name";
            if (string.IsNullOrEmpty(entry.LastName) || entry.LastName.Length < 2)
                errors["LastName"] = "Please enter a last name";
            if (string.IsNullOrEmpty(entry.Email) || entry.Email.Length < 5)
                errors["Email"] = "Please enter an email address";
            else if (!entry.Email.ValidateEmail())
                errors["Email"] = "Please enter a valid email address";
            if (string.IsNullOrEmpty(entry.Role) || entry.Role.Length < 2)
                errors["Role"] = "Please enter a role";
            if (string.IsNullOrEmpty(entry.LineManager) || entry.LineManager.Length < 2)
                errors["LineManager"] = "Please enter the name of your line manager";
            if (string.IsNullOrEmpty(entry.Reason) || entry.Reason.Length < 2)
                errors["Reason"] = "Please tell us why you should be an Agent of Change";
            if (string.IsNullOrEmpty(entry.Organisation) || entry.Organisation.Length < 2)
                errors["Organisation"] = "Please select an organisation";
            if (string.IsNullOrEmpty(entry.Region) || entry.Region.Length < 2)
                errors["Region"] = "Please select a region";

            if (errors.Count > 0)
            {
                errors["result"] = false;
                DefaultResponses.Json(e, errors);
                Console.WriteLine("Failed entry: {0}", JsonConvert.SerializeObject(errors));
            }
            else
            {
                Db.AddEntry(entry);
                if (string.IsNullOrEmpty(Config.SuccessRedirect))
                    DefaultResponses.Json(e, new Dictionary<string, object>() { { "result", true } });
                else
                    DefaultResponses.RedirectResponse(e, Config.SuccessRedirect);
                Console.WriteLine("Successful entry from {0}", entry.Email);
            }
        }