/* eslint-disable no-param-reassign */
import { action } from 'mobx'

import getGeschaefteKontakteInternFromDb from '../../src/getGeschaefteKontakteInternFromDb'
import newGeschaeftKontaktInternInDb from '../../src/newGeschaeftKontaktInternInDb'
import deleteGeschaeftKontaktIntern from '../../src/deleteGeschaeftKontaktIntern'

export default store => ({
  geschaefteKontakteInternGet: action(() => {
    store.geschaefteKontakteIntern.fetching = true
    store.geschaefteKontakteIntern.error = []
  }),
  geschaefteKontakteInternGetSuccess: action(geschaefteKontakteIntern => {
    store.geschaefteKontakteIntern.fetching = false
    store.geschaefteKontakteIntern.error = []
    store.geschaefteKontakteIntern.geschaefteKontakteIntern = geschaefteKontakteIntern
  }),
  geschaefteKontakteInternGetError: action(error => {
    store.geschaefteKontakteIntern.fetching = false
    store.geschaefteKontakteIntern.error.push(error)
  }),
  getGeschaefteKontakteIntern: action(() => {
    const { app } = store
    store.geschaefteKontakteInternGet()
    let geschaefteKontakteIntern = []
    try {
      geschaefteKontakteIntern = getGeschaefteKontakteInternFromDb(app.db)
    } catch (error) {
      store.geschaefteKontakteInternGetError(error)
    }
    store.geschaefteKontakteInternGetSuccess(geschaefteKontakteIntern)
  }),
  geschaeftKontaktInternNew: action(geschaeftKontaktIntern =>
    store.geschaefteKontakteIntern.geschaefteKontakteIntern.push(
      geschaeftKontaktIntern,
    ),
  ),
  geschaeftKontaktInternNewError: action(error =>
    store.geschaefteKontakteIntern.error.push(error),
  ),
  geschaeftKontaktInternNewCreate: action((idGeschaeft, idKontakt) => {
    const { app } = store
    newGeschaeftKontaktInternInDb(app.db, idGeschaeft, idKontakt)
      .then(geschaeftKontaktIntern =>
        store.geschaeftKontaktInternNew(geschaeftKontaktIntern),
      )
      .catch(error => store.geschaeftKontaktInternNewError(error))
  }),
  geschaeftKontaktInternRemoveDeleteIntended: action(() => {
    store.geschaefteKontakteIntern.willDelete = false
  }),
  geschaeftKontaktInternDelete: action((idGeschaeft, idKontakt) => {
    store.geschaefteKontakteIntern.geschaefteKontakteIntern = store.geschaefteKontakteIntern.geschaefteKontakteIntern.filter(
      g => g.idGeschaeft !== idGeschaeft || g.idKontakt !== idKontakt,
    )
    store.geschaefteKontakteIntern.activeIdGeschaeft = null
    store.geschaefteKontakteIntern.activeIdKontakt = null
  }),
  geschaeftKontaktInternRemove: action((idGeschaeft, idKontakt) => {
    const { app } = store
    try {
      deleteGeschaeftKontaktIntern(app.db, idGeschaeft, idKontakt)
    } catch (error) {
      return store.geschaeftKontaktInternDeleteError(error)
    }
    store.geschaeftKontaktInternRemoveDeleteIntended()
    store.geschaeftKontaktInternDelete(idGeschaeft, idKontakt)
  }),
  geschaeftKontaktInternDeleteError: action(error =>
    store.geschaeftKontaktInternDelete.push(error),
  ),
  geschaeftKontaktInternSetDeleteIntended: action((idGeschaeft, idKontakt) => {
    store.geschaefteKontakteIntern.willDelete = true
    store.geschaefteKontakteIntern.activeIdGeschaeft = idGeschaeft
    store.geschaefteKontakteIntern.activeIdKontakt = idKontakt
  }),
  geschaefteKontakteInternChangeDbError: action(error =>
    store.geschaefteKontakteIntern.error.push(error),
  ),
})

@@ -1702,16 +1702,82 @@
 ore%0A    
+let geschaeftKontaktIntern%0A    try %7B%0A      geschaeftKontaktIntern=
 newGesch
@@ -1838,49 +1838,38 @@
     
-  .then(geschaeftKontaktIntern =%3E
+%7D catch (error) %7B
 %0A      
- 
+return
  sto
@@ -1900,63 +1900,30 @@
 nNew
-(geschaeftKontaktIntern),
+Error(error)
 %0A    
-  )
+%7D
 %0A   
-   .catch(error =%3E
  sto
@@ -1950,28 +1950,39 @@
 nternNew
-Error(error)
+(geschaeftKontaktIntern
 )%0A  %7D),%0A

move db