// License: LGPL-3.0-or-later
var request = require('../common/client')
var path = '/nonprofits/' + app.nonprofit_id + '/events/' + appl.event_id + '/ticket_levels'
const reorder = require('../components/drag-to-reorder')

reorder(`${path}/update_order`, 'js-reorderTickets')

module.exports = index_ticket_levels

appl.def('ticket_levels', {
  show_create_or_edit: function(action, i){
    var reset = {name: '', amount: 0, limit: '', id: '', description: ''}
    appl.def('ticket_levels', {
      currently_editing: action === 'edit' ? appl.ticket_levels.data[i] : reset,
      current_action: action
    })
    appl.open_modal('ticketLevelCreateOrEditModal')
  },
  create_or_edit: function(form_obj){
    appl.is_loading()
    if(appl.ticket_levels.current_action === 'edit')
      edit_ticket_level(form_obj)
    else
      create_ticket_level(form_obj)
  },
  delete: function(id){
    request.del(path + '/' + id).end(function(err, resp){
        after_ticket_level_ajax(err, 'delete')
    })
  }
})


function index_ticket_levels(path, cb){
  appl.is_loading()
  request.get(path).end(function(err, resp) {
    appl.def('ticket_levels.data', resp.body.data.map(augment_ticket_level_data))
    if(cb){cb()}
    appl.not_loading()
  })

  function augment_ticket_level_data(data) {
    if (data.amount === 0) 
      data.formatted_amount = 'Free'
    else 
      data.formatted_amount = '$' + appl.cents_to_dollars(data.amount)
    if (data.limit)
      data.remaining = data.limit - data.quantity
    if (data.remaining <= 0)
      data.sold_out = true
    return data
  }  
}



function edit_ticket_level(form_obj) {
  request.put(path + '/' + form_obj.id, form_obj).end(function(err, resp){
    after_ticket_level_ajax(err, 'update')
  })
}


function create_ticket_level(form_obj) {
  request.post(path, form_obj).end(function(err, resp){
    after_ticket_level_ajax(err, 'create')
  })
}


function after_ticket_level_ajax(err, action) {
  appl.not_loading()
  if(err) 
   appl.notify("Sorry, we weren't able to " + action + " your ticket.  Please try again in a moment.")
  else {
   appl.notify('Ticket level succesfully ' + action + 'd.')
   index_ticket_levels(path)
   appl.open_modal('manageTicketLevelsModal')
  } 
}

index_ticket_levels(path)