diff --git a/api/src/models/survey-create.test.ts b/api/src/models/survey-create.test.ts index 81fb2d1efd..5ae2b8e5ab 100644 --- a/api/src/models/survey-create.test.ts +++ b/api/src/models/survey-create.test.ts @@ -377,10 +377,6 @@ describe('PostPurposeAndMethodologyData', () => { expect(data.additional_details).to.equal(null); }); - it('sets field_method_id', () => { - expect(data.field_method_id).to.equal(null); - }); - it('sets vantage_code_ids', () => { expect(data.vantage_code_ids).to.eql([]); }); @@ -396,7 +392,6 @@ describe('PostPurposeAndMethodologyData', () => { const obj = { intended_outcome_id: 1, additional_details: 'additional_detail', - field_method_id: 2, vantage_code_ids: [4, 5], surveyed_all_areas: true }; @@ -413,10 +408,6 @@ describe('PostPurposeAndMethodologyData', () => { expect(data.additional_details).to.eql(obj.additional_details); }); - it('sets field_method_id', () => { - expect(data.field_method_id).to.eql(obj.field_method_id); - }); - it('sets vantage_code_ids', () => { expect(data.vantage_code_ids).to.eql(obj.vantage_code_ids); }); diff --git a/api/src/models/survey-create.ts b/api/src/models/survey-create.ts index 36e0d3669a..3a44e38dc9 100644 --- a/api/src/models/survey-create.ts +++ b/api/src/models/survey-create.ts @@ -123,14 +123,12 @@ export class PostProprietorData { export class PostPurposeAndMethodologyData { intended_outcome_id: number; additional_details: string; - field_method_id: number; vantage_code_ids: number[]; surveyed_all_areas: boolean; constructor(obj?: any) { this.intended_outcome_id = obj?.intended_outcome_id || null; this.additional_details = obj?.additional_details || null; - this.field_method_id = obj?.field_method_id || null; this.vantage_code_ids = obj?.vantage_code_ids || []; this.surveyed_all_areas = obj?.surveyed_all_areas || null; } diff --git a/api/src/models/survey-update.test.ts b/api/src/models/survey-update.test.ts index 684a209f79..472e6b97fd 100644 --- a/api/src/models/survey-update.test.ts +++ b/api/src/models/survey-update.test.ts @@ -340,10 +340,6 @@ describe('PutPurposeAndMethodologyData', () => { expect(data.additional_details).to.equal(null); }); - it('sets field_method_id', () => { - expect(data.field_method_id).to.equal(null); - }); - it('sets vantage_code_ids', () => { expect(data.vantage_code_ids).to.eql([]); }); @@ -363,7 +359,6 @@ describe('PutPurposeAndMethodologyData', () => { const obj = { intended_outcome_id: 1, additional_details: 'additional_detail', - field_method_id: 2, vantage_code_ids: [4, 5], surveyed_all_areas: 'true', revision_count: 0 @@ -381,10 +376,6 @@ describe('PutPurposeAndMethodologyData', () => { expect(data.additional_details).to.equal(obj.additional_details); }); - it('sets field_method_id', () => { - expect(data.field_method_id).to.equal(obj.field_method_id); - }); - it('sets vantage_code_ids', () => { expect(data.vantage_code_ids).to.eql(obj.vantage_code_ids); }); diff --git a/api/src/models/survey-update.ts b/api/src/models/survey-update.ts index 28f3d83993..3c56a51560 100644 --- a/api/src/models/survey-update.ts +++ b/api/src/models/survey-update.ts @@ -132,7 +132,6 @@ export class PutSurveyProprietorData { } export class PutSurveyPurposeAndMethodologyData { intended_outcome_id: number; - field_method_id: number; additional_details: string; vantage_code_ids: number[]; surveyed_all_areas: boolean; @@ -140,7 +139,6 @@ export class PutSurveyPurposeAndMethodologyData { constructor(obj?: any) { this.intended_outcome_id = obj?.intended_outcome_id || null; - this.field_method_id = obj?.field_method_id || null; this.additional_details = obj?.additional_details || null; this.vantage_code_ids = (obj?.vantage_code_ids?.length && obj.vantage_code_ids) || []; this.surveyed_all_areas = obj?.surveyed_all_areas === 'true' || false; diff --git a/api/src/models/survey-view.test.ts b/api/src/models/survey-view.test.ts index c6d519064e..4400293d7f 100644 --- a/api/src/models/survey-view.test.ts +++ b/api/src/models/survey-view.test.ts @@ -344,10 +344,6 @@ describe('GetSurveyPurposeAndMethodologyData', () => { expect(data.additional_details).to.equal(''); }); - it('sets field_method_id', () => { - expect(data.field_method_id).to.equal(null); - }); - it('sets vantage_code_ids', () => { expect(data.vantage_code_ids).to.eql([]); }); @@ -359,7 +355,6 @@ describe('GetSurveyPurposeAndMethodologyData', () => { const obj = { intended_outcome_id: 1, additional_details: 'additional_detail', - field_method_id: 2, vantage_ids: [4, 5], revision_count: 'count' }; @@ -376,10 +371,6 @@ describe('GetSurveyPurposeAndMethodologyData', () => { expect(data.additional_details).to.eql(obj.additional_details); }); - it('sets field_method_id', () => { - expect(data.field_method_id).to.eql(obj.field_method_id); - }); - it('sets vantage_code_ids', () => { expect(data.vantage_code_ids).to.eql(obj.vantage_ids); }); diff --git a/api/src/models/survey-view.ts b/api/src/models/survey-view.ts index 7564617c95..77b392e683 100644 --- a/api/src/models/survey-view.ts +++ b/api/src/models/survey-view.ts @@ -125,14 +125,12 @@ export class GetPermitData { export class GetSurveyPurposeAndMethodologyData { intended_outcome_id: number; additional_details: string; - field_method_id: number; revision_count: number; vantage_code_ids: number[]; constructor(obj?: any) { this.intended_outcome_id = obj?.intended_outcome_id || null; this.additional_details = obj?.additional_details || ''; - this.field_method_id = obj?.field_method_id || null; this.vantage_code_ids = (obj?.vantage_ids?.length && obj.vantage_ids) || []; this.revision_count = obj?.revision_count ?? 0; } diff --git a/api/src/paths/codes.ts b/api/src/paths/codes.ts index bf652ba67f..f747e4069e 100644 --- a/api/src/paths/codes.ts +++ b/api/src/paths/codes.ts @@ -33,7 +33,6 @@ GET.apiDoc = { 'system_roles', 'project_roles', 'administrative_activity_status_type', - 'field_methods', 'intended_outcomes', 'vantage_codes', 'site_selection_strategies' @@ -262,20 +261,6 @@ GET.apiDoc = { } } }, - field_methods: { - type: 'array', - items: { - type: 'object', - properties: { - id: { - type: 'number' - }, - name: { - type: 'string' - } - } - } - }, intended_outcomes: { type: 'array', items: { diff --git a/api/src/paths/project/{projectId}/survey/create.ts b/api/src/paths/project/{projectId}/survey/create.ts index cd7906b456..eb31000041 100644 --- a/api/src/paths/project/{projectId}/survey/create.ts +++ b/api/src/paths/project/{projectId}/survey/create.ts @@ -201,9 +201,6 @@ POST.apiDoc = { additional_details: { type: 'string' }, - field_method_id: { - type: 'number' - }, vantage_code_ids: { type: 'array', items: { @@ -242,6 +239,7 @@ POST.apiDoc = { properties: { strategies: { type: 'array', + minItems: 1, items: { type: 'string' } diff --git a/api/src/paths/project/{projectId}/survey/list.ts b/api/src/paths/project/{projectId}/survey/list.ts index 6b57b2bf9e..b8d2e39e71 100644 --- a/api/src/paths/project/{projectId}/survey/list.ts +++ b/api/src/paths/project/{projectId}/survey/list.ts @@ -170,17 +170,8 @@ GET.apiDoc = { purpose_and_methodology: { description: 'Survey Details', type: 'object', - required: [ - 'field_method_id', - 'additional_details', - 'intended_outcome_id', - 'vantage_code_ids', - 'revision_count' - ], + required: ['additional_details', 'intended_outcome_id', 'vantage_code_ids', 'revision_count'], properties: { - field_method_id: { - type: 'number' - }, additional_details: { type: 'string', nullable: true diff --git a/api/src/paths/project/{projectId}/survey/{surveyId}/update.ts b/api/src/paths/project/{projectId}/survey/{surveyId}/update.ts index 6ae3fa919b..4ac29a92bf 100644 --- a/api/src/paths/project/{projectId}/survey/{surveyId}/update.ts +++ b/api/src/paths/project/{projectId}/survey/{surveyId}/update.ts @@ -210,13 +210,7 @@ PUT.apiDoc = { }, purpose_and_methodology: { type: 'object', - required: [ - 'intended_outcome_id', - 'additional_details', - 'field_method_id', - 'vantage_code_ids', - 'revision_count' - ], + required: ['intended_outcome_id', 'additional_details', 'vantage_code_ids', 'revision_count'], properties: { intended_outcome_id: { type: 'number' @@ -224,9 +218,6 @@ PUT.apiDoc = { additional_details: { type: 'string' }, - field_method_id: { - type: 'number' - }, vantage_code_ids: { type: 'array', items: { @@ -276,6 +267,7 @@ PUT.apiDoc = { properties: { strategies: { type: 'array', + minItems: 1, items: { type: 'string' } diff --git a/api/src/paths/project/{projectId}/survey/{surveyId}/update/get.ts b/api/src/paths/project/{projectId}/survey/{surveyId}/update/get.ts index 3ac49a5f5d..fa5e59b31b 100644 --- a/api/src/paths/project/{projectId}/survey/{surveyId}/update/get.ts +++ b/api/src/paths/project/{projectId}/survey/{surveyId}/update/get.ts @@ -209,17 +209,8 @@ GET.apiDoc = { purpose_and_methodology: { description: 'Survey Details', type: 'object', - required: [ - 'field_method_id', - 'additional_details', - 'intended_outcome_id', - 'vantage_code_ids', - 'revision_count' - ], + required: ['additional_details', 'intended_outcome_id', 'vantage_code_ids', 'revision_count'], properties: { - field_method_id: { - type: 'number' - }, additional_details: { type: 'string', nullable: true diff --git a/api/src/paths/project/{projectId}/survey/{surveyId}/view.test.ts b/api/src/paths/project/{projectId}/survey/{surveyId}/view.test.ts index 63c89956fd..07f310e848 100644 --- a/api/src/paths/project/{projectId}/survey/{surveyId}/view.test.ts +++ b/api/src/paths/project/{projectId}/survey/{surveyId}/view.test.ts @@ -39,7 +39,6 @@ describe('survey/{surveyId}/view', () => { }, funding_sources: [], purpose_and_methodology: { - field_method_id: 1, additional_details: 'details', intended_outcome_id: 8, vantage_code_ids: [1, 2], @@ -117,7 +116,6 @@ describe('survey/{surveyId}/view', () => { }, funding_sources: [], purpose_and_methodology: { - field_method_id: 1, additional_details: null, intended_outcome_id: null, vantage_code_ids: [], diff --git a/api/src/paths/project/{projectId}/survey/{surveyId}/view.ts b/api/src/paths/project/{projectId}/survey/{surveyId}/view.ts index d4ae409b1b..4313fa9a35 100644 --- a/api/src/paths/project/{projectId}/survey/{surveyId}/view.ts +++ b/api/src/paths/project/{projectId}/survey/{surveyId}/view.ts @@ -230,17 +230,8 @@ GET.apiDoc = { purpose_and_methodology: { description: 'Survey Details', type: 'object', - required: [ - 'field_method_id', - 'additional_details', - 'intended_outcome_id', - 'vantage_code_ids', - 'revision_count' - ], + required: ['additional_details', 'intended_outcome_id', 'vantage_code_ids', 'revision_count'], properties: { - field_method_id: { - type: 'number' - }, additional_details: { type: 'string', nullable: true diff --git a/api/src/repositories/code-repository.ts b/api/src/repositories/code-repository.ts index db853321dc..e5d1afc552 100644 --- a/api/src/repositories/code-repository.ts +++ b/api/src/repositories/code-repository.ts @@ -31,7 +31,6 @@ export const IAllCodeSets = z.object({ system_roles: CodeSet(), project_roles: CodeSet(), administrative_activity_status_type: CodeSet(), - field_methods: CodeSet(z.object({ id: z.number(), name: z.string(), description: z.string() }).shape), intended_outcomes: CodeSet(z.object({ id: z.number(), name: z.string(), description: z.string() }).shape), vantage_codes: CodeSet(), survey_jobs: CodeSet(), @@ -160,28 +159,6 @@ export class CodeRepository extends BaseRepository { return response.rows; } - /** - * Fetch field method codes. - * - * @return {*} - * @memberof CodeRepository - */ - async getFieldMethods() { - const sqlStatement = SQL` - SELECT - field_method_id as id, - name, description - FROM - field_method - WHERE - record_end_date is null; - `; - - const response = await this.connection.sql(sqlStatement); - - return response.rows; - } - /** * Fetch vantage codes. * diff --git a/api/src/repositories/survey-repository.test.ts b/api/src/repositories/survey-repository.test.ts index 9f10501bf1..ab8bc96f6b 100644 --- a/api/src/repositories/survey-repository.test.ts +++ b/api/src/repositories/survey-repository.test.ts @@ -466,7 +466,6 @@ describe('SurveyRepository', () => { survey_types: [1, 2] }, purpose_and_methodology: { - field_method_id: 1, additional_details: '', intended_outcome_id: 1, surveyed_all_areas: 'Y' @@ -493,7 +492,6 @@ describe('SurveyRepository', () => { survey_types: [1, 2] }, purpose_and_methodology: { - field_method_id: 1, additional_details: '', intended_outcome_id: 1, surveyed_all_areas: 'Y' @@ -520,7 +518,6 @@ describe('SurveyRepository', () => { survey_types: [1, 2] }, purpose_and_methodology: { - field_method_id: 1, additional_details: '', intended_outcome_id: 1, surveyed_all_areas: 'Y' @@ -845,7 +842,6 @@ describe('SurveyRepository', () => { revision_count: 1 }, purpose_and_methodology: { - field_method_id: 1, additional_details: '', intended_outcome_id: 1, surveyed_all_areas: 'Y', @@ -873,7 +869,6 @@ describe('SurveyRepository', () => { revision_count: 1 }, purpose_and_methodology: { - field_method_id: 1, additional_details: '', intended_outcome_id: 1, surveyed_all_areas: 'Y', @@ -901,7 +896,6 @@ describe('SurveyRepository', () => { revision_count: 1 }, purpose_and_methodology: { - field_method_id: 1, additional_details: '', intended_outcome_id: 1, surveyed_all_areas: 'Y', diff --git a/api/src/repositories/survey-repository.ts b/api/src/repositories/survey-repository.ts index a19303194c..a244f8fef6 100644 --- a/api/src/repositories/survey-repository.ts +++ b/api/src/repositories/survey-repository.ts @@ -79,7 +79,6 @@ const SurveyRecord = z.object({ uuid: z.string().nullable(), start_date: z.string(), end_date: z.string().nullable(), - field_method_id: z.number().nullable(), additional_details: z.string().nullable(), intended_outcome_id: z.number().nullable(), comments: z.string().nullable(), @@ -241,7 +240,6 @@ export class SurveyRepository extends BaseRepository { async getSurveyPurposeAndMethodology(surveyId: number): Promise { const sqlStatement = SQL` SELECT - s.field_method_id, s.additional_details, s.intended_outcome_id, array_remove(array_agg(sv.vantage_id), NULL) as vantage_ids @@ -254,7 +252,6 @@ export class SurveyRepository extends BaseRepository { WHERE s.survey_id = ${surveyId} GROUP BY - s.field_method_id, s.additional_details, s.intended_outcome_id; `; @@ -578,7 +575,6 @@ export class SurveyRepository extends BaseRepository { name, start_date, end_date, - field_method_id, additional_details, intended_outcome_id ) VALUES ( @@ -586,7 +582,6 @@ export class SurveyRepository extends BaseRepository { ${surveyData.survey_details.survey_name}, ${surveyData.survey_details.start_date}, ${surveyData.survey_details.end_date}, - ${surveyData.purpose_and_methodology.field_method_id}, ${surveyData.purpose_and_methodology.additional_details}, ${surveyData.purpose_and_methodology.intended_outcome_id} ) @@ -887,7 +882,6 @@ export class SurveyRepository extends BaseRepository { if (surveyData.purpose_and_methodology) { fieldsToUpdate = { ...fieldsToUpdate, - field_method_id: surveyData.purpose_and_methodology.field_method_id, additional_details: surveyData.purpose_and_methodology.additional_details, intended_outcome_id: surveyData.purpose_and_methodology.intended_outcome_id }; diff --git a/api/src/repositories/validation-repository.test.ts b/api/src/repositories/validation-repository.test.ts index 78d7a2057c..7f6bf8e326 100644 --- a/api/src/repositories/validation-repository.test.ts +++ b/api/src/repositories/validation-repository.test.ts @@ -24,7 +24,6 @@ describe('ValidationRepository', () => { const templateName = 'template Name'; const templateVersion = '1'; - const fieldMethodId = 10; const surveySpecies = [10]; const mockResponse = ({ @@ -43,12 +42,7 @@ describe('ValidationRepository', () => { }); const repo = new ValidationRepository(dbConnection); - const response = await repo.getTemplateMethodologySpeciesRecord( - templateName, - templateVersion, - fieldMethodId, - surveySpecies - ); + const response = await repo.getTemplateMethodologySpeciesRecord(templateName, templateVersion, surveySpecies); expect(response.template_methodology_species_id).to.be.eql(1); expect(response.validation).to.be.eql('{}'); expect(response.transform).to.be.eql('{}'); @@ -65,7 +59,7 @@ describe('ValidationRepository', () => { const repo = new ValidationRepository(dbConnection); try { - await repo.getTemplateMethodologySpeciesRecord('name', 'version', 1, [1]); + await repo.getTemplateMethodologySpeciesRecord('name', 'version', [1]); expect.fail(); } catch (error) { expect((error as HTTP400).message).to.be.eql('Failed to query template methodology species table'); diff --git a/api/src/repositories/validation-repository.ts b/api/src/repositories/validation-repository.ts index 6fe4c4b21d..c04bc77f28 100644 --- a/api/src/repositories/validation-repository.ts +++ b/api/src/repositories/validation-repository.ts @@ -27,7 +27,6 @@ export class ValidationRepository extends BaseRepository { async getTemplateMethodologySpeciesRecord( templateName: string, templateVersion: string, - surveyFieldMethodId: number, surveySpecies: number[] ): Promise { const templateRow = await this.getTemplateNameVersionId(templateName, templateVersion); @@ -50,11 +49,7 @@ export class ValidationRepository extends BaseRepository { const queryBuilder = getKnex() .select('template_methodology_species_id', 'wldtaxonomic_units_id', 'validation', 'transform') .from('template_methodology_species') - .where('template_id', templateRow.template_id) - .and.where(function (qb) { - qb.or.where('field_method_id', surveyFieldMethodId); - qb.or.where('field_method_id', null); - }); + .where('template_id', templateRow.template_id); const response = await this.connection.knex(queryBuilder); diff --git a/api/src/services/code-service.test.ts b/api/src/services/code-service.test.ts index b1dc019c0d..102a5db7cf 100644 --- a/api/src/services/code-service.test.ts +++ b/api/src/services/code-service.test.ts @@ -39,7 +39,6 @@ describe('CodeService', () => { 'system_roles', 'project_roles', 'administrative_activity_status_type', - 'field_methods', 'intended_outcomes', 'vantage_codes', 'site_selection_strategies', diff --git a/api/src/services/code-service.ts b/api/src/services/code-service.ts index 2bc0d217d4..7e3f501779 100644 --- a/api/src/services/code-service.ts +++ b/api/src/services/code-service.ts @@ -36,7 +36,6 @@ export class CodeService extends DBService { system_roles, project_roles, administrative_activity_status_type, - field_methods, intended_outcomes, vantage_codes, survey_jobs, @@ -56,7 +55,6 @@ export class CodeService extends DBService { await this.codeRepository.getSystemRoles(), await this.codeRepository.getProjectRoles(), await this.codeRepository.getAdministrativeActivityStatusType(), - await this.codeRepository.getFieldMethods(), await this.codeRepository.getIntendedOutcomes(), await this.codeRepository.getVantageCodes(), await this.codeRepository.getSurveyJobs(), @@ -78,7 +76,6 @@ export class CodeService extends DBService { system_roles, project_roles, administrative_activity_status_type, - field_methods, intended_outcomes, vantage_codes, survey_jobs, diff --git a/api/src/services/eml-service.test.ts b/api/src/services/eml-service.test.ts index 9a0911e478..5818a88182 100644 --- a/api/src/services/eml-service.test.ts +++ b/api/src/services/eml-service.test.ts @@ -982,7 +982,6 @@ describe.skip('EmlService', () => { system_roles: [], project_roles: [], administrative_activity_status_type: [], - field_methods: [], intended_outcomes: [], vantage_codes: [], site_selection_strategies: [], diff --git a/api/src/services/eml-service.ts b/api/src/services/eml-service.ts index 9743cae752..766dc5719f 100644 --- a/api/src/services/eml-service.ts +++ b/api/src/services/eml-service.ts @@ -981,10 +981,6 @@ export class EmlService extends DBService { return { description: { section: [ - { - title: 'Field Method', - para: codes.field_methods.find((code) => code.id === survey.purpose_and_methodology.field_method_id)?.name - }, { title: 'Vantage Codes', para: { diff --git a/api/src/services/validation-service.ts b/api/src/services/validation-service.ts index d4032e48a1..6d82356579 100644 --- a/api/src/services/validation-service.ts +++ b/api/src/services/validation-service.ts @@ -332,15 +332,9 @@ export class ValidationService extends DBService { const surveyData = await this.surveyService.getSurveyById(surveyId); - const surveyFieldMethodId = surveyData.purpose_and_methodology.field_method_id; const surveySpecies = surveyData.species.focal_species; - return this.validationRepository.getTemplateMethodologySpeciesRecord( - templateName, - templateVersion, - surveyFieldMethodId, - surveySpecies - ); + return this.validationRepository.getTemplateMethodologySpeciesRecord(templateName, templateVersion, surveySpecies); } async getValidationSchema(file: XLSXCSV, surveyId: number): Promise { diff --git a/api/src/utils/xlsx-utils/worksheet-utils.ts b/api/src/utils/xlsx-utils/worksheet-utils.ts index 0d18554327..c2c62c9c13 100644 --- a/api/src/utils/xlsx-utils/worksheet-utils.ts +++ b/api/src/utils/xlsx-utils/worksheet-utils.ts @@ -254,7 +254,7 @@ export function prepareWorksheetCells(worksheet: xlsx.WorkSheet) { const coord = xlsx.utils.encode_cell({ r, c }); let cell: CellObject = worksheet[coord]; - if (!cell || !cell.v) { + if (!cell?.v) { // Cell is null or has no raw value continue; } diff --git a/app/src/features/surveys/CreateSurveyPage.tsx b/app/src/features/surveys/CreateSurveyPage.tsx index 40d93b8793..5bb2e2be73 100644 --- a/app/src/features/surveys/CreateSurveyPage.tsx +++ b/app/src/features/surveys/CreateSurveyPage.tsx @@ -334,11 +334,6 @@ const CreateSurveyPage = () => { return { value: item.id, label: item.name, subText: item.description }; }) || [] } - field_methods={ - codes?.field_methods.map((item) => { - return { value: item.id, label: item.name, subText: item.description }; - }) || [] - } vantage_codes={ codes?.vantage_codes.map((item) => { return { value: item.id, label: item.name }; diff --git a/app/src/features/surveys/components/PurposeAndMethodologyForm.tsx b/app/src/features/surveys/components/PurposeAndMethodologyForm.tsx index 2bf4a7d81e..c082020d96 100644 --- a/app/src/features/surveys/components/PurposeAndMethodologyForm.tsx +++ b/app/src/features/surveys/components/PurposeAndMethodologyForm.tsx @@ -13,7 +13,6 @@ export interface IPurposeAndMethodologyForm { purpose_and_methodology: { intended_outcome_id: number; additional_details: string; - field_method_id: number; vantage_code_ids: number[]; }; } @@ -22,14 +21,12 @@ export const PurposeAndMethodologyInitialValues: IPurposeAndMethodologyForm = { purpose_and_methodology: { intended_outcome_id: '' as unknown as number, additional_details: '', - field_method_id: '' as unknown as number, vantage_code_ids: [] } }; export const PurposeAndMethodologyYupSchema = yup.object().shape({ purpose_and_methodology: yup.object().shape({ - field_method_id: yup.number().required('Field Method is Required'), additional_details: yup.string(), intended_outcome_id: yup.number().required('Intended Outcome is Required'), vantage_code_ids: yup.array().min(1, 'One or more Vantage Codes are Required').required('Required') @@ -38,7 +35,6 @@ export const PurposeAndMethodologyYupSchema = yup.object().shape({ export interface IPurposeAndMethodologyFormProps { intended_outcomes: ISelectWithSubtextFieldOption[]; - field_methods: ISelectWithSubtextFieldOption[]; vantage_codes: IMultiAutocompleteFieldOption[]; } @@ -78,15 +74,6 @@ const PurposeAndMethodologyForm: React.FC = (pr Survey Methodology - - - { return stratums.length > 0 ? schema.test( @@ -130,8 +132,8 @@ const SurveySiteSelectionForm = (props: ISurveySiteSelectionFormProps) => { label="Site Selection Strategies" options={siteStrategies} selectedOptions={selectedSiteStrategies} - required={false} - onChange={(event, selectedOptions, reason) => { + required={true} + onChange={(_, selectedOptions, reason) => { // If the user clicks to remove the 'Stratified' option and there are Stratums already defined, then show // a warning dialogue asking the user if they are sure they want to remove the option and delete the Stratums if ( diff --git a/app/src/features/surveys/edit/EditSurveyForm.tsx b/app/src/features/surveys/edit/EditSurveyForm.tsx index 3da49726b4..4c695df1d3 100644 --- a/app/src/features/surveys/edit/EditSurveyForm.tsx +++ b/app/src/features/surveys/edit/EditSurveyForm.tsx @@ -75,7 +75,6 @@ const EditSurveyForm: React.FC = (props) => { purpose_and_methodology: { intended_outcome_id: '' as unknown as number, additional_details: '', - field_method_id: '' as unknown as number, vantage_code_ids: [] } }, @@ -187,11 +186,6 @@ const EditSurveyForm: React.FC = (props) => { return { value: item.id, label: item.name, subText: item.description }; }) || [] } - field_methods={ - props.codes.field_methods.map((item) => { - return { value: item.id, label: item.name, subText: item.description }; - }) || [] - } vantage_codes={ props.codes.vantage_codes.map((item) => { return { value: item.id, label: item.name }; diff --git a/app/src/features/surveys/view/components/SurveyGeneralInformation.tsx b/app/src/features/surveys/view/components/SurveyGeneralInformation.tsx index a7bcecf9ef..74358ac65c 100644 --- a/app/src/features/surveys/view/components/SurveyGeneralInformation.tsx +++ b/app/src/features/surveys/view/components/SurveyGeneralInformation.tsx @@ -66,7 +66,7 @@ const SurveyGeneralInformation = () => { return ( { return ( { ); expect(getByTestId('survey_intended_outcome').textContent).toEqual('Intended Outcome 1'); - expect(getByTestId('survey_field_method').textContent).toEqual('Recruitment'); expect(getAllByTestId('survey_vantage_code').map((item) => item.textContent)).toEqual([ 'Vantage Code 1', 'Vantage Code 2' @@ -93,7 +92,6 @@ describe('SurveyPurposeAndMethodologyData', () => { ); expect(getByTestId('survey_intended_outcome').textContent).toEqual('Intended Outcome 1'); - expect(getByTestId('survey_field_method').textContent).toEqual('Recruitment'); expect(getAllByTestId('survey_vantage_code').map((item) => item.textContent)).toEqual([ 'Vantage Code 1', 'Vantage Code 2' diff --git a/app/src/features/surveys/view/components/SurveyPurposeAndMethodologyData.tsx b/app/src/features/surveys/view/components/SurveyPurposeAndMethodologyData.tsx index 297ee71891..86efdae772 100644 --- a/app/src/features/surveys/view/components/SurveyPurposeAndMethodologyData.tsx +++ b/app/src/features/surveys/view/components/SurveyPurposeAndMethodologyData.tsx @@ -44,15 +44,6 @@ const SurveyPurposeAndMethodologyData = () => { )} - - Field Method - - {Boolean(surveyData.purpose_and_methodology.field_method_id) && - codes?.field_methods?.find((item: any) => item.id === surveyData.purpose_and_methodology.field_method_id) - ?.name} - - - Vantage Code(s) {surveyData.purpose_and_methodology.vantage_code_ids?.map((vc_id: number, index: number) => { diff --git a/app/src/interfaces/useCodesApi.interface.ts b/app/src/interfaces/useCodesApi.interface.ts index 33cb6f8c3f..eb50d26a4e 100644 --- a/app/src/interfaces/useCodesApi.interface.ts +++ b/app/src/interfaces/useCodesApi.interface.ts @@ -34,7 +34,6 @@ export interface IGetAllCodeSetsResponse { system_roles: CodeSet; project_roles: CodeSet; administrative_activity_status_type: CodeSet; - field_methods: CodeSet<{ id: number; name: string; description: string }>; intended_outcomes: CodeSet<{ id: number; name: string; description: string }>; vantage_codes: CodeSet; survey_jobs: CodeSet; diff --git a/app/src/interfaces/useSurveyApi.interface.ts b/app/src/interfaces/useSurveyApi.interface.ts index f117d39ccb..14d39c9649 100644 --- a/app/src/interfaces/useSurveyApi.interface.ts +++ b/app/src/interfaces/useSurveyApi.interface.ts @@ -63,7 +63,6 @@ export interface IGetSurveyForViewResponseDetails { export interface IGetSurveyForViewResponsePurposeAndMethodology { intended_outcome_id: number; additional_details: string; - field_method_id: number; vantage_code_ids: number[]; surveyed_all_areas: StringBoolean; } @@ -163,7 +162,6 @@ export interface SurveyUpdateObject extends ISurveyLocationForm { purpose_and_methodology?: { intended_outcome_id: number; additional_details: string; - field_method_id: number; vantage_code_ids: number[]; surveyed_all_areas: StringBoolean; revision_count: number; diff --git a/app/src/test-helpers/code-helpers.ts b/app/src/test-helpers/code-helpers.ts index 4eab2cb61c..913526d82d 100644 --- a/app/src/test-helpers/code-helpers.ts +++ b/app/src/test-helpers/code-helpers.ts @@ -36,10 +36,6 @@ export const codes: IGetAllCodeSetsResponse = { { id: 2, name: 'Actioned' }, { id: 3, name: 'Rejected' } ], - field_methods: [ - { id: 1, name: 'Recruitment', description: 'Description' }, - { id: 2, name: 'SRB', description: 'Description' } - ], vantage_codes: [ { id: 1, name: 'Vantage Code 1' }, { id: 2, name: 'Vantage Code 2' } diff --git a/app/src/test-helpers/survey-helpers.ts b/app/src/test-helpers/survey-helpers.ts index 92d69d8fca..d848c17157 100644 --- a/app/src/test-helpers/survey-helpers.ts +++ b/app/src/test-helpers/survey-helpers.ts @@ -22,7 +22,6 @@ export const surveyObject: SurveyViewObject = { purpose_and_methodology: { intended_outcome_id: 1, additional_details: 'details', - field_method_id: 1, vantage_code_ids: [1, 2], surveyed_all_areas: 'true' }, diff --git a/database/src/migrations/20231030120000_depreciate_field_method.ts b/database/src/migrations/20231030120000_depreciate_field_method.ts new file mode 100644 index 0000000000..676cc9c9d1 --- /dev/null +++ b/database/src/migrations/20231030120000_depreciate_field_method.ts @@ -0,0 +1,19 @@ +import { Knex } from 'knex'; + +/** + * + * @export + * @param {Knex} knex + * @return {*} {Promise} + */ +export async function up(knex: Knex): Promise { + await knex.raw(`--sql + SET search_path = 'biohub'; + + COMMENT ON COLUMN survey.field_method_id IS '(Depreciated) System generated surrogate primary key identifier.'; + `); +} + +export async function down(knex: Knex): Promise { + await knex.raw(``); +} diff --git a/database/src/seeds/03_basic_project_survey_setup.ts b/database/src/seeds/03_basic_project_survey_setup.ts index 3afe97bbfd..c9330f5a2b 100644 --- a/database/src/seeds/03_basic_project_survey_setup.ts +++ b/database/src/seeds/03_basic_project_survey_setup.ts @@ -64,6 +64,7 @@ export async function seed(knex: Knex): Promise { ${insertSurveyVantageData(surveyId)} ${insertSurveyParticipationData(surveyId)} ${insertSurveyLocationData(surveyId)} + ${insertSurveySiteStrategy(surveyId)} `); } } @@ -82,6 +83,18 @@ const checkAnyProjectExists = () => ` project; `; +const insertSurveySiteStrategy = (surveyId: number) => ` + INSERT into survey_site_strategy + ( + survey_id, + site_strategy_id + ) + VALUES ( + ${surveyId}, + (select site_strategy_id from site_strategy ss order by random() limit 1) + ); +`; + /** * SQL to insert Project Program data * @@ -303,7 +316,6 @@ const insertSurveyData = (projectId: number) => ` ( project_id, name, - field_method_id, additional_details, start_date, end_date, @@ -314,7 +326,6 @@ const insertSurveyData = (projectId: number) => ` VALUES ( ${projectId}, 'Seed Survey', - (select field_method_id from field_method order by random() limit 1), $$${faker.lorem.sentences(2)}$$, $$${faker.date.between({ from: '2010-01-01T00:00:00-08:00', to: '2015-01-01T00:00:00-08:00' }).toISOString()}$$, $$${faker.date.between({ from: '2020-01-01T00:00:00-08:00', to: '2025-01-01T00:00:00-08:00' }).toISOString()}$$,