foodoles/vote/vote.go

87 lines
1.6 KiB
Go
Raw Normal View History

2019-11-21 16:43:02 +01:00
package vote
2019-11-26 09:07:19 +01:00
import (
2019-12-13 16:05:19 +01:00
"forge.cadoles.com/foodoles/bdd"
2019-11-26 09:07:19 +01:00
"log"
"time"
)
2019-11-21 16:43:02 +01:00
// VotesOfTheDay est le résultat des votes du jour
type VotesOfTheDay struct {
Date string
Votes []Vote
}
// Vote est un vote
type Vote struct {
Food string
Voices int
}
// ForFood vote pour un choix du jour
2019-11-26 09:07:19 +01:00
func ForFood(Food string) {
db, err := bdd.OpenDB()
2019-12-13 16:05:19 +01:00
defer bdd.CloseDB(db)
2019-11-26 09:07:19 +01:00
if err != nil {
log.Printf("\nOpenDB error: %v", err)
return
}
bdd.AddVote(db, Food, time.Now().AddDate(0, 0, 0))
2019-12-13 16:05:19 +01:00
2019-11-21 16:43:02 +01:00
return
}
2019-11-26 09:07:19 +01:00
// GetVotesOfTheDay récupère les votes du jour
func GetVotesOfTheDay() VotesOfTheDay {
vo := VotesOfTheDay{time.Now().Format("02/01/2006"), nil}
2019-11-27 10:06:24 +01:00
duplicate := FoodVotesList()
2019-11-26 09:07:19 +01:00
dupmap := dupcount(duplicate)
2019-11-27 12:09:15 +01:00
//fmt.Println(dupmap)
2019-11-26 09:07:19 +01:00
for k, v := range dupmap {
vv := Vote{k, v}
vo.Votes = append(vo.Votes, vv)
}
2019-11-27 12:09:15 +01:00
//fmt.Println(vo)
2019-11-26 09:07:19 +01:00
return vo
}
2019-11-27 10:06:24 +01:00
// FoodVotesList return a list of votes for food
func FoodVotesList() []Vote {
2019-11-26 09:07:19 +01:00
f := []Vote{}
db, err := bdd.OpenDB()
if err != nil {
log.Fatal(err)
}
2019-12-13 16:05:19 +01:00
defer bdd.CloseDB(db)
2019-11-27 11:35:56 +01:00
lvotes, _ := bdd.GetVotesOfTheDay(db)
2019-11-26 09:07:19 +01:00
for _, fo := range lvotes {
vf := Vote{fo, 1}
f = append(f, vf)
}
return f
}
func dupcount(list []Vote) map[string]int {
duplicatefrequency := make(map[string]int)
for _, item := range list {
// check if the item/element exist in the duplicate_frequency map
_, exist := duplicatefrequency[item.Food]
if exist {
duplicatefrequency[item.Food]++ // increase counter by 1 if already in the map
} else {
duplicatefrequency[item.Food] = 1 // else start counting from 1
}
}
return duplicatefrequency
}