package com.dacrt.SBIABackend.dto;

import java.util.Collections;
import java.util.List;

public class ScimUserResource {
	private List<String> schemas;
    private String id;
    private String userName;
    private boolean active;
    private Name name;
    private List<Email> emails;
    private Meta meta;

    public ScimUserResource() {
        // En Java 8, usamos Collections.singletonList() para crear una lista inmutable de un solo elemento.
        this.schemas = Collections.singletonList("urn:ietf:params:scim:schemas:core:2.0:User");
    }
    
    // Getters y Setters
    public List<String> getSchemas() { return schemas; }
    public void setSchemas(List<String> schemas) { this.schemas = schemas; }
    public String getId() { return id; }
    public void setId(String id) { this.id = id; }
    public String getUserName() { return userName; }
    public void setUserName(String userName) { this.userName = userName; }
    public boolean isActive() { return active; }
    public void setActive(boolean active) { this.active = active; }
    public Name getName() { return name; }
    public void setName(Name name) { this.name = name; }
    public List<Email> getEmails() { return emails; }
    public void setEmails(List<Email> emails) { this.emails = emails; }
    public Meta getMeta() { return meta; }
    public void setMeta(Meta meta) { this.meta = meta; }
    
    // Clases internas para Name, Email, Meta
    
    public static class Name {
        private String givenName;
        private String familyName;
        private String formatted;
        
        // Getters y Setters
        public String getGivenName() { return givenName; }
        public void setGivenName(String givenName) { this.givenName = givenName; }
        public String getFamilyName() { return familyName; }
        public void setFamilyName(String familyName) { this.familyName = familyName; }
        public String getFormatted() { return formatted; }
        public void setFormatted(String formatted) { this.formatted = formatted; }
    }

    public static class Email {
        private String value;
        private String type;
        private boolean primary;
        
        // Getters y Setters
        public String getValue() { return value; }
        public void setValue(String value) { this.value = value; }
        public String getType() { return type; }
        public void setType(String type) { this.type = type; }
        public boolean isPrimary() { return primary; }
        public void setPrimary(boolean primary) { this.primary = primary; }
    }

    public static class Meta {
        private String resourceType;
        private String created;
        private String lastModified;
        private String location;
        
        // Getters y Setters
        public String getResourceType() { return resourceType; }
        public void setResourceType(String resourceType) { this.resourceType = resourceType; }
        public String getCreated() { return created; }
        public void setCreated(String created) { this.created = created; }
        public String getLastModified() { return lastModified; }
        public void setLastModified(String lastModified) { this.lastModified = lastModified; }
        public String getLocation() { return location; }
        public void setLocation(String location) { this.location = location; }
    }
}
