react-app/src/hooks/api/useBCAssessmentApi.ts

Summary

Maintainability
A
0 mins
Test Coverage
import { BBox, FeatureCollection, Geometry } from 'geojson';

export interface BCAssessmentProperties {
  BCA_FGPV_SYSID: number;
  ROLL_NUMBER: string;
  FOLIO_ID: string;
  FOLIO_STATUS: string;
  FOLIO_STATUS_DESCRIPTION: string;
  GEN_VALUES_COUNT: number;
  GEN_GROSS_IMPROVEMENT_VALUE: number;
  GEN_GROSS_LAND_VALUE: number;
  GEN_NET_IMPROVEMENT_VALUE: number;
  GEN_NET_LAND_VALUE: number;
  GEN_TXXMT_IMPROVEMENT_VALUE: number | null;
  GEN_TXXMT_LAND_VALUE: number | null;
  GEN_PROPERTY_CLASS_CODE: string;
  GEN_PROPERTY_CLASS_DESC: string;
  GEN_PROPERTY_SUBCLASS_CODE: string;
  GEN_PROPERTY_SUBCLASS_DESC: string;
  JURISDICTION_CODE: string;
  JURISDICTION: string;
  WHEN_CREATED: Date;
  WHEN_UPDATED: Date | null;
  EXPIRY_DATE: string | null;
  FEATURE_AREA_SQM: number;
  FEATURE_LENGTH_M: number;
  OBJECTID: number;
  SE_ANNO_CAD_DATA: null; // what is this when not null?
  bbox: BBox;
}

const useBCAssessmentApi = () => {
  const url = window.location.href.includes('pims.gov.bc.ca')
    ? 'https://apps.gov.bc.ca/ext/sgw/geo.bca?REQUEST=GetFeature&SERVICE=WFS&VERSION=2.0.0&typeName=geo.bca:WHSE_HUMAN_CULTURAL_ECONOMIC.BCA_FOLIO_GNRL_PROP_VALUES_SV&outputFormat=application/json'
    : 'https://test.apps.gov.bc.ca/ext/sgw/geo.bca?REQUEST=GetFeature&SERVICE=WFS&VERSION=2.0.0&typeName=geo.bca:WHSE_HUMAN_CULTURAL_ECONOMIC.BCA_FOLIO_GNRL_PROP_VALUES_SV&outputFormat=application/json';

  const getBCAssessmentByLocation = async (lng: number, lat: number) => {
    const finalUrl = `${url}&srsName=EPSG:4326&CQL_FILTER=CONTAINS(SHAPE,SRID=4326;POINT(${lng} ${lat}))`;
    const response = await fetch(finalUrl, {
      credentials: 'include',
    });
    if (!response.ok) return;
    const body = await response.json();
    return body as FeatureCollection<Geometry, BCAssessmentProperties>;
  };

  return {
    getBCAssessmentByLocation,
  };
};

export default useBCAssessmentApi;