diff --git a/main.go b/main.go index 625bc43..568e862 100644 --- a/main.go +++ b/main.go @@ -128,6 +128,7 @@ func main() { skillsInfoChan := make(chan string) marketInfoChan := make(chan string) industryInfoChan := make(chan string) + transactionsInfoChan := make(chan string) go func() { charInfoChan <- printCharacterInformation(swaggerclient, m) @@ -159,6 +160,11 @@ func main() { close(skillsInfoChan) }() + go func() { + transactionsInfoChan <- printCharacterTransactions(swaggerclient, m) + close(transactionsInfoChan) + }() + for msg := range charInfoChan { fmt.Print(msg) } @@ -187,6 +193,11 @@ func main() { for msg := range industryInfoChan { fmt.Print(msg) } + + fmt.Printf("\n\nTransactions\n") + for msg := range transactionsInfoChan { + fmt.Print(msg) + } } func readConfigurationFile() (*InternalUtils.HTTPConfiguration, error) { @@ -317,6 +328,60 @@ func printCharacterSkillQueue(swaggerclient *ESI.App, m *Character) string { return content } +func printCharacterTransactions(swaggerclient *ESI.App, m *Character) string { + callParam := ESIWallet.NewGetCharactersCharacterIDWalletTransactionsParams() + callParam.WithCharacterID(m.CharacterID) + + esiresponse, esierr := swaggerclient.Wallet.GetCharactersCharacterIDWalletTransactions(callParam, nil) + if esierr != nil { + fmt.Println("Error while getting the wallet information") + log.Fatalf("Got error on GetCharactersCharacterIDWalletTransactions: %T %s", esierr, esierr) + } + + transactions := esiresponse.Payload + + ac := accounting.Accounting{Symbol: "", Precision: 2, Thousand: "'"} + + var content string + + itemIds := make([]int32, 0) + + for _, transaction := range transactions { + itemIds = append(itemIds, *transaction.TypeID) + itemIds = append(itemIds, *transaction.ClientID) + } + + universeNames := getUniverseNames(swaggerclient, &itemIds) + + for _, transaction := range transactions[:20] { + + locationName, locationErr := getStructureStationInfo(swaggerclient, *transaction.LocationID) + if locationErr != nil { + fmt.Println("Error while getting the location information") + log.Fatalf("Got error on getStructureStationInfo: %T %s", locationErr, locationErr) + } + + status := fmt.Sprint(aurora.Red("✘").Bold()) + if *transaction.IsBuy { + status = fmt.Sprint(aurora.Green("✔").Bold()) + } + + content = content + fmt.Sprintf(" %s %s ISK% 15s,% 7d %s, %s, %s", + status, + time.Time(*transaction.Date).Format(defaultDateFormat), + ac.FormatMoney(*transaction.UnitPrice*float32(*transaction.Quantity)), + *transaction.Quantity, + universeNames[*transaction.TypeID], + locationName.Name, + universeNames[*transaction.ClientID], + ) + + content = content + "\n" + } + + return content +} + func formatDuration(duration time.Duration, daysLength int32) string { days := int32(duration.Hours()) / 24 hours := int32(duration.Minutes()) / 60 % 24 @@ -332,7 +397,7 @@ func printCharacterInformation(swaggerclient *ESI.App, m *Character) string { esiresponse, esierr := swaggerclient.Wallet.GetCharactersCharacterIDWallet(callParam, nil) if esierr != nil { fmt.Println("Error while getting the wallet information") - log.Fatalf("Got error on GetCharactersCharacterIDWallets: %T %s", esierr, esierr) + log.Fatalf("Got error on GetCharactersCharacterIDWallet: %T %s", esierr, esierr) } wallet := esiresponse.Payload