diff --git a/broadcast/broadcast.go b/broadcast/broadcast.go new file mode 100644 index 0000000..d82ff3a --- /dev/null +++ b/broadcast/broadcast.go @@ -0,0 +1,62 @@ +package broadcast + +import ( + "context" + "encoding/json" + "fmt" + "log/slog" + "time" + + tb "github.com/go-telegram-bot-api/telegram-bot-api/v5" + "github.com/maximotejeda/us_dop_bot/db" + message "github.com/maximotejeda/us_dop_bot/edb" + "github.com/maximotejeda/us_dop_bot/helpers" +) + +func SendList(ctx context.Context, userDB *db.DB, log *slog.Logger, data []byte) []tb.MessageConfig { + user := db.NewUser(userDB, log) + // convert data to map + m := message.Message{} + listMsg := []tb.MessageConfig{} + err := json.Unmarshal(data, &m) + if err != nil { + log.Error("unmarshaling data", "error", err) + } + if m.Message == "change registered" { + + userList, err := user.GetAll(m.Data.After.Name) + if err != nil { + log.Error("querying DB data", "error", err) + return nil + } + cancelBTN := map[string]string{} + cancelBTN["Eliminar ❌"] = "cancelar=true" + keyboard := helpers.CreateKeyboard(cancelBTN) + log.Info("printing change", "user list", userList, "name", m.Data.After.Name) + compraCHG := comparer(m.Data.Before.Compra, m.Data.After.Compra) + ventaCHG := comparer(m.Data.Before.Venta, m.Data.After.Venta) + text := fmt.Sprintf("Cambio Registrado:\n\nInstitucion: %s\n\t Compra: %.2f %s %.2f\n\t Venta: %.2f %s %.2f\n\n\t %s", m.Data.After.Name, m.Data.Before.Compra, compraCHG, m.Data.After.Compra, m.Data.Before.Venta, ventaCHG, m.Data.After.Venta, m.Data.After.Parsed.Format(time.DateTime)) + + for _, user := range userList { + if user.TguID != 0 { + msg := tb.NewMessage(int64(user.TguID), text) + msg.ReplyMarkup = keyboard + listMsg = append(listMsg, msg) + } else { + continue + } + } + } + return listMsg +} + +func comparer(before, after float64) string { + if before > after { + return "⬇️" + } else if before < after { + return "⬆️" + } else { + return "🟰" + } + +}