package controller

import (
	"blog/config"
	"blog/models"
	"net/http"
	"strconv"
)

func Index(w http.ResponseWriter, r *http.Request) {

	indexTemplate := models.Template.Index

	if err := r.ParseForm(); err != nil {
		indexTemplate.WriteError(w, err)
	}

	page, err := strconv.Atoi(r.Form.Get("page"))
	if err != nil {
		page = 1
	}
	articles := models.ArticleList

	search := r.Form.Get("search")
	category := r.Form.Get("category")
	tag := r.Form.Get("tag")

	if search != "" || category != "" || tag != "" {
		articles = models.ArticleSearch(&articles, search, category, tag)
	}

	result := models.Pagination(&articles, page, config.Cfg.PageSize)

	indexTemplate.WriteData(w, models.BuildViewData("Blog", result))
}