tree = require('../states/appState')
reqwest = require('reqwest')
fbState = tree.select('filterBuilder')
filterState = tree.select('engagementFeed', 'filterState')
getQuery = ->
  query = ''
  for rule, i in fbState.get('rules')
    type = rule.type
    operator = rule.operator
    value = rule.value.substr(6)
    if i > 0
      if rule.conjunction == 0
        query += 'AND;'
      else
        query += 'OR;'
    query += "#{type};"
    query += "#{operator};"
    query += "#{value};"
  return query
actions =
  addRule: ->
    count = fbState.get('ruleCount') + 1
    fbState.select('rules').push(
      {
      type: 'VALUE'
      operator: '<='
      value: 'value-1'
      conjunction: 0
      }
    )
    fbState.select('ruleCount').set(count)
  removeRule: (rid) ->
    fbState.select('rules').splice([rid, 1])
    fbState.select('ruleCount').set(fbState.get('ruleCount') - 1)
  changeRuleType: (rid, type) ->
    fbState.select('rules', rid, 'type').set(type)
  changeRuleOperator: (rid, operator) ->
    fbState.select('rules', rid, 'operator').set(operator)
    if operator == 'present'
      fbState.select('rules', rid, 'value').set(null)
  changeRuleValue: (rid, value) ->
    fbState.select('rules', rid, 'value').set(value)
  changeConjunction: (rid, value) ->
    fbState.select('rules', rid, 'conjunction').set(value)
  toggleCreateNew: ->
    fbState.select('active').set(!(fbState.get('active')))
  toggleSavePrompt: ->
    fbState.select('prompt').set(!(fbState.get('prompt')))
  setName: (payload) ->
    fbState.select('name').set(payload)
    tree.commit()
  saveFilter: ->
    name = fbState.get('name')
    query = getQuery()
    reqwest
      url: "/feedback/filter/create/"
      method: 'post'
      data:
        "name": name
        "query": query
        "csrfmiddlewaretoken": Django.csrf_token()
    .then (res) ->
      filterState.select('filters').push(
        {value: 'value' + res.id, label: name, query: query}
      )
      fbState.select('prompt').set(false)
  saveApply: ->
    name = fbState.get('name')
    query = getQuery()
    reqwest
      url: "/feedback/filter/create/"
      method: 'post'
      data:
        "name": name
        "query": query
        "csrfmiddlewaretoken": Django.csrf_token()
    .then (res) ->
      filterState.select('filters').push(
        {value: 'value' + res.id, label: name, query: query}
      )
      filterState.select('selectedFilter').set(
        id: res.id
        label: name
        query: query
      )
      fbState.select('prompt').set(false)
  editFilterSave: ->
    query = getQuery()
    filterId = filterState.select('selectedFilter').get('id')
    reqwest
      url: "/feedback/filter/edit/"
      method: 'post'
      data:
        "filter": filterId
        "query": query
        "csrfmiddlewaretoken": Django.csrf_token()
    .then (res) ->
      filterState.select(
        'filters', {value: "value-#{res.id}"}, 'query'
      ).set(query)
      filterState.select('selectedFilter', 'query').set(query)
      fbState.select('active').set(false)



module.exports = actions