Update License

This commit is contained in:
aditya.siregar 2024-08-02 01:28:54 +07:00
parent 2e1b62e33a
commit d50cefbc7f

View File

@ -53,7 +53,7 @@ func (r *LicenseRepository) GetAll(ctx context.Context, limit, offset int, statu
var licenses []*entity.LicenseGetAll var licenses []*entity.LicenseGetAll
var total int64 var total int64
// Define the main query with status calculation // Define the main query with status calculation and days to expire
subQuery := r.db.WithContext(ctx). subQuery := r.db.WithContext(ctx).
Table("licenses"). Table("licenses").
Select(`licenses.*, partners.name as partner_name, Select(`licenses.*, partners.name as partner_name,
@ -65,21 +65,32 @@ func (r *LicenseRepository) GetAll(ctx context.Context, limit, offset int, statu
(GREATEST(licenses.end_date - CURRENT_DATE, 0)) as days_to_expire, (GREATEST(licenses.end_date - CURRENT_DATE, 0)) as days_to_expire,
users.name as created_by_name`). users.name as created_by_name`).
Joins("LEFT JOIN partners ON licenses.partner_id = partners.id"). Joins("LEFT JOIN partners ON licenses.partner_id = partners.id").
Joins("LEFT JOIN users ON licenses.created_by = users.id"). Joins("LEFT JOIN users ON licenses.created_by = users.id")
Limit(limit).
Offset(offset)
// Wrap the main query as a subquery to filter by status // Wrap the main query as a subquery to filter by status and apply pagination
query := r.db.Table("(?) as sub", subQuery) query := r.db.Table("(?) as sub", subQuery)
if statusFilter != "" { if statusFilter != "" {
query = query.Where("license_status = ?", statusFilter) query = query.Where("license_status = ?", statusFilter)
} }
if limit > 0 {
query = query.Limit(limit)
}
if offset > 0 {
query = query.Offset(offset)
}
if err := query.Find(&licenses).Error; err != nil { if err := query.Find(&licenses).Error; err != nil {
return nil, 0, err return nil, 0, err
} }
if err := r.db.Table("licenses").Count(&total).Error; err != nil { // Get the total count of records matching the filter
countQuery := r.db.Table("(?) as sub", subQuery)
if statusFilter != "" {
countQuery = countQuery.Where("license_status = ?", statusFilter)
}
if err := countQuery.Count(&total).Error; err != nil {
return nil, 0, err return nil, 0, err
} }