SpeciesFileGroup/taxonworks

View on GitHub
app/javascript/vue/tasks/nomenclature/new_taxon_name/store/actions/addSubsequentNameForm.js

Summary

Maintainability
A
0 mins
Test Coverage
import ActionNames from './actionNames'
import { MutationNames } from '../mutations/mutations'
import { TaxonName, TaxonNameRelationship } from '@/routes/endpoints'
import { TAXON_RELATIONSHIP_FAMILY_GROUP_NAME_FORM } from '@/constants'

export default async ({ state, commit, dispatch }, { name, citation }) => {
  const currentTaxon = state.taxon_name
  const payload = {
    name,
    parent_id: currentTaxon.parent_id,
    rank_class: currentTaxon.rank_string,
    type: 'Protonym',
    family_group_name_form_relationship_attributes: {
      object_taxon_name_id: currentTaxon.id
    }
  }

  if (citation.source_id) {
    Object.assign(payload, {
      origin_citation_attributes: { ...citation, is_original: true }
    })
  }

  return TaxonName.create({
    taxon_name: payload
  })
    .then(({ body }) =>
      TaxonNameRelationship.where({
        type: TAXON_RELATIONSHIP_FAMILY_GROUP_NAME_FORM,
        object_taxon_name_id: currentTaxon.id,
        subject_taxon_name_id: body.id
      }).then(({ body }) => {
        body.forEach((item) => {
          commit(MutationNames.AddTaxonRelationship, item)
        })

        dispatch(ActionNames.LoadSoftValidation, 'taxonRelationshipList')
      })
    )
    .catch(() => {})
}