blindern / billett

Billettsystemet til UKA på Blindern
https://billett.blindernuka.no
MIT License
3 stars 0 forks source link

Billett-/salgsrapport #96

Open henrist opened 7 years ago

henrist commented 7 years ago

Vi trenger en side som genererer rapport over nettsalget. Salg over skranke får man i dag oversikt over gjennom oppgjørsgruppene, men nettsalget har ikke noe tilsvarende.

Kode som kan generere dette foreløpig:

Lagre som /tmp/uka-2017.txt: https://billett.blindernuka.no/api/ticket?filter=event.eventgroup.id=3&with=event,ticketgroup&limit=10&offset=0

const fs = require('fs')

const data = JSON.parse(fs.readFileSync('/tmp/uka-2017.txt', { encoding: 'utf-8' }))

const formatDateTime = time => {
  return `${time.getFullYear()}-${(time.getMonth()+1)}-${time.getDate()} ${time.getHours()}:${time.getMinutes()}`
}

// Change this structure to fit the need
const val = data.result
  .filter(
    node =>
      node.is_valid &&
      node.valid_paymentgroup_id === null
  )
  .map(node => ({
    ticket_id: node.id,
    ticket_time: formatDateTime(new Date(node.time * 1000)),
    event_id: node.event.id,
    event_time_start: formatDateTime(new Date(node.event.time_start * 1000)),
    event_title: node.event.title,
    event_category: node.event.category,
    ticketgroup_price: node.ticketgroup.price + node.ticketgroup.fee,
    ticketgroup_title: node.ticketgroup.title
  }))

const headers = Object.keys(val[0]);
const list =
  headers.join('\t') +
  '\n' +
  val.map(ticket => {
    const values = headers.map(key => ticket[key]);
    return values.join('\t') + '\n'
  }).join('')

console.log(list)

Koden ovenfor er benyttet til rapporten for 2017.