You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

71 lines
1.9 KiB

package cdr
import (
"fmt"
)
type ExportLineIndex int
var (
ExportLineSize = 9
ExportLineTypeCall = "CALL"
ExportLineTypeText = "TEXT"
ExportLineTypeData = "DATA"
ExportLineHeader = []string{
"Type", "Timestamp", "From", "To", "Units", "Account", "Cost", "Price", "Description",
}
)
const (
ExportLineType ExportLineIndex = iota
ExportLineTimestamp
ExportLineFrom
ExportLineTo
ExportLineUnits
ExportLineAccount
ExportLineCost
ExportLinePrice
ExportLineDescription
)
func ExportCall(c Call) []string {
ret := make([]string, ExportLineSize)
ret[ExportLineType] = ExportLineTypeCall
ret[ExportLineTimestamp] = c.Time.Format(DateTimeFormat)
ret[ExportLineFrom] = c.From
ret[ExportLineTo] = c.To
ret[ExportLineUnits] = fmt.Sprintf("%.0f", c.Duration.Seconds())
ret[ExportLineAccount] = c.Account
ret[ExportLineCost] = fmt.Sprintf("%d", c.Cost)
ret[ExportLinePrice] = fmt.Sprintf("%d", c.Price)
ret[ExportLineDescription] = c.Description
return ret
}
func ExportText(t Text) []string {
ret := make([]string, ExportLineSize)
ret[ExportLineType] = ExportLineTypeText
ret[ExportLineTimestamp] = t.Time.Format(DateTimeFormat)
ret[ExportLineFrom] = t.From
ret[ExportLineTo] = t.To
ret[ExportLineUnits] = "1"
ret[ExportLineAccount] = t.Account
ret[ExportLineCost] = fmt.Sprintf("%d", t.Cost)
ret[ExportLinePrice] = fmt.Sprintf("%d", t.Price)
ret[ExportLineDescription] = "SMS"
return ret
}
func ExportData(d Data) []string {
ret := make([]string, ExportLineSize)
ret[ExportLineType] = ExportLineTypeData
ret[ExportLineTimestamp] = d.Time.Format(DateTimeFormat)
ret[ExportLineFrom] = ""
ret[ExportLineTo] = ""
ret[ExportLineUnits] = fmt.Sprintf("%d", d.Kilobytes)
ret[ExportLineAccount] = d.Account
ret[ExportLineCost] = fmt.Sprintf("%d", d.PricedLine.Cost)
ret[ExportLinePrice] = fmt.Sprintf("%d", d.PricedLine.Price)
ret[ExportLineDescription] = "Data"
return ret
}