package controllers

import (
	"strconv"
	"github.com/gorilla/mux"
	"encoding/json"
	"ExpiryDatesManager/server/model"
	"ExpiryDatesManager/server/utils"
	"net/http"
)

var GetCompanies = func(w http.ResponseWriter, r *http.Request) {

	data := model.GetCompanies()
	resp := utils.Message(true, "success")
	resp["data"] = data
	utils.Respond(w, resp)
}

var DeleteCompany = func(w http.ResponseWriter, r *http.Request) {

	vars := mux.Vars(r)	
	companyID, err := strconv.ParseUint(vars["id"], 10, 0)
	if err != nil {
		utils.Respond(w, utils.Message(false, "Error while parsing request"))
		return
	}
	err = model.DeleteCompany(uint(companyID))
	if err != nil {
		utils.Respond(w, utils.Message(false, "Nie udało się usunąć dostawcy"))
		return
	}
	resp := utils.Message(true, "success")
	utils.Respond(w, resp)
}

var CreateOrUpdateCompany = func(w http.ResponseWriter, r *http.Request) {

	company := &model.Company{}

	err := json.NewDecoder(r.Body).Decode(company)
	if err != nil {
		utils.Respond(w, utils.Message(false, "Error while decoding request body"))
		return
	}

	data := company.CreateOrUpdate()
	if data.ID  == 0 {
		utils.Respond(w, utils.Message(false, "Database error"))
		return
	}

	resp := utils.Message(true, "success")
	resp["data"] = data
	utils.Respond(w, resp)
}