From 5f9a2309c15b53e8e378fb126f3342da78b9d2de Mon Sep 17 00:00:00 2001 From: nima Date: Sat, 13 Jul 2024 16:46:46 +0330 Subject: [PATCH] expire rout added --- services/expire.go | 65 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 services/expire.go diff --git a/services/expire.go b/services/expire.go new file mode 100644 index 0000000..ad5fc99 --- /dev/null +++ b/services/expire.go @@ -0,0 +1,65 @@ +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 ) + + } + +} + +