UserStats.java

package com.ctrlbuy.webshop.dto;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@NoArgsConstructor
@AllArgsConstructor
public class UserStats {

    private long totalUsers;
    private long activeUsers;
    private long inactiveUsers;
    private long adminUsers;
    private long regularUsers;
    private long verifiedUsers;
    private long unverifiedUsers;
    private long recentRegistrations; // Last 30 days

    /**
     * Beräkna aktivitetsgrad i procent
     */
    public double getActivityPercentage() {
        if (totalUsers == 0) {
            return 0.0;
        }
        return (double) activeUsers / totalUsers * 100.0;
    }

    /**
     * Beräkna verifieringsgrad i procent
     */
    public double getVerificationPercentage() {
        if (totalUsers == 0) {
            return 0.0;
        }
        return (double) verifiedUsers / totalUsers * 100.0;
    }

    /**
     * Beräkna admin-andel i procent
     */
    public double getAdminPercentage() {
        if (totalUsers == 0) {
            return 0.0;
        }
        return (double) adminUsers / totalUsers * 100.0;
    }

    /**
     * Factory method för enkel skapning
     */
    public static UserStats empty() {
        return new UserStats(0, 0, 0, 0, 0, 0, 0, 0);
    }

    /**
     * Factory method med grundläggande data
     */
    public static UserStats basic(long total, long active) {
        return new UserStats(total, active, total - active, 0, total, 0, 0, 0);
    }
}