66 lines
1.6 KiB
Go
66 lines
1.6 KiB
Go
package services
|
|
|
|
import (
|
|
"net/http"
|
|
"netina/database"
|
|
license_repository "netina/repositories/license"
|
|
store_repository "netina/repositories/store"
|
|
"strconv"
|
|
"time"
|
|
|
|
"github.com/labstack/echo/v4"
|
|
)
|
|
|
|
func ExpireDate(c echo.Context) error {
|
|
|
|
db := database.Db()
|
|
|
|
storeQuery := store_repository.StoreQueryRepository{DB: &db}
|
|
licenseQuery := license_repository.LicenseQueryRepository{DB: &db}
|
|
|
|
id, err := strconv.Atoi(c.Param("id"))
|
|
if err != nil {
|
|
return c.JSON(http.StatusBadRequest, map[string]string{"error": "Invalid store ID"})
|
|
}
|
|
|
|
store , err := storeQuery.GetStore(uint(id))
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
license , err := licenseQuery.GetLicense(store.License_id)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
|
|
|
|
if time.Now().After(license.ExpireDate) {
|
|
return c.JSON(http.StatusOK , map[string]string{"error": "license expired"})
|
|
} else {
|
|
remainingTime := time.Until(license.ExpireDate)
|
|
secondsRemaining := remainingTime.Seconds()
|
|
minutesRemaining := remainingTime.Minutes()
|
|
hoursRemaining := remainingTime.Hours()
|
|
daysRemaining := hoursRemaining/24
|
|
|
|
secondsRemainingStr := strconv.FormatFloat(secondsRemaining, 'f', -1, 64)
|
|
minutesRemainingStr := strconv.FormatFloat(minutesRemaining, 'f', -1, 64)
|
|
hoursRemainingStr := strconv.FormatFloat(hoursRemaining, 'f', -1, 64)
|
|
daysRemainingStr := strconv.FormatFloat(daysRemaining, 'f', -1, 64)
|
|
|
|
timeMap := map[string]string{
|
|
"secondsRemaining": secondsRemainingStr,
|
|
"minutesRemaining": minutesRemainingStr,
|
|
"hoursRemaining": hoursRemainingStr,
|
|
"daysRemaining": daysRemainingStr,
|
|
}
|
|
|
|
return c.JSON(http.StatusOK , timeMap )
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|