From 2e1b62e33a2464168c97c59c0f461197d6ccf002 Mon Sep 17 00:00:00 2001 From: "aditya.siregar" Date: Fri, 2 Aug 2024 01:21:21 +0700 Subject: [PATCH] Add Expiring Soon --- internal/entity/license.go | 1 + internal/handlers/response/license.go | 2 ++ internal/repository/license/license.go | 9 +++++---- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/internal/entity/license.go b/internal/entity/license.go index 497d35c..5a1aa2e 100644 --- a/internal/entity/license.go +++ b/internal/entity/license.go @@ -34,6 +34,7 @@ type LicenseGetAll struct { PartnerName string `gorm:"type:varchar(255);not null"` LicenseStatus string `gorm:"type:string(255);not null"` CreatedByName string `gorm:"type:string(255);not null"` + DaysToExpire int64 `gorm:"type:bigint"` } func (License) TableName() string { diff --git a/internal/handlers/response/license.go b/internal/handlers/response/license.go index 610457f..c0c1473 100644 --- a/internal/handlers/response/license.go +++ b/internal/handlers/response/license.go @@ -16,6 +16,7 @@ type License struct { UpdatedBy int64 `json:"updated_by"` PartnerName string `json:"partner_name"` Status string `json:"status"` + DaysToExpire int64 `json:"days_to_expire"` } type LicenseList struct { @@ -67,4 +68,5 @@ func (r *License) FromEntityGetAll(e *entity.LicenseGetAll) { r.UpdatedBy = e.UpdatedBy r.PartnerName = e.PartnerName r.Status = e.LicenseStatus + r.DaysToExpire = e.DaysToExpire } diff --git a/internal/repository/license/license.go b/internal/repository/license/license.go index e2623da..ebaec21 100644 --- a/internal/repository/license/license.go +++ b/internal/repository/license/license.go @@ -58,10 +58,11 @@ func (r *LicenseRepository) GetAll(ctx context.Context, limit, offset int, statu Table("licenses"). Select(`licenses.*, partners.name as partner_name, CASE - WHEN licenses.end_date < CURRENT_DATE THEN 'Expired' - WHEN licenses.end_date < CURRENT_DATE + INTERVAL '30 days' THEN '< 30 days' - ELSE 'Active' + WHEN licenses.end_date < CURRENT_DATE THEN 'EXPIRED' + WHEN licenses.end_date < CURRENT_DATE + INTERVAL '30 days' THEN 'EXPIRING_SOON' + ELSE 'ACTIVE' END as license_status, + (GREATEST(licenses.end_date - CURRENT_DATE, 0)) as days_to_expire, users.name as created_by_name`). Joins("LEFT JOIN partners ON licenses.partner_id = partners.id"). Joins("LEFT JOIN users ON licenses.created_by = users.id"). @@ -87,7 +88,7 @@ func (r *LicenseRepository) GetAll(ctx context.Context, limit, offset int, statu func (r *LicenseRepository) FindByPartnerIDMaxEndDate(ctx context.Context, partnerID *int64) (*entity.LicenseDB, error) { var licenseDB entity.LicenseDB - if err := r.db.WithContext(ctx). + if err := r.db.Debug().WithContext(ctx). Where("partner_id = ?", partnerID). Order("end_date DESC"). First(&licenseDB).Error; err != nil {