public CategoryWithUnusedViewModel(Category category, List <OrganisationalUnit> allOrganisationalUnits, List <PropertyQueryGroup> allPropertyQueryGroups)
        {
            Category = new CategoryViewModel(category);
            AllOrganisationalUnits = allOrganisationalUnits.Select(o => new OrganisationalUnitInfoViewModel(o)).ToList();
            AllPropertyQueryGroups = allPropertyQueryGroups.Select(p => new PropertyQueryGroupViewModel(p)).ToList();

            for (int i = 0; i < AllOrganisationalUnits.Count; i++)
            {
                Shared.OrganisationalUnitInfoViewModel existing = Category.OrganisationalUnits.Find(cou => cou.OrganisationalUnitId == AllOrganisationalUnits[i].OrganisationalUnitId);
                if (existing != null)
                {
                    AllOrganisationalUnits[i]     = new OrganisationalUnitInfoViewModel(existing);
                    AllOrganisationalUnits[i].Use = true;
                }
                //ou.Use = (Category.OrganisationalUnits.Find(cou => cou.OrganisationalUnitId == ou.OrganisationalUnitId) != null);
            }

            for (int i = 0; i < AllPropertyQueryGroups.Count; i++)
            {
                for (int j = 0; j < AllPropertyQueryGroups[i].Queries.Count; j++)
                {
                    Shared.PropertyQueryInfoViewModel existing = Category.Queries.Find(q => q.QueryId == AllPropertyQueryGroups[i].Queries[j].QueryId);
                    if (existing != null)
                    {
                        AllPropertyQueryGroups[i].Queries[j]      = new PropertyQueryInfoViewModel(existing, true);
                        AllPropertyQueryGroups[i].AnyQueriesToUse = true;
                    }
                }
            }

            /*
             * foreach (PropertyQueryGroupViewModel qg in AllPropertyQueryGroups)
             * {
             *  foreach (PropertyQueryViewModel q in qg.Queries)
             *  {
             *      q.Use = (Category.Queries.Find(cq => cq.WebServiceName == q.WebServiceName && cq.QueryId == q.QueryId) != null);
             *      if (q.Use) { qg.AnyQueriesToUse = true; }
             *  }
             * }
             */
        }
        public OrganisationalUnitInfoViewModel(Shared.OrganisationalUnitInfoViewModel baseViewModel, bool use = false)
        {
            Id = baseViewModel.Id;
            OrganisationalUnitId = baseViewModel.OrganisationalUnitId;
            CategoryID           = baseViewModel.CategoryID;
            CategoryName         = baseViewModel.CategoryName;
            Name = baseViewModel.Name;
            OrganisationalUnitId = baseViewModel.OrganisationalUnitId;
            Name               = baseViewModel.Name;
            ShortDescription   = baseViewModel.ShortDescription;
            LongDescription    = baseViewModel.LongDescription;
            ImagePath          = baseViewModel.ImagePath;
            Address            = baseViewModel.Address;
            Telephone          = baseViewModel.Telephone;
            Contact            = baseViewModel.Contact;
            Email              = baseViewModel.Email;
            OrganisationalForm = baseViewModel.OrganisationalForm;
            Website            = baseViewModel.Website;
            Latitude           = baseViewModel.Latitude;
            Longitude          = baseViewModel.Longitude;
            Other              = baseViewModel.Other;

            Use = use;
        }