github.com/ngocphuongnb/tetua@v0.0.7-alpha/app/web/post/compose.go (about)

     1  package webpost
     2  
     3  import (
     4  	"net/http"
     5  
     6  	"github.com/ngocphuongnb/tetua/app/entities"
     7  	"github.com/ngocphuongnb/tetua/app/repositories"
     8  	"github.com/ngocphuongnb/tetua/app/server"
     9  	"github.com/ngocphuongnb/tetua/views"
    10  )
    11  
    12  func Compose(c server.Context) (err error) {
    13  	featuredImage := &entities.File{}
    14  	postData := entities.PostMutation{}
    15  	c.Meta().Title = "Create Post"
    16  
    17  	if post := c.Post(); post != nil {
    18  		c.Meta().Title = "Edit Post: " + post.Name
    19  		featuredImage = post.FeaturedImage
    20  		postData.Name = post.Name
    21  		postData.Draft = post.Draft
    22  		postData.Content = post.Content
    23  		postData.FeaturedImageID = post.FeaturedImageID
    24  		postTopics := post.Topics
    25  
    26  		for _, topic := range postTopics {
    27  			postData.TopicIDs = append(postData.TopicIDs, topic.ID)
    28  		}
    29  	}
    30  
    31  	return getComposeView(c, &postData, featuredImage)
    32  }
    33  
    34  func getComposeView(c server.Context, data *entities.PostMutation, featuredImage *entities.File) (err error) {
    35  	status := http.StatusOK
    36  	topics, err := repositories.Topic.All(c.Context())
    37  
    38  	if err != nil {
    39  		c.Logger().Error("Error getting topics", err)
    40  		c.Messages().AppendError("Error getting topics")
    41  	}
    42  
    43  	if c.Messages().HasError() {
    44  		status = http.StatusBadRequest
    45  	}
    46  
    47  	return c.Status(status).Render(views.PostCompose(entities.PrintTopicsTree(topics, []int{}), data, featuredImage))
    48  }