<template>
  <base-modal
    :is-create="true"
    :text="$t('generic.add')"
  >
    <template v-slot="slotProps">
      <member-addition-form
        :add-member="addMember"
        :items="items"
        :roles="getTranslatedRoles(roles, $t('members.roles'))"
        @close="slotProps.close"
        @search-user="searchUser"
      />
    </template>
  </base-modal>
</template>

<script>
import { mapActions, mapGetters } from 'vuex'
import BaseModal from '@/components/molecules/BaseModal'
import MemberAdditionForm from '@/components/organisms/members/MemberAdditionForm'
import UserService from '@/services/user.service'
import { translatedRoles } from '~/plugins/utils'

export default {
  components: {
    BaseModal,
    MemberAdditionForm
  },

  data() {
    return {
      items: []
    }
  },

  computed: {
    ...mapGetters('roles', ['roles'])
  },

  created() {
    this.getRoleList()
  },

  methods: {
    ...mapActions('members', ['addMember']),
    ...mapActions('roles', ['getRoleList']),

    searchUser(username) {
      UserService.getUserList(username)
        .then((response) => {
          this.items = response.data
        })
        .catch((error) => {
          alert(error)
        })
    },
    getTranslatedRoles(roles, mappings) {
      return translatedRoles(roles, mappings)
    }
  }
}
</script>