name: contact

# Metaangaben zur Kollektion welche in der Admin-UI verwendet werden können
meta:
    openapi:
        disabled: true
    # Navigationseintrag in der Admin-UI
    label:
        de: Kontaktanfragen
        en: Contact request
    # Icon (Material UI) für den Navigationseintrag
    muiIcon: web
    defaultSort:
        field: insertTime
        order: DESC
    backup:
        active: true
        collectionName: backups

    views: &views # Mobile Darstellung
        - type: simpleList
          mediaQuery: "(max-width:599px)"
          primaryText: status
          secondaryText: request.email

        # Desktop
        - type: table
          mediaQuery: "(min-width:600px)"
          columns:
              - source: status
                label:
                    de: Status
                    en: Status
                filter: true
              - source: request.email
                label:
                    de: E-Mail
                    en: E-Mail
                filter: true
              - source: request.name
                label:
                    de: Name
                    en: Name
                filter: true
              - source: request.description
                label:
                    de: Beschreibung
                    en: Description
                filter: true
              - source: insertTime
                label:
                    de: Erstellt am
                    en: Created at
                filter: true

    subNavigation:
        - name: modalForeign
          defaultSort:
              field: "path"
              order: "ASC"
          views: *views
          defaultCallback:
              eval: |
                  //js
                  (entry) => {
                      parent.selectEntry(entry)  
                  }
                  //!js
        - name: new
          label:
              de: Neu
              en: New
          muiIcon: new
          defaultSort:
              field: insertTime
              order: DESC
          views: *views
          filter:
              status: new
        - name: inProgress
          label:
              de: In Bearbeitung
              en: In Progress
          muiIcon: inProgress
          defaultSort:
              field: insertTime
              order: DESC
          views: *views
          filter:
              status: inProgress
        - name: done
          label:
              de: Abgeschlossen
              en: Done
          muiIcon: done
          defaultSort:
              field: insertTime
              order: DESC
          views: *views
          filter:
              status: done
hooks:
    post:
        create:
            type: javascript
            file: hooks/contact/post_create.js
        return:
            type: javascript
            file: hooks/contact/post_return.js
permissions:
    public:
        methods:
            get: false
            post: true
            put: false
            delete: false

    user:
        methods:
            get: true
            post: true
            put: true
            delete: true

# Feldliste der Kollektion
fields:
    - name: status
      type: string
      meta:
          label:
              de: Status
              en: Status
          widget: select
          choices:
              - name: neue
                id: new
              - name: in Bearbeitung
                id: inProgress
              - name: abgeschlossen
                id: done

    - name: request
      type: object
      meta:
          label:
              de: Anfrage
              en: Request
      subFields:
          - name: email
            type: string
            meta:
                label:
                    de: E-Mail
                    en: E-Mail
                containerProps:
                    layout:
                        size:
                            default: "col-6"
                            small: "col-12"
                            large: "col-6"

          - name: name
            type: string
            meta:
                label:
                    de: Name
                    en: Name
                containerProps:
                    layout:
                        size:
                            default: "col-6"
                            small: "col-12"
                            large: "col-6"

          - name: description
            type: string
            meta:
                label:
                    de: Beschreibung
                    en: Description
                inputProps:
                    multiline: true
indexes:
    - name: fulltext #  Ein eindeutiger Name für den Index. Es ist optional, wird jedoch empfohlen, um den Index später leicht identifizieren zu können.
      key: # Bestimmt, auf welche Felder der Index angewendet werden soll. Dies kann ein einfacher String sein, wenn der Index nur ein Feld umfasst, oder ein Array von Strings, wenn der Index mehrere Felder umfasst.
          - $text:$**
