private void SetBaseEquipmentComponentTypesCache()
        {
            CmsWebServiceClient cmsWebServiceClient = new CmsWebServiceClient(Utils.WcfBinding, Utils.WcfEndPoint);

            cmsWebServiceClient.GetEquipmentComponentTypesCompleted += (sender, e) =>
                {
                    if (e.Result.Any())
                    {
                        BaseEquipmentComponentType all = new BaseEquipmentComponentType {Name = ALL, EquipmentTypeId = -1, ComponentTypeId = -1, NameDescription = ALL};
                        e.Result.Insert(0, all);

                        mCachedBaseEquipmentComponentTypes = new ObservableCollection<BaseEquipmentComponentType>(e.Result);

                        BaseEquipmentComponentTypes = new ObservableCollection<BaseEquipmentComponentType>();
                        BaseEquipmentComponentTypes.Add(all);
                        RaisePropertyChanged("BaseEquipmentComponentTypes");

                        SelectedBaseEquipmentComponentType = all;
                    }
                };
            cmsWebServiceClient.GetEquipmentComponentTypesAsync();
        }
        //private void SetUpperEquipmentsCache()
        //{
        //    UpperEquipment all = new UpperEquipment { AreaId = -1, CellId = -1, Description = "", EquipmentModuleId = -1, Name = "All", UnitId = -1 };
        //    mUpperEquipments = CMS.Cache.UpperEquipments;
        //    mUpperEquipments.Insert(0, all);
        //    SelectedUpperEquipment = mUpperEquipments[0];
        //}
        private void OnSelectedDisciplineChanged()
        {
            if (SelectedDiscipline.Name == ALL)
            {

                //Manufacturers
                mManufacturers = mCachedManufacturers;
                if (mManufacturers != null && mManufacturers.Any())
                {
                    SelectedManufacturer = mManufacturers[0];
                }

                RaisePropertyChanged("Manufacturers");

                //BaseEquipmentTypes
                BaseEquipmentTypes = new ObservableCollection<BaseEquipmentType>((from x in mCachedBaseEquipmentTypes where x.EquipmentTypeCode == ALL select x).ToList());
                if (BaseEquipmentTypes!=null && BaseEquipmentTypes.Any())
                {
                    SelectedBaseEquipmentType = BaseEquipmentTypes[0];
                }

                //BaseEquipmentComponentTypes
                BaseEquipmentComponentTypes = new ObservableCollection<BaseEquipmentComponentType>();
                BaseEquipmentComponentType all = new BaseEquipmentComponentType { Name = ALL, Description = ALL, EquipmentTypeId = -1, ComponentTypeId = -1, NameDescription = ALL };
                BaseEquipmentComponentTypes.Add(all);
                SelectedBaseEquipmentComponentType = BaseEquipmentComponentTypes[0];

                //SelectedManufacturer
                if (mCachedManufacturers!=null && mCachedManufacturers.Any())
                {
                    SelectedManufacturer = mCachedManufacturers[0];
                }

                return;
            }

            //BaseEquipmentTypes
            BaseEquipmentTypes = new ObservableCollection<BaseEquipmentType>(from x in mCachedBaseEquipmentTypes
                                                                             where x.EquipmentTypeCode == mSelectedDiscipline.Code || x.EquipmentTypeCode == ALL
                                                                             select x);

            if (BaseEquipmentTypes != null && BaseEquipmentTypes.Any())
            {
                mSelectedBaseEquipmentType = BaseEquipmentTypes[0];
                RaisePropertyChanged("SelectedBaseEquipmentType");
            }

            //BaseEquipmentComponentTypes
            BaseEquipmentComponentTypes = new ObservableCollection<BaseEquipmentComponentType>(from x in mCachedBaseEquipmentComponentTypes
                                                                                               where x.EquipmentTypeId == mSelectedDiscipline.Id
                                                                                                     || x.Name == ALL
                                                                                               select x);
            RaisePropertyChanged("BaseEquipmentComponentTypes");
            SelectedBaseEquipmentComponentType = BaseEquipmentComponentTypes[0];

            //Manufacturers
            mManufacturers = new ObservableCollection<Manufacturer>(from x in mCachedManufacturers
                                                                   where x.EquipmentTypeId == mSelectedDiscipline.Id || x.Name == ALL
                                                                   select x);
            RaisePropertyChanged("Manufacturers");

            if (mManufacturers.Any())
            {
                SelectedManufacturer = mManufacturers[0];

                if (SelectedManufacturer.Name == ALL)
                {
                    //Display all Models that belong to all manufacturers
                    var ids = (from x in mManufacturers select x.Id).ToList();

                    mModels = new ObservableCollection<Model>(from x in mCachedModels
                                                              where ids.Contains(x.ManufacturerId) || x.Name == ALL
                                                              select x);
                }
                else
                {
                    //Display all Models that belong to selected manufacturers
                    mModels = new ObservableCollection<Model>(from x in mCachedModels
                                                              where x.ManufacturerId == SelectedManufacturer.Id || x.Name == ALL
                                                              select x);
                }
                if (mModels.Any())
                {
                    RaisePropertyChanged("Models");
                    SelectedModel = mModels[0];
                    RaisePropertyChanged("SelectedModel");
                }
            }
        }