GoGronkh/gserver/admin.go

324 lines
11 KiB
Go

package main
import (
//"html/template"
"strings"
"strconv"
"time"
. "git.1750studios.com/gronkhDE/gogronkh/gserver/utlis"
"git.1750studios.com/gronkhDE/gogronkh/database"
"git.1750studios.com/gronkhDE/gogronkh/image"
"github.com/gin-gonic/gin"
)
func GetAdminIndex(c *gin.Context) {
var LPs int
var LTs int
var EPs int
var ATs int
database.Db.Model(database.LetsPlay{}).Count(&LPs)
database.Db.Model(database.LetsTest{}).Count(&LTs)
database.Db.Model(database.Episode{}).Count(&EPs)
database.Db.Model(database.Author{}).Count(&ATs)
c.HTML(200, "admin_index.html", gin.H{
"title": "Admin Index",
"LPs": LPs,
"LTs": LTs,
"EPs": EPs,
"ATs": ATs,
"page": "admin_index",
})
}
func GetAdminLetsPlay(c *gin.Context) {
if id, ok := CleanParam(c.Param("id")); ok {
//LP in URL
var LP database.LetsPlay
if database.Db.Where(id).First(&LP).Error == nil {
//LP found
c.HTML(200, "admin_lp.html", gin.H{
"title": "Admin Let's Plays",
"LP": LP,
"page": "admin_lp",
})
} else if database.Db.Where("slug=?", id).First(&LP).Error == nil {
//LP found
c.HTML(200, "admin_lp.html", gin.H{
"title": "Admin Let's Plays",
"LP": LP,
"page": "admin_lp",
})
} else {
//LP not found
c.AbortWithStatus(404)
}
} else {
var LPs []database.LetsPlay
database.Db.Order("id asc").Find(&LPs)
c.HTML(200, "admin_lps.html", gin.H{
"title": "Admin Let's Plays",
"LPs": LPs,
"page": "admin_lps",
})
}
}
func PostAdminLetsPlay(c *gin.Context) {
if id, ok := CleanParam(c.Param("id")); ok {
var LP database.LetsPlay
database.Db.Where(id).First(&LP)
if id, err := strconv.ParseUint(c.PostForm("id"), 10, 0); err == nil {
LP.ID = uint(id)
}
if id, err := strconv.ParseUint(c.PostForm("authorid"), 10, 0); err == nil {
LP.AuthorID = uint(id)
}
if mergeid, err := strconv.ParseUint(c.PostForm("mergeid"), 10, 0); err == nil {
LP.MergeID.Int64 = int64(mergeid)
}
if mergeseason, err := strconv.ParseUint(c.PostForm("mergeseason"), 10, 0); err == nil {
LP.MergeSeason.Int64 = int64(mergeseason)
}
LP.Slug.String = c.PostForm("slug")
LP.Name.String = c.PostForm("name")
if c.PostForm("posters") == "" && !strings.HasPrefix(c.PostForm("posterb"), "/") {
LP.PosterS.String, LP.PosterB.String, _ = image.ResizeCover(c.PostForm("posterb"))
} else {
LP.PosterS.String = c.PostForm("posters")
LP.PosterB.String = c.PostForm("posterb")
}
if t, err := time.Parse("2006-01-02 15:04:05 -0700 MST", c.PostForm("aired")); err == nil {
LP.Aired = t
}
database.Db.Save(&LP);
c.Redirect(301, "/admin/lets-play#" + strconv.FormatUint(uint64(LP.ID), 10))
} else {
c.Redirect(301, "/admin/lets-play")
}
}
func GetAdminLetsTest(c *gin.Context) {
if id, ok := CleanParam(c.Param("id")); ok {
//LT in URL
var LT database.LetsTest
if database.Db.Where(id).First(&LT).Error == nil {
//LT found
c.HTML(200, "admin_lt.html", gin.H{
"title": "Admin Let's Tests",
"LT": LT,
"page": "admin_lt",
})
} else if database.Db.Where("slug=?", id).First(&LT).Error == nil {
//LT found
c.HTML(200, "admin_lt.html", gin.H{
"title": "Admin Let's Tests",
"LT": LT,
"page": "admin_lt",
})
} else {
//LT not found
c.AbortWithStatus(404)
}
} else {
var LTs []database.LetsTest
database.Db.Order("id asc").Find(&LTs)
c.HTML(200, "admin_lts.html", gin.H{
"title": "Admin Let's Tests",
"LTs": LTs,
"page": "admin_lts",
})
}
}
func PostAdminLetsTest(c *gin.Context) {
if id, ok := CleanParam(c.Param("id")); ok {
var LT database.LetsTest
database.Db.Where(id).First(&LT)
if id, err := strconv.ParseUint(c.PostForm("id"), 10, 0); err == nil {
LT.ID = uint(id)
}
if id, err := strconv.ParseUint(c.PostForm("authorid"), 10, 0); err == nil {
LT.AuthorID = uint(id)
}
LT.Slug.String = c.PostForm("slug")
LT.Name.String = c.PostForm("name")
if c.PostForm("posters") == "" && !strings.HasPrefix(c.PostForm("posterb"), "/") {
LT.PosterS.String, LT.PosterB.String, _ = image.ResizeCover(c.PostForm("posterb"))
} else {
LT.PosterS.String = c.PostForm("posters")
LT.PosterB.String = c.PostForm("posterb")
}
if c.PostForm("thumbs") == "" && !strings.HasPrefix(c.PostForm("thumbb"), "/") {
LT.ThumbS.String, LT.ThumbB.String, _ = image.ResizeThumb(c.PostForm("thumbb"))
} else {
LT.ThumbS.String = c.PostForm("thumbs")
LT.ThumbB.String = c.PostForm("thumbb")
}
LT.Youtube.String = c.PostForm("youtube")
LT.Descr.String = c.PostForm("descr")
if t, err := time.Parse("2006-01-02 15:04:05 -0700 MST", c.PostForm("aired")); err == nil {
LT.Aired = t
}
if ra, err := strconv.ParseFloat(c.PostForm("authorid"), 64); err == nil {
LT.Rating.Float64 = ra
}
if vo, err := strconv.ParseInt(c.PostForm("votes"), 10, 64); err == nil {
LT.Votes.Int64 = vo
}
if du, err := strconv.ParseInt(c.PostForm("duration"), 10, 64); err == nil {
LT.Duration.Int64 = du
}
database.Db.Save(&LT);
c.Redirect(301, "/admin/lets-test#" + strconv.FormatUint(uint64(LT.ID), 10))
} else {
c.Redirect(301, "/admin/lets-test")
}
}
func GetAdminEpisode(c *gin.Context) {
if id, ok := CleanParam(c.Param("id")); ok {
//EP in URL
var EP database.Episode
if database.Db.Where(id).First(&EP).Error == nil {
//EP found
c.HTML(200, "admin_ep.html", gin.H{
"title": "Admin Episoden",
"EP": EP,
"page": "admin_ep",
})
} else if database.Db.Where("slug=?", id).First(&EP).Error == nil {
//EP found
c.HTML(200, "admin_ep.html", gin.H{
"title": "Admin Episoden",
"EP": EP,
"page": "admin_ep",
})
} else {
//EP not found
c.AbortWithStatus(404)
}
} else {
var EPs []database.Episode
database.Db.Order("id asc").Find(&EPs)
c.HTML(200, "admin_eps.html", gin.H{
"title": "Admin Episoden",
"EPs": EPs,
"page": "admin_eps",
})
}
}
func PostAdminEpisode(c *gin.Context) {
if id, ok := CleanParam(c.Param("id")); ok {
var EP database.Episode
database.Db.Where(id).First(&EP)
if id, err := strconv.ParseUint(c.PostForm("id"), 10, 0); err == nil {
EP.ID = uint(id)
}
if id, err := strconv.ParseUint(c.PostForm("authorid"), 10, 0); err == nil {
EP.AuthorID = uint(id)
}
if id, err := strconv.ParseUint(c.PostForm("letsplayid"), 10, 0); err == nil {
EP.LetsPlayID = uint(id)
}
EP.Slug.String = c.PostForm("slug")
EP.Name.String = c.PostForm("name")
if se, err := strconv.ParseInt(c.PostForm("season"), 10, 64); err == nil {
EP.Season.Int64 = se
}
if ep, err := strconv.ParseInt(c.PostForm("episode"), 10, 64); err == nil {
EP.Episode.Int64 = ep
}
if c.PostForm("thumbs") == "" && !strings.HasPrefix(c.PostForm("thumbb"), "/") {
EP.ThumbS.String, EP.ThumbB.String, _ = image.ResizeThumb(c.PostForm("thumbb"))
} else {
EP.ThumbS.String = c.PostForm("thumbs")
EP.ThumbB.String = c.PostForm("thumbb")
}
EP.Youtube.String = c.PostForm("youtube")
EP.Descr.String = c.PostForm("descr")
if t, err := time.Parse("2006-01-02 15:04:05 -0700 MST", c.PostForm("aired")); err == nil {
EP.Aired = t
}
if ra, err := strconv.ParseFloat(c.PostForm("authorid"), 64); err == nil {
EP.Rating.Float64 = ra
}
if vo, err := strconv.ParseInt(c.PostForm("votes"), 10, 64); err == nil {
EP.Votes.Int64 = vo
}
if du, err := strconv.ParseInt(c.PostForm("duration"), 10, 64); err == nil {
EP.Duration.Int64 = du
}
database.Db.Save(&EP);
c.Redirect(301, "/admin/episode#" + strconv.FormatUint(uint64(EP.ID), 10))
} else {
c.Redirect(301, "/admin/episode")
}
}
func GetAdminAuthor(c *gin.Context) {
if id, ok := CleanParam(c.Param("id")); ok {
//AT in URL
var AT database.Author
if database.Db.Where(id).First(&AT).Error == nil {
//AT found
c.HTML(200, "admin_at.html", gin.H{
"title": "Admin Sprecher",
"AT": AT,
"page": "admin_at",
})
} else if database.Db.Where("slug=?", id).First(&AT).Error == nil {
//AT found
c.HTML(200, "admin_at.html", gin.H{
"title": "Admin Sprecher",
"AT": AT,
"page": "admin_at",
})
} else {
//AT not found
c.AbortWithStatus(404)
}
} else {
var ATs []database.Author
database.Db.Order("id asc").Find(&ATs)
c.HTML(200, "admin_ats.html", gin.H{
"title": "Admin Sprecher",
"ATs": ATs,
"page": "admin_ats",
})
}
}
func PostAdminAuthor(c *gin.Context) {
if id, ok := CleanParam(c.Param("id")); ok {
var AT database.Author
database.Db.Where(id).First(&AT)
if id, err := strconv.ParseUint(c.PostForm("id"), 10, 0); err == nil {
AT.ID = uint(id)
}
AT.Slug.String = c.PostForm("slug")
AT.Name.String = c.PostForm("name")
AT.Youtube.String = c.PostForm("youtube")
if c.PostForm("avatars") == "" && !strings.HasPrefix(c.PostForm("avatarb"), "/") {
AT.AvatarS.String, AT.AvatarB.String, _ = image.ResizeAvatar(c.PostForm("avatarb"))
} else {
AT.AvatarS.String = c.PostForm("avatars")
AT.AvatarB.String = c.PostForm("avatarb")
}
if c.PostForm("fanarts") == "" && !strings.HasPrefix(c.PostForm("fanartb"), "/") {
AT.FanArtS.String, AT.FanArtB.String, _ = image.ResizeFanArt(c.PostForm("fanartb"))
} else {
AT.FanArtS.String = c.PostForm("fanarts")
AT.FanArtB.String = c.PostForm("fanartb")
}
database.Db.Save(&AT);
c.Redirect(301, "/admin/sprecher#" + strconv.FormatUint(uint64(AT.ID), 10))
} else {
c.Redirect(301, "/admin/sprecher")
}
}