public MeteredSpace AddOrUpdate(MeteredSpacePOST viewModel)
        {
            var posted = new MeteredSpace() {
                MeterId = viewModel.PoleSerialNumber,
                Area = viewModel.Area,
                SubArea = viewModel.SubArea,
                Zone = viewModel.Zone,
                Latitude = viewModel.Lat,
                Longitude = viewModel.Long,
                Active = viewModel.Status.HasValue ? !viewModel.Status.Equals(0) : default(bool?)
            };

            var existing = Get(posted.MeterId);

            if (existing == null)
            {
                _meteredSpacesRepo.Create(posted);
            }
            else
            {
                posted.Id = existing.Id;
                posted.Area = posted.Area ?? existing.Area;
                posted.SubArea = posted.SubArea ?? existing.SubArea;
                posted.Zone = posted.Zone ?? existing.Zone;
                posted.Latitude = posted.Latitude ?? existing.Latitude;
                posted.Longitude = posted.Longitude ?? existing.Longitude;
                posted.Active = posted.Active ?? existing.Active;

                _meteredSpacesRepo.Update(posted);
            }

            //invalidate the cache now that there is new data
            _cacheService.Remove(cacheKey);

            return posted;
        }
 public MeteredSpaceGET ConvertToViewModel(MeteredSpace entity)
 {
     return new MeteredSpaceGET() {
         MeterId = entity.MeterId,
         Area = entity.Area,
         StreetAddress = entity.SubArea,
         Latitude = entity.Latitude,
         Longitude = entity.Longitude,
         Active = entity.Active
     };
 }