Ryan aed0f28f13
Migrate to svelte for frontend (#9)
* Svelte: WIP

* WIP

* WIP

* WIP

* WIP

* WIP

* Finished

* Remove redundant code

* Fix typo

* Re-add routes

* Form margin

* Mobile nicities

* Mobile changed

* Increase keepalvie

* Update Guild.svelte

* Update Whitelabel.svelte

* Whitelabel changes
2021-06-30 15:40:55 +01:00

62 lines
1.1 KiB
Go

package api
import (
"context"
"github.com/TicketsBot/GoPanel/database"
"github.com/TicketsBot/GoPanel/rpc/cache"
"github.com/gin-gonic/gin"
"github.com/rxdn/gdl/objects/user"
"golang.org/x/sync/errgroup"
)
func GetTickets(ctx *gin.Context) {
type WithUser struct {
TicketId int `json:"id"`
User *user.User `json:"user,omitempty"`
}
guildId := ctx.Keys["guildid"].(uint64)
tickets, err := database.Client.Tickets.GetGuildOpenTickets(guildId)
if err != nil {
ctx.AbortWithStatusJSON(500, gin.H{
"success": false,
"error": err.Error(),
})
return
}
data := make([]WithUser, len(tickets))
group, _ := errgroup.WithContext(context.Background())
for i, ticket := range tickets {
i := i
ticket := ticket
group.Go(func() error {
user, ok := cache.Instance.GetUser(ticket.UserId)
data[i] = WithUser{
TicketId: ticket.Id,
}
if ok {
data[i].User = &user
}
return nil
})
}
if err := group.Wait(); err != nil {
ctx.AbortWithStatusJSON(500, gin.H{
"success": false,
"error": err.Error(),
})
return
}
ctx.JSON(200, data)
}