Added measurements, and devices statsh

Added stats endpoints
This commit is contained in:
Nedim
2023-10-20 12:03:59 +02:00
parent 6892c56c1e
commit d40b225e4e
12 changed files with 1120 additions and 5 deletions

View File

@@ -303,3 +303,90 @@ func UpdateContract(c *gin.Context) {
// Respond with the contracts and the total count
c.JSON(http.StatusOK, gin.H{"data": models.ConvertContractToContractResponse(contractModel)})
}
func GetContractCountByStatus(c *gin.Context) {
companyID := c.DefaultQuery("company_id", "")
startTimeStr := c.DefaultQuery("start_time", "")
endTimeStr := c.DefaultQuery("end_time", "")
if companyID == "" || startTimeStr == "" || endTimeStr == "" {
c.JSON(http.StatusBadRequest, gin.H{
"error": "Missing required query parameters",
})
return
}
// Convert to uint and time.Time
companyIDUint, err := strconv.ParseUint(companyID, 10, 64)
if err != nil {
c.JSON(http.StatusBadRequest, gin.H{
"error": "Invalid companyID",
})
return
}
// Convert string to Unix timestamp
startUnix, err := strconv.ParseInt(startTimeStr, 10, 64)
if err != nil {
c.JSON(http.StatusBadRequest, gin.H{
"error": "Invalid start time",
})
return
}
endUnix, err := strconv.ParseInt(endTimeStr, 10, 64)
if err != nil {
c.JSON(http.StatusBadRequest, gin.H{
"error": "Invalid end time",
})
return
}
// Convert Unix timestamps to time.Time
startTime := time.Unix(startUnix, 0)
endTime := time.Unix(endUnix, 0)
activeCount, executedCount, _, monthly, err := contract.CountContractsByMultipleStatusesAndTotal(uint(companyIDUint), startTime, endTime)
if err != nil {
c.JSON(http.StatusInternalServerError, gin.H{
"error": "Internal Server Error",
})
return
}
c.JSON(http.StatusOK, gin.H{"data": models.ActiveContractsResponse{ActiveCount: activeCount, ExecutedCount : executedCount, MonthlyContracts: monthly}})
}
func GetTotalContractCount(c *gin.Context) {
companyID := c.DefaultQuery("company_id", "0")
startTimeStr := c.DefaultQuery("start_time", "")
endTimeStr := c.DefaultQuery("end_time", "")
// Convert to uint and time.Time
companyIDUint, err := strconv.ParseUint(companyID, 10, 64)
if err != nil {
c.JSON(http.StatusBadRequest, gin.H{
"error": "Invalid companyID",
})
return
}
// Convert string to Unix timestamp
startUnix, _ := strconv.ParseInt(startTimeStr, 10, 64)
endUnix, _ := strconv.ParseInt(endTimeStr, 10, 64)
// Convert Unix timestamps to time.Time
startTime := time.Unix(startUnix, 0)
endTime := time.Unix(endUnix, 0)
_, _, totalCount, _, err := contract.CountContractsByMultipleStatusesAndTotal(uint(companyIDUint), startTime, endTime)
if err != nil {
c.JSON(http.StatusInternalServerError, gin.H{
"error": "Internal Server Error",
})
return
}
c.JSON(http.StatusOK, gin.H{"data" : totalCount})
}