public IHttpActionResult PutVacancyLocation(int id, VacancyLocation vacancyLocation)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (id != vacancyLocation.ID)
            {
                return(BadRequest());
            }

            db.Entry(vacancyLocation).State = EntityState.Modified;

            try
            {
                db.SaveChanges();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!VacancyLocationExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(StatusCode(HttpStatusCode.NoContent));
        }
        public IHttpActionResult GetVacancyLocation(int id)
        {
            VacancyLocation vacancyLocation = db.VacancyLocation.Find(id);

            if (vacancyLocation == null)
            {
                return(NotFound());
            }

            return(Ok(vacancyLocation));
        }
        public IHttpActionResult PostVacancyLocation(VacancyLocation vacancyLocation)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            db.VacancyLocation.Add(vacancyLocation);
            db.SaveChanges();

            return(CreatedAtRoute("DefaultApi", new { id = vacancyLocation.ID }, vacancyLocation));
        }
        private void PopulateCountyId(VacancyLocation entity, Entities.VacancyLocation dbVacancyLocation)
        {
            if (!string.IsNullOrWhiteSpace(entity.Address?.County))
            {
                dbVacancyLocation.CountyId = _getOpenConnection.QueryCached <int>(_cacheDuration, @"
SELECT CountyId
FROM   dbo.County
WHERE  FullName = @CountyFullName",
                                                                                  new
                {
                    CountyFullName = entity.Address.County
                }).SingleOrDefault();
            }
        }
        public IHttpActionResult DeleteVacancyLocation(int id)
        {
            VacancyLocation vacancyLocation = db.VacancyLocation.Find(id);

            if (vacancyLocation == null)
            {
                return(NotFound());
            }

            db.VacancyLocation.Remove(vacancyLocation);
            db.SaveChanges();

            return(Ok(vacancyLocation));
        }
        private void MapCountyId(Entities.VacancyLocation dbVacancyLocation, VacancyLocation result)
        {
            // Not all the vacancies have CountyId (before being accepted by QA).
            // A multilocation vacancy (more than one location) doesn't have anything in the address fields.
            if (dbVacancyLocation.CountyId > 0)
            {
                result.Address.County = _getOpenConnection.QueryCached <string>(_cacheDuration, @"
SELECT FullName
FROM   dbo.County
WHERE  CountyId = @CountyId",
                                                                                new
                {
                    CountyId = dbVacancyLocation.CountyId
                }).SingleOrDefault();
            }
        }
        private void PopulateLocalAuthorityId(VacancyLocation entity, Entities.VacancyLocation dbVacancyLocation)
        {
            if (!string.IsNullOrWhiteSpace(entity.LocalAuthorityCode))
            {
                dbVacancyLocation.LocalAuthorityId = _getOpenConnection.QueryCached <int>(_cacheDuration, @"
SELECT LocalAuthorityId
FROM   dbo.LocalAuthority
WHERE  CodeName = @LocalAuthorityCode",
                                                                                          new
                {
                    entity.LocalAuthorityCode
                }).Single();
            }
            else
            {
                dbVacancyLocation.LocalAuthorityId = null;
            }
        }
        private void MapLocalAuthorityCode(Entities.VacancyLocation dbVacancyLocation, VacancyLocation result)
        {
            if (dbVacancyLocation.LocalAuthorityId.HasValue)
            {
                result.LocalAuthorityCode = _getOpenConnection.QueryCached <string>(_cacheDuration, @"
SELECT CodeName
FROM   dbo.LocalAuthority
WHERE  LocalAuthorityId = @LocalAuthorityId",
                                                                                    new
                {
                    dbVacancyLocation.LocalAuthorityId
                }).Single();
            }
            else
            {
                result.LocalAuthorityCode = null;
            }
        }