SpeciesFileGroup/taxonworks

View on GitHub
app/javascript/vue/tasks/digitize/store/actions/createDeterminationFromParams.js

Summary

Maintainability
A
0 mins
Test Coverage
import { Otu } from '@/routes/endpoints'
import { MutationNames } from '../mutations/mutations'
import { randomUUID } from '@/helpers'

export default async ({ state, commit }) => {
  const urlParams = new URLSearchParams(window.location.search)
  const otuId = urlParams.get('otu_id')
  const taxonId = urlParams.get('taxon_name_id')

  if (!otuId && !taxonId) return

  const params = {
    otu_id: otuId,
    taxon_name_id: taxonId
  }

  const otuList = (await Otu.where(params)).body
  let otu

  if (otuList.length) {
    otu = otuList[0]
  } else if (taxonId) {
    otu = (await Otu.create({ otu: { taxon_name_id: taxonId } })).body
  }

  commit(MutationNames.SetTaxonDeterminations, [
    {
      object_tag: otu.object_tag,
      otu_id: otu.id,
      roles_attributes: [],
      uuid: randomUUID()
    }
  ])
}