101 lines
2.5 KiB
Go
101 lines
2.5 KiB
Go
package controllers
|
|
|
|
import (
|
|
"strconv"
|
|
"encoding/json"
|
|
"github.com/gorilla/mux"
|
|
"ExpiryDatesManager/server/model"
|
|
"ExpiryDatesManager/server/utils"
|
|
"net/http"
|
|
)
|
|
|
|
type CreateReport struct {
|
|
Report model.Report
|
|
ReportPositions []model.ReportPosition
|
|
}
|
|
|
|
var GetReportsForCompany = func(w http.ResponseWriter, r *http.Request) {
|
|
|
|
vars := mux.Vars(r)
|
|
companyID, err := strconv.ParseUint(vars["companyId"], 10, 0)
|
|
if err != nil {
|
|
utils.Respond(w, utils.Message(false, "Error while decoding request body"))
|
|
return
|
|
}
|
|
|
|
data := model.GetReportsForCompany(uint(companyID))
|
|
resp := utils.Message(true, "success")
|
|
resp["data"] = data
|
|
utils.Respond(w, resp)
|
|
}
|
|
|
|
var GetReport = func(w http.ResponseWriter, r *http.Request) {
|
|
vars := mux.Vars(r)
|
|
reportID, err := strconv.ParseUint(vars["reportId"], 10, 0)
|
|
if err != nil {
|
|
utils.Respond(w, utils.Message(false, "Error while decoding request body"))
|
|
return
|
|
}
|
|
|
|
report := model.GetReport(uint(reportID))
|
|
positions := model.GetReportPositionsForReport(uint(reportID))
|
|
|
|
resp := utils.Message(true, "success")
|
|
resp["data"] = positions
|
|
resp["report"] = report
|
|
|
|
utils.Respond(w, resp)
|
|
}
|
|
|
|
var GetReportWithPositions = func(w http.ResponseWriter, r *http.Request) {
|
|
|
|
vars := mux.Vars(r)
|
|
reportID, err := strconv.ParseUint(vars["reportId"], 10, 0)
|
|
if err != nil {
|
|
utils.Respond(w, utils.Message(false, "Error while decoding request body"))
|
|
return
|
|
}
|
|
|
|
data := model.GetReportPositionsForReport(uint(reportID))
|
|
resp := utils.Message(true, "success")
|
|
resp["data"] = data
|
|
utils.Respond(w, resp)
|
|
}
|
|
|
|
var GetReports = func(w http.ResponseWriter, r *http.Request) {
|
|
|
|
data := model.GetReports()
|
|
resp := utils.Message(true, "success")
|
|
resp["data"] = data
|
|
utils.Respond(w, resp)
|
|
}
|
|
|
|
var CreateOrUpdateReport = func(w http.ResponseWriter, r *http.Request) {
|
|
|
|
createReport := &CreateReport{}
|
|
|
|
err := json.NewDecoder(r.Body).Decode(createReport)
|
|
if err != nil {
|
|
utils.Respond(w, utils.Message(false, "Error while decoding request body"))
|
|
return
|
|
}
|
|
|
|
data := createReport.Report.CreateOrUpdate()
|
|
if data.ID == 0 {
|
|
utils.Respond(w, utils.Message(false, "Database error with creating report"))
|
|
return
|
|
}
|
|
|
|
for _, element := range createReport.ReportPositions {
|
|
model.MarkAsUsed(element.ProductExpiryPositionID)
|
|
element.ReportID = data.ID
|
|
position := element.CreateOrUpdate()
|
|
if position.ID == 0 {
|
|
utils.Respond(w, utils.Message(false, "Database error with creating report position"))
|
|
return
|
|
}
|
|
}
|
|
|
|
resp := utils.Message(true, "success")
|
|
utils.Respond(w, resp)
|
|
} |