Добавлено: грамотная группировка пар и вывод расписания на день
This commit is contained in:
parent
3a3479b6e3
commit
97c66c49bc
|
@ -35,55 +35,87 @@ func (bot *Bot) GetSummary() {
|
||||||
groups_str := strings.Join(groups, ",")
|
groups_str := strings.Join(groups, ",")
|
||||||
|
|
||||||
bot.DB.
|
bot.DB.
|
||||||
Where("begin > ?", now.Format("2006-01-02 15:04:05")).
|
Where("end > ?", now.Format("2006-01-02 15:04:05")).
|
||||||
And("groupId in (?) or teacherId in (?)", groups_str, teachers_str).
|
And("groupId in (?) or teacherId in (?)", groups_str, teachers_str).
|
||||||
OrderBy("begin").
|
OrderBy("begin").
|
||||||
Limit(6).
|
Limit(16).
|
||||||
Find(&lessons)
|
Find(&lessons)
|
||||||
|
|
||||||
log.Println(lessons)
|
log.Println(lessons)
|
||||||
|
|
||||||
if len(lessons) != 0 {
|
if len(lessons) != 0 {
|
||||||
var firstPair, secondPair []database.Lesson
|
var firstPair, secondPair []database.Lesson
|
||||||
l_idx := 0
|
pairs := GroupPairs(lessons)
|
||||||
day := lessons[0].Begin
|
firstPair = pairs[0]
|
||||||
// Я хз, надо ли упарываться для случаев с более чем двумя подпарами
|
secondPair = pairs[1]
|
||||||
for lessons[l_idx].Begin == day && l_idx < len(lessons) {
|
|
||||||
firstPair = append(firstPair, lessons[l_idx])
|
|
||||||
l_idx++
|
|
||||||
}
|
|
||||||
if l_idx < len(lessons) {
|
|
||||||
day = lessons[l_idx].Begin
|
|
||||||
for lessons[l_idx].Begin == day && l_idx < len(lessons) {
|
|
||||||
secondPair = append(secondPair, lessons[l_idx])
|
|
||||||
l_idx++
|
|
||||||
}
|
|
||||||
}
|
|
||||||
log.Println(firstPair, secondPair)
|
log.Println(firstPair, secondPair)
|
||||||
|
|
||||||
var str string
|
var str string
|
||||||
if firstPair[0].Begin.Day() != time.Now().Day() {
|
if pairs[0][0].Begin.Day() != time.Now().Day() {
|
||||||
str = "❗️Сегодня пар нет\nБлижайшие занятия "
|
str = "❗️Сегодня пар нет\nБлижайшие занятия "
|
||||||
if time.Until(firstPair[0].Begin).Hours() < 48 {
|
if time.Until(firstPair[0].Begin).Hours() < 48 {
|
||||||
str += "завтра\n"
|
str += "завтра\n"
|
||||||
} else {
|
} else {
|
||||||
str += fmt.Sprintf("%s\n\n", firstPair[0].Begin.Format("02.01"))
|
str += fmt.Sprintf("%s\n\n", firstPair[0].Begin.Format("02.01"))
|
||||||
}
|
}
|
||||||
|
day, _ := bot.GetDayShedule(pairs)
|
||||||
|
str += day
|
||||||
|
} else {
|
||||||
|
str = "Сводка на сегодня\n\n"
|
||||||
|
day, _ := bot.GetDayShedule(pairs)
|
||||||
|
str += day
|
||||||
|
/*
|
||||||
|
firstPairStr, _ := PairToStr(firstPair, &bot.DB)
|
||||||
|
str += firstPairStr
|
||||||
|
|
||||||
|
if len(secondPair) != 0 && firstPair[0].Begin.Day() == secondPair[0].Begin.Day() {
|
||||||
|
secondPairStr, _ := PairToStr(secondPair, &bot.DB)
|
||||||
|
str += "\n--\n" + secondPairStr
|
||||||
|
}
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
firstPairStr, _ := PairToStr(firstPair, &bot.DB)
|
|
||||||
str += firstPairStr
|
|
||||||
|
|
||||||
if len(secondPair) != 0 && firstPair[0].Begin.Day() == secondPair[0].Begin.Day() {
|
|
||||||
secondPairStr, _ := PairToStr(secondPair, &bot.DB)
|
|
||||||
str += secondPairStr
|
|
||||||
}
|
|
||||||
msg := tgbotapi.NewMessage(bot.TG_user.TgId, str)
|
msg := tgbotapi.NewMessage(bot.TG_user.TgId, str)
|
||||||
bot.TG.Send(msg)
|
bot.TG.Send(msg)
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (bot *Bot) GetDayShedule(lessons [][]database.Lesson) (string, error) {
|
||||||
|
var str string
|
||||||
|
day := lessons[0][0].Begin.Day()
|
||||||
|
for _, pair := range lessons {
|
||||||
|
if pair[0].Begin.Day() == day {
|
||||||
|
line, err := PairToStr(pair, &bot.DB)
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
str += line
|
||||||
|
} else {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return str, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func GroupPairs(lessons []database.Lesson) [][]database.Lesson {
|
||||||
|
var shedule [][]database.Lesson
|
||||||
|
var pair []database.Lesson
|
||||||
|
|
||||||
|
l_idx := 0
|
||||||
|
|
||||||
|
for l_idx < len(lessons) {
|
||||||
|
day := lessons[l_idx].Begin
|
||||||
|
for l_idx < len(lessons) && lessons[l_idx].Begin == day {
|
||||||
|
pair = append(pair, lessons[l_idx])
|
||||||
|
l_idx++
|
||||||
|
}
|
||||||
|
shedule = append(shedule, pair)
|
||||||
|
pair = []database.Lesson{}
|
||||||
|
}
|
||||||
|
return shedule
|
||||||
|
}
|
||||||
|
|
||||||
func PairToStr(pair []database.Lesson, db *xorm.Engine) (string, error) {
|
func PairToStr(pair []database.Lesson, db *xorm.Engine) (string, error) {
|
||||||
var str string
|
var str string
|
||||||
beginStr := pair[0].Begin.Format("15:04")
|
beginStr := pair[0].Begin.Format("15:04")
|
||||||
|
@ -123,7 +155,11 @@ func PairToStr(pair []database.Lesson, db *xorm.Engine) (string, error) {
|
||||||
if sublesson.Comment != "" {
|
if sublesson.Comment != "" {
|
||||||
str += fmt.Sprintf("💬%s\n", sublesson.Comment)
|
str += fmt.Sprintf("💬%s\n", sublesson.Comment)
|
||||||
}
|
}
|
||||||
str += "--------------------------------\n"
|
if len(pair) > 1 {
|
||||||
|
str += "+\n"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
str += "--------------------------------\n"
|
||||||
return str, nil
|
return str, nil
|
||||||
}
|
}
|
||||||
|
|
Reference in New Issue