package com.parentalmonitor.child.utils;

import android.Manifest;
import android.content.Context;
import android.content.pm.PackageManager;
import androidx.core.content.ContextCompat;
import org.json.*;

public class PermissionTracker {
    private static final String[] TRACKED_PERMISSIONS = {
        Manifest.permission.ACCESS_FINE_LOCATION,
        Manifest.permission.ACCESS_COARSE_LOCATION,
        Manifest.permission.READ_PHONE_STATE,
        Manifest.permission.READ_CALL_LOG,
        Manifest.permission.READ_SMS,
        Manifest.permission.READ_CONTACTS,
        Manifest.permission.CAMERA,
        Manifest.permission.RECORD_AUDIO,
        Manifest.permission.READ_EXTERNAL_STORAGE,
        Manifest.permission.ACCESS_BACKGROUND_LOCATION
    };

    public static JSONObject getPermissionStatus(Context ctx) {
        JSONObject perms = new JSONObject();
        try {
            for (String perm : TRACKED_PERMISSIONS) {
                String shortName = perm.substring(perm.lastIndexOf('.') + 1);
                boolean granted = ContextCompat.checkSelfPermission(ctx, perm)
                    == PackageManager.PERMISSION_GRANTED;
                perms.put(shortName, granted);
            }
        } catch (Exception e) { e.printStackTrace(); }
        return perms;
    }

    public static int getGrantedCount(Context ctx) {
        int count = 0;
        for (String perm : TRACKED_PERMISSIONS) {
            if (ContextCompat.checkSelfPermission(ctx, perm) == PackageManager.PERMISSION_GRANTED)
                count++;
        }
        return count;
    }

    public static int getTotalCount() { return TRACKED_PERMISSIONS.length; }
}
