Added measurements, and devices statsh
Added stats endpoints
This commit is contained in:
@@ -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})
|
||||
}
|
||||
@@ -158,3 +158,124 @@ func GetDevicesByContract(c *gin.Context) {
|
||||
// Respond with the devices
|
||||
c.JSON(http.StatusOK, gin.H{"data": models.ConvertDeviceToResponse(devices)})
|
||||
}
|
||||
|
||||
func GetCompanyRelatedDeviceInfoCount(c *gin.Context) {
|
||||
// Get the Company ID from query parameters
|
||||
companyIDStr := c.DefaultQuery("company_id", "")
|
||||
if companyIDStr == "" {
|
||||
log.Printf("GetCompanyRelatedDeviceInfoCount Error: Company ID is required")
|
||||
c.JSON(http.StatusBadRequest, gin.H{"error": "Company ID is required"})
|
||||
return
|
||||
}
|
||||
|
||||
// Convert string to uint for CompanyID
|
||||
companyID, err := strconv.ParseUint(companyIDStr, 10, 32)
|
||||
if err != nil {
|
||||
log.Printf("GetCompanyRelatedDeviceInfoCount Error: Invalid Company ID: %v", err)
|
||||
c.JSON(http.StatusBadRequest, gin.H{"error": "Invalid Company ID"})
|
||||
return
|
||||
}
|
||||
|
||||
// Perform the counting
|
||||
count, err := device.CountDeviceInfoByCompany(uint(companyID))
|
||||
if err != nil {
|
||||
c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
|
||||
return
|
||||
}
|
||||
|
||||
// Respond with the count
|
||||
c.JSON(http.StatusOK, gin.H{"data": count})
|
||||
}
|
||||
|
||||
func GetCompanyRelatedDeviceInfoCountWithTempRange(c *gin.Context) {
|
||||
// Get the Company ID from query parameters
|
||||
companyIDStr := c.DefaultQuery("company_id", "")
|
||||
startTimeStr := c.DefaultQuery("start_time", "")
|
||||
endTimeStr := c.DefaultQuery("end_time", "")
|
||||
if companyIDStr == "" {
|
||||
log.Printf("GetCompanyRelatedDeviceInfoCount Error: Company ID is required")
|
||||
c.JSON(http.StatusBadRequest, gin.H{"error": "Company ID is required"})
|
||||
return
|
||||
}
|
||||
if startTimeStr == "" {
|
||||
log.Printf("GetCompanyRelatedDeviceInfoCount Error: startTime ID is required")
|
||||
c.JSON(http.StatusBadRequest, gin.H{"error": "Start time is required"})
|
||||
return
|
||||
}
|
||||
|
||||
if endTimeStr == "" {
|
||||
log.Printf("GetCompanyRelatedDeviceInfoCount Error: endTime is required")
|
||||
c.JSON(http.StatusBadRequest, gin.H{"error": "End time is required"})
|
||||
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)
|
||||
|
||||
// Convert string to uint for CompanyID
|
||||
companyID, err := strconv.ParseUint(companyIDStr, 10, 32)
|
||||
if err != nil {
|
||||
log.Printf("GetCompanyRelatedDeviceInfoCount Error: Invalid Company ID: %v", err)
|
||||
c.JSON(http.StatusBadRequest, gin.H{"error": "Invalid Company ID"})
|
||||
return
|
||||
}
|
||||
|
||||
|
||||
// Get the counts
|
||||
inRangeCount, outOfRangeCount, monthlyCount, err := device.CountDeviceBreachedAndNormalDevicesByCompany(uint(companyID), startTime, endTime)
|
||||
if err != nil {
|
||||
c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
|
||||
return
|
||||
}
|
||||
|
||||
data := models.NormalAndBreachedDevicesResponse{Breached: outOfRangeCount, Normal: inRangeCount, MonthlyCounts: monthlyCount}
|
||||
|
||||
// Respond with both counts
|
||||
c.JSON(http.StatusOK, gin.H{"data": data})
|
||||
}
|
||||
|
||||
|
||||
func GetContractsMatchingDeviceLocation(c *gin.Context) {
|
||||
startTimeStr := c.DefaultQuery("start_time", "")
|
||||
endTimeStr := c.DefaultQuery("end_time", "")
|
||||
companyIDStr := c.DefaultQuery("company_id", "")
|
||||
|
||||
if companyIDStr == "" {
|
||||
log.Printf("GetCompanyRelatedDeviceInfoCount Error: Company ID is required")
|
||||
c.JSON(http.StatusBadRequest, gin.H{"error": "Company ID is required"})
|
||||
return
|
||||
}
|
||||
|
||||
// Convert string to uint for CompanyID
|
||||
companyID, err := strconv.ParseUint(companyIDStr, 10, 32)
|
||||
if err != nil {
|
||||
log.Printf("GetCompanyRelatedDeviceInfoCount Error: Invalid Company ID: %v", err)
|
||||
c.JSON(http.StatusBadRequest, gin.H{"error": "Invalid Company ID"})
|
||||
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)
|
||||
|
||||
matches, err := device.FetchMatchingContractsAndDeviceInfo(companyID, startTime, endTime)
|
||||
if err != nil {
|
||||
c.JSON(http.StatusInternalServerError, gin.H{
|
||||
"error": "Internal Server Error",
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
c.JSON(http.StatusOK, gin.H{
|
||||
"data": len(matches),
|
||||
})
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@ package controllers
|
||||
import (
|
||||
"net/http"
|
||||
"strconv"
|
||||
"time"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
"gitlab.com/pactual1/backend/database/invoice"
|
||||
@@ -104,3 +105,38 @@ func convertToResponseModel(invoices []models.Invoice) []models.ListInvoiceRespo
|
||||
}
|
||||
return listInvoiceResponses
|
||||
}
|
||||
|
||||
|
||||
func GetInvoiceCountByStatus(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)
|
||||
|
||||
activeCount, executedCount, monthly, err := invoice.CountInvoicesByMultipleStatuses(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.ActiveInvoiceResponse{Claimed: activeCount, Issued : executedCount, MonthlyInvoices: monthly}})
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user