import { TerritoryResponsibility } from '../../model/territory-responsibility';

export class FilterMatrix {
    responsibilityContainerMatrix: TerritoryResponsibility[] = [];
    
    
    constructor(responsibilityContainerMatrix?: TerritoryResponsibility[]) {
        this.responsibilityContainerMatrix = responsibilityContainerMatrix;
    }    

    public getNumFilterList(): number[] {
        const filterList: number[] = [];

        for (const responsibilityContainer of this.responsibilityContainerMatrix) {
            for (const responsibility of responsibilityContainer.responsibilityList) {
                if (responsibility.isActive) {
                    filterList.push(responsibility.id);
                }
            }
        }
        return filterList;
    }
}


