public static void ExcludeVendor(string id, string name)
    {
        ConsentGdprSaveAndExitVariablesVendor excluded = null;

        foreach (var vendor in vendors[CmpCampaignPopupQueue.CurrentCampaignToShow()])
        {
            if (vendor._id != null && vendor._id.Equals(id))
            {
                excluded = vendor;
                break;
            }
            else if (vendor.name != null && vendor.name.Equals(name))
            {
                excluded = vendor;
                break;
            }
        }
        if (excluded != null)
        {
            vendors[CmpCampaignPopupQueue.CurrentCampaignToShow()].Remove(excluded);
            if (excluded._id != null && specFeatures[CmpCampaignPopupQueue.CurrentCampaignToShow()].ContainsKey(excluded._id))
            {
                specFeatures[CmpCampaignPopupQueue.CurrentCampaignToShow()].Remove(excluded._id);
            }
        }
        foreach (var kv in categoryVendors[CmpCampaignPopupQueue.CurrentCampaignToShow()])
        {
            foreach (var vendor in kv.Value)
            {
                if (id != null && vendor._id != null && vendor._id.Equals(id))
                {
                    excluded = vendor;
                    break;
                }
            }
            kv.Value.Remove(excluded);
        }
        // foreach (var v in CmpLocalizationMapper.vendors)
        //     if (v.vendorId.Equals(id))
        //         v.accepted = false;
        isAcceptedVendorsChanged = true;
    }
    public static void AcceptVendor(CmpVendorModel model, bool consent = true)
    {
        var vend = new ConsentGdprSaveAndExitVariablesVendor(model.vendorId, model.iabId, model.vendorType, consent, false, model.name);

        if (vendors[CmpCampaignPopupQueue.CurrentCampaignToShow()] != null
            // && (vendors[CmpCampaignPopupQueue.CurrentCampaignToShow()].Count>0
            && !vendors[CmpCampaignPopupQueue.CurrentCampaignToShow()].Exists(x =>
                                                                              (vend._id != null && x._id.Equals(vend._id)) || x.name.Equals(vend.name)))
        {
            vendors[CmpCampaignPopupQueue.CurrentCampaignToShow()].Add(vend);
        }
        if (model.iabSpecialFeatures != null)
        {
            foreach (var specFeat in model.iabSpecialFeatures)
            {
                //List init
                if (!specFeatures[CmpCampaignPopupQueue.CurrentCampaignToShow()].ContainsKey(model.vendorId))
                {
                    specFeatures[CmpCampaignPopupQueue.CurrentCampaignToShow()][model.vendorId] = new List <ConsentGdprSaveAndExitVariablesSpecialFeature>();
                }
                //Duplicate check
                if (!specFeatures[CmpCampaignPopupQueue.CurrentCampaignToShow()][model.vendorId].Exists(x => x._id.Equals(specFeat)))
                {
                    int?iabId = null;
                    foreach (var v in CmpLocalizationMapper.CurrentVendors)
                    {
                        if (v.vendorId.Equals(model.vendorId))
                        {
                            // v.accepted = true;
                            if (v.iabId.HasValue)
                            {
                                iabId = v.iabId.Value;
                            }
                            break;
                        }
                    }
                    specFeatures[CmpCampaignPopupQueue.CurrentCampaignToShow()][model.vendorId].Add(new ConsentGdprSaveAndExitVariablesSpecialFeature(specFeat, iabId));
                }
            }
        }
        isAcceptedVendorsChanged = true;
    }
    public static void ExcludeCategory(string id, bool consented = false)
    {
        ConsentGdprSaveAndExitVariablesCategory excluded = null;

        foreach (var cat in categories[CmpCampaignPopupQueue.CurrentCampaignToShow()])
        {
            if (cat._id.Equals(id))
            {
                excluded = cat;
            }
        }
        if (excluded != null)
        {
            categories[CmpCampaignPopupQueue.CurrentCampaignToShow()].Remove(excluded);
            if (categoryVendors[CmpCampaignPopupQueue.CurrentCampaignToShow()].ContainsKey(excluded._id) && categoryVendors[CmpCampaignPopupQueue.CurrentCampaignToShow()][excluded._id] != null)
            {
                categoryVendors[CmpCampaignPopupQueue.CurrentCampaignToShow()].Remove(excluded._id);
                isAcceptedVendorsChanged = true;
            }
        }
        foreach (var category in CmpLocalizationMapper.CurrentCategories)
        {
            if (category._id.Equals(id))
            {
                category.accepted = consented;
                if (categoryVendors[CmpCampaignPopupQueue.CurrentCampaignToShow()].ContainsKey(category._id) && categoryVendors[CmpCampaignPopupQueue.CurrentCampaignToShow()][category._id] != null)
                {
                    categoryVendors[CmpCampaignPopupQueue.CurrentCampaignToShow()].Remove(category._id);
                    isAcceptedVendorsChanged = true;
                }
                List <CmpCategoryConsentVendorModel> vendoritos = new List <CmpCategoryConsentVendorModel>();
                vendoritos.AddRange(category.legIntVendors);
                vendoritos.AddRange(category.disclosureOnlyVendors);
                vendoritos.AddRange(category.requiringConsentVendors);
                ConsentGdprSaveAndExitVariablesVendor vendo = null;
                foreach (var vendorez in vendoritos)
                {
                    if (vendors[CmpCampaignPopupQueue.CurrentCampaignToShow()].Exists(x => x._id != null && vendorez.vendorId != null && vendorez.vendorId.Equals(x._id)))
                    {
                        vendo = vendors[CmpCampaignPopupQueue.CurrentCampaignToShow()].Find(x =>
                                                                                            x._id != null && vendorez.vendorId != null && vendorez.vendorId.Equals(x._id));
                    }
                }
                if (vendo != null)
                {
                    if (CmpLocalizationMapper.CurrentVendors != null)
                    {
                        foreach (var vendor in CmpLocalizationMapper.CurrentVendors)
                        {
                            if (vendor.vendorId != null && vendo._id != null && vendo._id.Equals(vendor.vendorId) ||
                                vendor.name.Equals(vendo.name))
                            {
                                vendor.accepted = consented;
                            }
                        }
                    }
                    vendors[CmpCampaignPopupQueue.CurrentCampaignToShow()].Remove(vendo);
                    isAcceptedVendorsChanged = true;
                }
                break;
            }
        }
        ConsentGdprSaveAndExitVariablesCategory excluded2 = null;

        foreach (var cat in previousSessionCategories[CmpCampaignPopupQueue.CurrentCampaignToShow()])
        {
            if (cat._id.Equals(id))
            {
                excluded2 = cat;
            }
        }
        if (excluded2 != null)
        {
            previousSessionCategories[CmpCampaignPopupQueue.CurrentCampaignToShow()].Remove(excluded2);
        }
        isAcceptedCategoriesChanged = true;
    }