public ProjectTemplateViewModel(IRegionManager regionManager, IGlobalProperties globalProperties)
        {
            _globalProperties = globalProperties;
            //_regionManager = regionManager;
            //LoadProjects();
            // AddAccessoryViewModel obj= new AddAccessoryViewModel();

            EditCommand = new DelegateCommand <object>((projectID) =>
            {
                //Button senderButton = sender as Button;
                //var item = senderButton.DataContext;
                //var projectID = ((Project)item).ProjectID;
                int projectId = (int)projectID;
                Application.Current.Properties["ProjectId"] = projectId;
                ProjectInfoBLL bll = new ProjectInfoBLL();

                JCHVRF.Entity.ProjectInfo projectNextGen = bll.GetProjectInfo(projectId);
                if (projectNextGen.ProjectLegacy.RoomList == null)
                {
                    projectNextGen.ProjectLegacy.RoomList = new List <JCHVRF.Model.Room>();
                }
                JCHVRF.Model.Project.CurrentProject = projectNextGen.ProjectLegacy;
                //This case only for old created project
                if (projectNextGen.ProjectLegacy.projectID.Equals(0))
                {
                    JCHVRF.Model.Project.CurrentProject.projectID = projectId;
                }

                //projectNextGen.ProjectLegacy.RegionCode = "EU_W";
                //projectNextGen.ProjectLegacy.SubRegionCode = "GBR";
                //projectNextGen.ProjectLegacy.projectID = projectId;

                NavigationParameters param = new NavigationParameters();
                param.Add("Project", projectNextGen.ProjectLegacy);
                _globalProperties.ProjectTitle = JCHVRF.Model.Project.CurrentProject.Name;
                regionManager.RequestNavigate(RegionNames.ContentRegion, ViewKeys.MasterDesigner, param);
                //var winMain = new MasterDesigner(projectNextGen.ProjectLegacy);
                //winMain.ShowDialog();
            });

            //SearchType = "all";
            // LoadProjects("All");
        }
        //ACC - RAG END

        //IRegionManager regionManager;
        private void CreateClick()
        {
            var proj = JCHVRF.Model.Project.GetProjectInstance;

            _eventAggregator.GetEvent <BeforeCreate>().Publish();

            SystemBase newSystem = WorkFlowContext.NewSystem;

            int sysTypeAsInt = System.Convert.ToInt32(newSystem.HvacSystemType);

            switch (sysTypeAsInt)
            {
            case 1:
                proj.SystemListNextGen.Add((JCHVRF.Model.NextGen.SystemVRF)newSystem);
                break;

            case 2:
                proj.HeatExchangerSystems.Add((SystemHeatExchanger)newSystem);
                break;

            case 6:
                proj.ControlSystemList.Add((ControlSystem)newSystem);
                break;
            }


            if (_projectBAL.CreateProject(proj))
            {
                var w = Application.Current.MainWindow;

                RefreshDashBoard();
                var projectId = proj.projectID;
                int projectid = (int)projectId;
                Application.Current.Properties["ProjectId"] = projectId;
                ProjectInfoBLL            bll            = new ProjectInfoBLL();
                JCHVRF.Entity.ProjectInfo projectNextGen = JCHVRF.Entity.ProjectInfo.create();
                projectNextGen = bll.GetProjectInfo(projectId);


                if (projectNextGen != null)
                {
                    if (WorkFlowContext.Systemid == "2")
                    {
                        if (TotalHeatExUnitInfoViewModel.flgValidateUnit == false)
                        {
                            //JCHMessageBox.Show("Unit name of Heat Exchanger can not be blank");
                            //---------------- Below code added for multi-language----------//
                            JCHMessageBox.Show(Language.Current.GetMessage("ALERT_HEATEXCHANGER_UNITNAME"));
                            return;
                        }

                        //JCHMessageBox.Show("Heat Exchanger has no system available for connection");
                        //---------------- Below code added for multi-language----------//
                        JCHMessageBox.Show(Language.Current.GetMessage("ALERT_EXCHANGER_NO_SYSTEM"));
                    }

                    else if (WorkFlowContext.Systemid == "6")
                    {
                        //JCHMessageBox.Show("Central Controller has no system available for connection");
                        //---------------- Below code added for multi-language----------//

                        _eventAggregator.GetEvent <ErrorMessageUC>().Publish(Language.Current.GetMessage("CENTRAL_CONTROLLER_BLANK"));
                        Views.ucDesignerCanvas.__errorMessage = Language.Current.GetMessage("CENTRAL_CONTROLLER_BLANK");
                        //   JCHMessageBox.Show(Language.Current.GetMessage("ALERT_CENTRALCONTROLLER_NO_SYSTEM"));
                    }
                    else
                    {
                        //  JCHMessageBox.Show("Project Saved Successfully");
                        //---------------- Below code added for multi-language----------//
                        JCHMessageBox.Show(Language.Current.GetMessage("ALERT_PROJECT_SAVED"));
                        _globalProperties.ProjectTitle = JCHVRF.Model.Project.CurrentProject.Name;
                        _globalProperties.Notifications.Insert(0, new JCHVRF.Model.NextGen.Notification(JCHVRF.Model.NextGen.NotificationType.APPLICATION, String.Format("Project: {0} Created !", _globalProperties.ProjectTitle)));
                    }

                    // ACC - RAG END
                }

                projectNextGen.ProjectLegacy.RegionCode    = JCHVRF.Model.Project.CurrentProject.RegionCode;
                projectNextGen.ProjectLegacy.SubRegionCode = JCHVRF.Model.Project.CurrentProject.SubRegionCode;
                projectNextGen.ProjectLegacy.projectID     = projectid;

                w.Hide();
                NavigationParameters param = new NavigationParameters();
                param.Add("Project", projectNextGen.ProjectLegacy);

                //event to trigger to all view models to unsubscribe events they have subscibed to
                _eventAggregator.GetEvent <Cleanup>().Publish();
                //Test this
                _eventAggregator.GetEvent <CleanupOnClose>().Publish();
                _eventAggregator.GetEvent <ErrorLogVMClearAll>().Publish();
                RegionManager.RequestNavigate(RegionNames.ContentRegion, ViewKeys.Splash, (a) => {
                    _winService.Close("CreateProjectWizard");
                }, param);
                //RegionManager.RequestNavigate(RegionNames.ContentRegion, ViewKeys.MasterDesigner, (a) => { win.Close(); }, param);

                w.Show();
            }
        }
        //ACC - RAG START

        //ACC - RAG END

        //IRegionManager regionManager;
        private void CreateClick(Window win)
        {
            _eventAggregator.GetEvent <BeforeCreate>().Publish();

            var        proj      = Project.GetProjectInstance;
            SystemBase newSystem = WorkFlowContext.NewSystem;

            int sysTypeAsInt = Convert.ToInt32(newSystem.HvacSystemType);

            switch (sysTypeAsInt)
            {
            case 1:
                proj.SystemListNextGen.Add((JCHVRF.Model.NextGen.SystemVRF)newSystem);
                _eventAggregator.GetEvent <ErrorMessageUC>().Publish(string.Empty);
                Views.ucDesignerCanvas.__errorMessage = string.Empty;
                break;

            case 2:
                proj.HeatExchangerSystems.Add((SystemHeatExchanger)newSystem);
                _eventAggregator.GetEvent <ErrorMessageUC>().Publish(string.Empty);
                Views.ucDesignerCanvas.__errorMessage = string.Empty;
                break;

            case 6:
                if ((proj.SystemListNextGen.Count <= 0) && (proj.HeatExchangerSystems.Count <= 0))
                {
                    _eventAggregator.GetEvent <ErrorMessageUC>().Publish(JCHVRF_New.LanguageData.LanguageViewModel.Current.GetMessage("CENTRAL_CONTROLLER_BLANK"));
                    Views.ucDesignerCanvas.__errorMessage = JCHVRF_New.LanguageData.LanguageViewModel.Current.GetMessage("CENTRAL_CONTROLLER_BLANK");
                }
                else
                {
                    _eventAggregator.GetEvent <ErrorMessageUC>().Publish(string.Empty);
                    Views.ucDesignerCanvas.__errorMessage = string.Empty;
                }
                proj.ControlSystemList.Add((ControlSystem)newSystem);
                break;
            }

            if (_projectBAL.UpdateProject(proj))
            {
                Project.GetProjectInstance.SelectedSystemID = newSystem.Id;
                UndoRedoSetup.SetInstanceNull();
                //WorkFlowContext.Clear();
                JCHMessageBox.Show(Langauge.Current.GetMessage("SYSTEM_SAVED_SUCCESSFULLY"));//System Saved Successfully
                if (win != null)
                {
                    var w = Application.Current.MainWindow;
                    w.Hide();
                    //RefreshDashBoard();
                    var projectId = proj.projectID;
                    Application.Current.Properties["ProjectId"] = projectId;
                    ProjectInfoBLL            bll            = new ProjectInfoBLL();
                    JCHVRF.Entity.ProjectInfo projectNextGen = bll.GetProjectInfo(projectId);
                    projectNextGen.ProjectLegacy.RegionCode    = JCHVRF.Model.Project.CurrentProject.RegionCode;
                    projectNextGen.ProjectLegacy.SubRegionCode = JCHVRF.Model.Project.CurrentProject.SubRegionCode;
                    projectNextGen.ProjectLegacy.projectID     = projectId;

                    NavigationParameters param = new NavigationParameters();
                    param.Add("Project", projectNextGen.ProjectLegacy);

                    RegionManager.RequestNavigate(RegionNames.ContentRegion, ViewKeys.MasterDesigner, (a) => { win.Close(); }, param);
                    w.Show();
                }
                //event to trigger to all view models to unsubscribe events they have subscibed to
                _eventAggregator.GetEvent <Cleanup>().Publish();
                _eventAggregator.GetEvent <SystemCreated>().Publish(newSystem);
                _eventAggregator.GetEvent <RefreshSystems>().Publish();
            }
        }
        //IRegionManager regionManager;
        //
        private void SaveClick(Window win)
        {
            try
            {
                var proj         = Project.GetProjectInstance;
                int sysTypeAsInt = System.Convert.ToInt32(_hvacSystem.HvacSystemType);
                NextGenModel.SystemVRF currentSystem = new NextGenModel.SystemVRF();
                switch (sysTypeAsInt)
                {
                case 1:
                    proj.SystemListNextGen = JCHVRF.Model.Project.CurrentProject.SystemListNextGen;
                    currentSystem          = proj.SystemListNextGen.Find(sys => sys.Id == JCHVRF.Model.Project.CurrentSystemId);
                    _eventAggregator.GetEvent <BeforeSaveVRF>().Publish(currentSystem);
                    if (this.SelectedTabIndex != 0)
                    {
                        _eventAggregator.GetEvent <ODUTypeTabSave>().Publish();
                        if (!currentSystem.IsOutDoorUpdated)
                        {
                            return;
                        }
                    }
                    else
                    {
                        currentSystem.IsOutDoorUpdated = false;
                    }
                    UtilTrace.SaveHistoryTraces();
                    //proj.CanvasODUList = null;
                    break;

                case 2:
                    _eventAggregator.GetEvent <BeforeHESave>().Publish();
                    int k = proj.HeatExchangerSystems.IndexOf((SystemHeatExchanger)_hvacSystem);
                    proj.HeatExchangerSystems[k] = ((SystemHeatExchanger)_hvacSystem);
                    if (PropertyInfoViewModel._strHEName != null)
                    {
                        if (proj.HeatExchangerSystems[k].Id.Equals(PropertyInfoViewModel._strHEName[0]))
                        {
                            proj.HeatExchangerSystems[k].Name = PropertyInfoViewModel._strHEName[1];
                        }
                    }

                    UtilTrace.SaveHistoryTraces();
                    break;

                case 6:
                    _eventAggregator.GetEvent <BeforeSave>().Publish();
                    int j = proj.ControlSystemList.IndexOf((ControlSystem)_hvacSystem);
                    proj.ControlSystemList[j] = ((ControlSystem)_hvacSystem);
                    UtilTrace.SaveHistoryTraces();
                    break;
                }

                if (_projectBAL.UpdateProject(proj))
                {
                    _eventAggregator.GetEvent <RefreshSystems>().Publish();
                    if (sysTypeAsInt == 1)
                    {
                        HeatExchangerCanvasEquipmentViewModel.IsPropOrNewExch = false;
                        if (currentSystem.IsOutDoorUpdated)
                        {
                            bool IsSystemValidated = ((NextGenModel.SystemVRF)_hvacSystem).IsPipingOK;
                            JCHMessageBox.Show(Langauge.Current.GetMessage("SYSTEM_SAVED_SUCCESSFULLY")); //"System Saved Successfully");
                            _eventAggregator.GetEvent <AuToPipingBtnSubscriber>().Publish((NextGenModel.SystemVRF)_hvacSystem);

                            if (IsSystemValidated == true)
                            {
                                currentSystem.IsPipingOK = true;
                                _eventAggregator.GetEvent <PipingValidationBtnSubscriber>().Publish((NextGenModel.SystemVRF)_hvacSystem);
                            }
                        }
                        else
                        {
                            JCHMessageBox.Show(Langauge.Current.GetMessage("SYSTEM_SAVED_SUCCESSFULLY")); //"System Saved Successfully");
                        }
                    }
                    else
                    {
                        JCHMessageBox.Show(Langauge.Current.GetMessage("SYSTEM_SAVED_SUCCESSFULLY"));// "System Saved Successfully");
                    }
                    if (win != null)
                    {
                        var w = Application.Current.MainWindow;
                        w.Hide();
                        //RefreshDashBoard();
                        var projectId = proj.projectID;
                        Application.Current.Properties["ProjectId"] = projectId;
                        ProjectInfoBLL            bll            = new ProjectInfoBLL();
                        JCHVRF.Entity.ProjectInfo projectNextGen = bll.GetProjectInfo(projectId);


                        projectNextGen.ProjectLegacy.RegionCode    = JCHVRF.Model.Project.CurrentProject.RegionCode;
                        projectNextGen.ProjectLegacy.SubRegionCode = JCHVRF.Model.Project.CurrentProject.SubRegionCode;
                        projectNextGen.ProjectLegacy.projectID     = projectId;
                        NavigationParameters param = new NavigationParameters();
                        param.Add("Project", projectNextGen.ProjectLegacy);
                        _eventAggregator.GetEvent <CleanupSystemWizard>().Publish();
                        //RegionManager.RequestNavigate(RegionNames.ContentRegion, ViewKeys.Splash, (a) => { win.Close(); }, param);
                        RegionManager.RequestNavigate(RegionNames.ContentRegion, ViewKeys.MasterDesigner, (a) => { win.Close(); }, param);
                        w.Show();
                    }
                }
            }
            catch (Exception ex)
            {
                int?id = Project.GetProjectInstance?.projectID;
                Logger.LogProjectError(id, ex);
            }
        }