public void UpdateModelViews(ModelViewSerializable mvs)
 {
     if (ModelViews == null)
     {
         ModelViews = new ObservableCollection <ModelViewSerializable>();
     }
     if ((mvs != null) && (SelectedEntity != null) && (CurrentDbContext != null))
     {
         if (mvs.RootEntityFullClassName == SelectedEntity.CodeElementFullName)
         {
             if (CurrentDbContext.ModelViews != null)
             {
                 ModelViewSerializable result =
                     CurrentDbContext.ModelViews.FirstOrDefault(m => m.ViewName == mvs.ViewName);
                 if (result != null)
                 {
                     if (!ModelViews.Any(m => m.ViewName == mvs.ViewName))
                     {
                         ModelViews.Add(mvs);
                     }
                 }
             }
         }
     }
     OnPropertyChanged("SelectedEntity");
 }
예제 #2
0
        public void DoGenerateViewModel(DTE2 Dte, ITextTemplating textTemplating, SelectedItem DestinationSelectedItem, string T4TempatePath, ModelView modelView)
        {
            this.GenerateText  = "";
            this.GenerateError = "";


            GeneratedModelView = new ModelViewSerializable();
            modelView.ModelViewAssingTo(GeneratedModelView);


            ITextTemplatingSessionHost textTemplatingSessionHost = (ITextTemplatingSessionHost)textTemplating;

            textTemplatingSessionHost.Session = textTemplatingSessionHost.CreateSession();
            TPCallback tpCallback = new TPCallback();

            textTemplatingSessionHost.Session["Model"] = GeneratedModelView;
            if (string.IsNullOrEmpty(GenText))
            {
                this.GenerateText = textTemplating.ProcessTemplate(T4TempatePath, File.ReadAllText(T4TempatePath), tpCallback);
            }
            else
            {
                this.GenerateText = textTemplating.ProcessTemplate(T4TempatePath, GenText, tpCallback);
            }
            FileExtension = tpCallback.FileExtension;
            if (tpCallback.ProcessingErrors != null)
            {
                foreach (TPError tpError in tpCallback.ProcessingErrors)
                {
                    this.GenerateError = tpError.ToString() + "\n";
                }
            }
            IsReady.DoNotify(this, string.IsNullOrEmpty(this.GenerateError));
        }
예제 #3
0
 public void DoAnalize(ModelViewSerializable srcModel)
 {
     if (SelectedModel == null)
     {
         SelectedModel = new ModelView();
     }
     if ((SelectedEntity == null) || (SelectedDbContext == null))
     {
         SelectedTreeViewItem = null;
         SelectedModel.ClearModelView();
     }
     if ((SelectedEntity.CodeElementRef == null) || (SelectedDbContext.CodeElementRef == null))
     {
         SelectedTreeViewItem = null;
         SelectedModel.ClearModelView();
     }
     (SelectedEntity.CodeElementRef as CodeClass).
     DefineModelView(SelectedDbContext.CodeElementRef as CodeClass, SelectedModel, ViewNameSufix, PageViewNameSufix);
     SelectedModel.ViewProject = DestinationProject;
     SelectedModel.ViewDefaultProjectNameSpace = DefaultProjectNameSpace;
     SelectedModel.ViewFolder = DestinationFolder;
     if (srcModel != null)
     {
         srcModel.ModelViewSerializableAssingTo(SelectedModel, CurrentDbContext, false);
     }
     OnPropertyChanged("SelectedModel");
 }
예제 #4
0
        public void OnSelectedItemViewNameChanged()
        {
            if (SelectedItem == null)
            {
                return;
            }
            ModelViewForeignKey foreignKey = SelectedItem as ModelViewForeignKey;

            if (foreignKey == null)
            {
                return;
            }
            //foreignKey.IsAssinging = true;
            foreignKey.ViewName = SelectedItemViewName;
            //foreignKey.IsAssinging = false;
            if (foreignKey.ScalarProperties == null)
            {
                foreignKey.ScalarProperties = new ObservableCollection <ModelViewProperty>();
            }
            if (string.IsNullOrEmpty(foreignKey.ViewName))
            {
                return;
            }
            if (foreignKey.ScalarProperties.Count > 0)
            {
                return;
            }
            ModelViewSerializable modelViewSerializable = ModelViews.FirstOrDefault(mv => mv.ViewName == foreignKey.ViewName);

            if (modelViewSerializable.ScalarProperties == null)
            {
                return;
            }
            modelViewSerializable.ScalarProperties.ForEach(mv => foreignKey.ScalarProperties.Add(mv.ModelViewPropertySerializableAssingTo(new ModelViewProperty())));
            bool isRequired = foreignKey.ModelViewForeignKeyIsRequired();

            foreach (ModelViewProperty prop in foreignKey.ScalarProperties)
            {
                prop.IsRequiredInView = prop.IsRequiredInView && isRequired;
            }
            foreignKey.IsAssinging      = true;
            foreignKey.ForeignKeyPrefix = foreignKey.NavigationName + modelViewSerializable.ViewName;
            foreignKey.IsAssinging      = false;
            foreignKey.OnModelViewForeignKeyPrefixChanged();
            foreignKey.ModelViewForeignKeyUpdateForeignKeyNameChain();
        }
        public virtual void ImportBtnCommandAction(Object param)
        {
            OpenFileDialog ofdlg = new OpenFileDialog();

            ofdlg.Filter     = "JSON-files(*.json)|*.json";
            ofdlg.DefaultExt = "json";
            ofdlg.Title      = "Select a source to import";
            if (ofdlg.ShowDialog() != DialogResult.OK)
            {
                return;
            }
            try
            {
                string jsonString = File.ReadAllText(ofdlg.FileName);
                DbContextSerializable srcContext = JsonConvert.DeserializeObject <DbContextSerializable>(jsonString);
                if (CurrentDbContext == null)
                {
                    return;
                }
                if (CurrentDbContext.ModelViews == null)
                {
                    CurrentDbContext.ModelViews = new List <ModelViewSerializable>();
                }
                foreach (ModelViewSerializable itm in srcContext.ModelViews)
                {
                    if (itm.RootEntityClassName != SelectedEntity.CodeElementName)
                    {
                        continue;
                    }
                    if (CurrentDbContext.ModelViews.Any(m => m.ViewName == itm.ViewName))
                    {
                        continue;
                    }
                    ModelViewSerializable destItm = itm.ModelViewSerializableGetCopy(this.DestinationProject, this.DefaultProjectNameSpace, this.DestinationFolder, this.DbSetProppertyName, this.SelectedEntity);
                    CurrentDbContext.ModelViews.Add(destItm);
                    ModelViews.Add(destItm);
                }
            }
            catch (Exception e)
            {
                System.Windows.Forms.MessageBox.Show("Error:" + e.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }
        }
예제 #6
0
        private void OnContextChanged(Object sender)
        {
            if (CreateWebApiUC == null)
            {
                return;
            }
            if (CreateWebApiUC.DataContext == null)
            {
                return;
            }
            if ((CreateWebApiUC.DataContext as CreateWebApiViewModel).SerializableDbContext == null)
            {
                return;
            }
            if ((CreateWebApiUC.DataContext as CreateWebApiViewModel).ModelViews == null)
            {
                return;
            }
            ModelViewSerializable mv =
                (CreateWebApiUC.DataContext as CreateWebApiViewModel).ModelViews.Where(m => m.ViewName == (CreateWebApiUC.DataContext as CreateWebApiViewModel).ContextItemViewName).FirstOrDefault();

            if (mv == null)
            {
                return;
            }
            DbContextSerializable cn = (CreateWebApiUC.DataContext as CreateWebApiViewModel).SerializableDbContext;

            if (cn.CommonStaffs == null)
            {
                return;
            }
            if (mv.CommonStaffs == null)
            {
                mv.CommonStaffs = new List <CommonStaffSerializable>();
            }
            mv.CommonStaffs.Clear();
            foreach (CommonStaffSerializable csf in cn.CommonStaffs)
            {
                mv.CommonStaffs.Add(csf);
            }
        }
예제 #7
0
        public void DoGenerateViewModel(DTE2 Dte, ITextTemplating textTemplating, string T4TempatePath, DbContextSerializable SerializableDbContext, ModelViewSerializable model, string defaultProjectNameSpace = null)
        {
            this.GenerateText  = "";
            this.GenerateError = "";
            IsReady.DoNotify(this, false);
            if ((model == null) || (SerializableDbContext == null))
            {
                return;
            }
            GeneratedModelView = model;

            ITextTemplatingSessionHost textTemplatingSessionHost = (ITextTemplatingSessionHost)textTemplating;

            textTemplatingSessionHost.Session = textTemplatingSessionHost.CreateSession();
            TPCallback tpCallback = new TPCallback();

            textTemplatingSessionHost.Session["Model"]   = GeneratedModelView;
            textTemplatingSessionHost.Session["Context"] = SerializableDbContext;
            textTemplatingSessionHost.Session["DefaultProjectNameSpace"] = string.IsNullOrEmpty(defaultProjectNameSpace) ? "" : defaultProjectNameSpace;

            if (string.IsNullOrEmpty(GenText))
            {
                this.GenerateText = textTemplating.ProcessTemplate(T4TempatePath, File.ReadAllText(T4TempatePath), tpCallback);
            }
            else
            {
                this.GenerateText = textTemplating.ProcessTemplate(T4TempatePath, GenText, tpCallback);
            }
            FileExtension = tpCallback.FileExtension;
            if (tpCallback.ProcessingErrors != null)
            {
                foreach (TPError tpError in tpCallback.ProcessingErrors)
                {
                    this.GenerateError += tpError.ToString() + "\n";
                }
            }
            IsReady.DoNotify(this, string.IsNullOrEmpty(this.GenerateError));
        }
예제 #8
0
        public override void SaveBtnCommandAction(Object param)
        {
            DbContextSerializable localDbContext               = (CreateWebApiUC.DataContext as CreateWebApiViewModel).SerializableDbContext;
            ModelViewSerializable modelViewSerializable        = (GenerateUC.DataContext as GenerateCommonStaffViewModel).GeneratedModelView;
            ModelViewSerializable existedModelViewSerializable =
                localDbContext.ModelViews.FirstOrDefault(mv => mv.ViewName == modelViewSerializable.ViewName);

            if (existedModelViewSerializable != null)
            {
                existedModelViewSerializable.ScalarProperties  = modelViewSerializable.ScalarProperties;
                existedModelViewSerializable.WebApiServiceName = modelViewSerializable.WebApiServiceName;
                existedModelViewSerializable.IsWebApiSelectAll = modelViewSerializable.IsWebApiSelectAll;
                existedModelViewSerializable.IsWebApiSelectManyWithPagination = modelViewSerializable.IsWebApiSelectManyWithPagination;
                existedModelViewSerializable.IsWebApiSelectOneByPrimarykey    = modelViewSerializable.IsWebApiSelectOneByPrimarykey;
                existedModelViewSerializable.IsWebApiAdd          = modelViewSerializable.IsWebApiAdd;
                existedModelViewSerializable.IsWebApiUpdate       = modelViewSerializable.IsWebApiUpdate;
                existedModelViewSerializable.IsWebApiDelete       = modelViewSerializable.IsWebApiDelete;
                existedModelViewSerializable.WebApiServiceProject = modelViewSerializable.WebApiServiceProject;
                existedModelViewSerializable.WebApiServiceDefaultProjectNameSpace = modelViewSerializable.WebApiServiceDefaultProjectNameSpace;
                existedModelViewSerializable.WebApiServiceFolder = modelViewSerializable.WebApiServiceFolder;

                existedModelViewSerializable.UIFormProperties = modelViewSerializable.UIFormProperties;
                existedModelViewSerializable.UIListProperties = modelViewSerializable.UIListProperties;
            }
            else
            {
                localDbContext.ModelViews.Add(modelViewSerializable);
            }

            string projectName = "";

            if ((CreateWebApiUC.DataContext as CreateWebApiViewModel).SelectedDbContext.CodeElementRef != null)
            {
                if ((CreateWebApiUC.DataContext as CreateWebApiViewModel).SelectedDbContext.CodeElementRef.ProjectItem != null)
                {
                    projectName =
                        (CreateWebApiUC.DataContext as CreateWebApiViewModel).SelectedDbContext.CodeElementRef.ProjectItem.ContainingProject.UniqueName;
                }
            }
            if (!string.IsNullOrEmpty(projectName))
            {
                string locFileName = Path.Combine(projectName, (CreateWebApiUC.DataContext as CreateWebApiViewModel).SelectedDbContext.CodeElementFullName, JsonExtension);
                locFileName       = locFileName.Replace("\\", ".");
                SolutionDirectory = System.IO.Path.GetDirectoryName(Dte.Solution.FullName);
                locFileName       = Path.Combine(SolutionDirectory, locFileName);
                string jsonString = JsonConvert.SerializeObject(localDbContext);
                File.WriteAllText(locFileName, jsonString);
            }

            try
            {
                SolutionDirectory = System.IO.Path.GetDirectoryName(Dte.Solution.FullName);
                string FlNm = Path.Combine(
                    SolutionDirectory,
                    Path.GetDirectoryName(modelViewSerializable.WebApiServiceProject),
                    modelViewSerializable.WebApiServiceFolder,
                    modelViewSerializable.WebApiServiceName
                    + (GenerateUC.DataContext as GenerateCommonStaffViewModel).FileExtension);
                File.WriteAllText(FlNm, (GenerateUC.DataContext as GenerateCommonStaffViewModel).GenerateText);
                DestinationProject.ProjectItems.AddFromFile(FlNm);
                MessageBox.Show(SuccessNotification, "Done", MessageBoxButton.OK, MessageBoxImage.Information);
            }
            catch (Exception e)
            {
                MessageBox.Show("Error: " + e.Message, "Error", MessageBoxButton.OK, MessageBoxImage.Error);
            }
        }
예제 #9
0
        public virtual void StartBtnCommandBatchAction(Object param)
        {
            Microsoft.VisualStudio.Shell.ThreadHelper.ThrowIfNotOnUIThread();
            IVsThreadedWaitDialog2 aDialog = null;
            bool aDialogStarted            = false;

            if (this.DialogFactory != null)
            {
                this.DialogFactory.CreateInstance(out aDialog);
                if (aDialog != null)
                {
                    aDialogStarted = aDialog.StartWaitDialog("Generation started", "VS is Busy", "Please wait", null, "Generation started", 0, false, true) == VSConstants.S_OK;
                }
            }
            StringBuilder sb = new StringBuilder();

            try
            {
                sb.AppendLine("Json parsing started");
                BatchSettings batchSettings = BatchSettingsHelper.ReadBatchSettingsFromString(CurrentBatchSetting);
                if (batchSettings == null)
                {
                    throw new Exception("Could not Deserialize Object");
                }
                sb.AppendLine("Json parsing finished");
                if (batchSettings.BatchItems == null)
                {
                    throw new Exception("Batch Items is empty");
                }
                sb.AppendLine("Batch Items processing started");

                foreach (BatchItem batchItem  in batchSettings.BatchItems)
                {
                    ModelViewSerializable currentSerializableModel = SerializableModel;
                    if (!string.IsNullOrEmpty(batchItem.ViewModel))
                    {
                        currentSerializableModel = SerializableDbContext.ModelViews.Where(m => m.ViewName == batchItem.ViewModel).FirstOrDefault();
                        if (currentSerializableModel == null)
                        {
                            throw new Exception("Could not find [" + batchItem.ViewModel + "] of the Batch Item = " + batchItem.GeneratorType);
                        }
                    }
                    sb.AppendLine("Processing Batch Item: [DestinationFolder]=[" + batchItem.DestinationFolder + "]");
                    sb.AppendLine("    [GeneratorType]=[" + batchItem.GeneratorType + "]");
                    sb.AppendLine("        [GeneratorSript]=[" + batchItem.GeneratorSript + "]");
                    string tmpltPath = Path.Combine(T4RootFolder, batchItem.GeneratorType, batchItem.GeneratorSript);
                    string FileName  = "";
                    if (currentSerializableModel.ViewName == ContextItemViewName)
                    {
                        FileName =
                            BatchSettingsHelper.TrimPrefix(Path.GetFileNameWithoutExtension(batchItem.GeneratorType));
                    }
                    else
                    {
                        FileName =
                            currentSerializableModel.ViewName + BatchSettingsHelper.TrimPrefix(Path.GetFileNameWithoutExtension(batchItem.GeneratorType));
                    }
                    FileName = BatchSettingsHelper.GetHyphenedName(FileName);
                    sb.AppendLine("    Batch Item: Creating Shallow Copy");
                    ModelViewSerializable ShallowCopy = null;
                    if (currentSerializableModel.ViewName == SerializableModel.ViewName)
                    {
                        ShallowCopy =
                            BatchSettingsHelper.GetSelectedModelCommonShallowCopy(currentSerializableModel,
                                                                                  UIFormProperties, UIListProperties,
                                                                                  DestinationProjectName, DefaultProjectNameSpace, DestinationFolder, batchItem.DestinationFolder,
                                                                                  batchItem.GeneratorType, FileName);
                    }
                    else
                    {
                        ShallowCopy =
                            BatchSettingsHelper.GetSelectedModelCommonShallowCopy(currentSerializableModel,
                                                                                  null, null,
                                                                                  DestinationProjectName, DefaultProjectNameSpace, DestinationFolder, batchItem.DestinationFolder,
                                                                                  batchItem.GeneratorType, FileName);
                    }
                    sb.AppendLine("        Batch Item: Generating Code");
                    GeneratorBatchStep generatorBatchStep = BatchSettingsHelper.DoGenerateViewModel(Dte, TextTemplating, tmpltPath, SerializableDbContext, ShallowCopy, DefaultProjectNameSpace);
                    if (!string.IsNullOrEmpty(generatorBatchStep.GenerateError))
                    {
                        throw new Exception(generatorBatchStep.GenerateError);
                    }
                    sb.AppendLine("            Batch Item: Adding Generated file to project and Updating Wizard's Context Repository");
                    BatchSettingsHelper.UpdateDbContext(Dte, DestinationProject, SelectedDbContext, SerializableDbContext, ShallowCopy,
                                                        ContextItemViewName, batchItem.GeneratorType,
                                                        DestinationProjectRootFolder,
                                                        DestinationFolder,
                                                        batchItem.DestinationFolder,
                                                        FileName, generatorBatchStep.FileExtension,
                                                        generatorBatchStep.GenerateText);
                    currentSerializableModel.CommonStaffs = ShallowCopy.CommonStaffs;
                    sb.AppendLine("Batch Item Processing finished");
                }
                sb.AppendLine("Batch Items processing finished");
            }
            catch (Exception e)
            {
                LastError = "Exception thrown: " + e.Message;
                return;
            }
            finally
            {
                if (aDialogStarted)
                {
                    int iOut;
                    aDialog.EndWaitDialog(out iOut);
                }
                ReportText = sb.ToString();
            }
        }
예제 #10
0
        public override void SaveBtnCommandAction(Object param)
        {
            ModelViewSerializable modelViewSerializable = new ModelViewSerializable();

            (CreateViewUC.DataContext as CreateViewViewModel).SelectedModel.ModelViewAssingTo(modelViewSerializable);
            ModelViewSerializable existedModelViewSerializable =
                CurrentDbContext.ModelViews.FirstOrDefault(mv => mv.ViewName == modelViewSerializable.ViewName);

            if (existedModelViewSerializable != null)
            {
                existedModelViewSerializable.PageViewName                    = modelViewSerializable.PageViewName;
                existedModelViewSerializable.RootEntityClassName             = modelViewSerializable.RootEntityClassName;
                existedModelViewSerializable.RootEntityFullClassName         = modelViewSerializable.RootEntityFullClassName;
                existedModelViewSerializable.RootEntityUniqueProjectName     = modelViewSerializable.RootEntityUniqueProjectName;
                existedModelViewSerializable.RootEntityDbContextPropertyName = modelViewSerializable.RootEntityDbContextPropertyName;
                existedModelViewSerializable.ViewProject = modelViewSerializable.ViewProject;
                existedModelViewSerializable.ViewDefaultProjectNameSpace = modelViewSerializable.ViewDefaultProjectNameSpace;
                existedModelViewSerializable.ViewFolder            = modelViewSerializable.ViewFolder;
                existedModelViewSerializable.GenerateJSonAttribute = modelViewSerializable.GenerateJSonAttribute;
                if ((existedModelViewSerializable.ScalarProperties != null) && (modelViewSerializable.ScalarProperties != null))
                {
                    foreach (ModelViewPropertyOfVwSerializable srcProp in existedModelViewSerializable.ScalarProperties)
                    {
                        ModelViewPropertyOfVwSerializable dest = null;
                        if (string.IsNullOrEmpty(srcProp.ForeignKeyNameChain))
                        {
                            dest =
                                modelViewSerializable.ScalarProperties
                                .Where(p => ((p.OriginalPropertyName == srcProp.OriginalPropertyName) && string.IsNullOrEmpty(p.ForeignKeyNameChain))).FirstOrDefault();
                        }
                        else
                        {
                            dest =
                                modelViewSerializable.ScalarProperties
                                .Where(p => ((p.OriginalPropertyName == srcProp.OriginalPropertyName) && (p.ForeignKeyNameChain == srcProp.ForeignKeyNameChain))).FirstOrDefault();
                        }
                        if (dest != null)
                        {
                            dest.IsUsedBySorting = srcProp.IsUsedBySorting;
                            dest.IsUsedByfilter  = srcProp.IsUsedByfilter;
                        }
                    }
                }
                existedModelViewSerializable.ScalarProperties     = modelViewSerializable.ScalarProperties;
                existedModelViewSerializable.ForeignKeys          = modelViewSerializable.ForeignKeys;
                existedModelViewSerializable.PrimaryKeyProperties = modelViewSerializable.PrimaryKeyProperties;
                existedModelViewSerializable.AllProperties        = modelViewSerializable.AllProperties;
                existedModelViewSerializable.UIFormProperties     = modelViewSerializable.UIFormProperties;
                existedModelViewSerializable.UIListProperties     = modelViewSerializable.UIListProperties;
            }
            else
            {
                CurrentDbContext.ModelViews.Add(modelViewSerializable);
            }
            if (SelectExistingUC != null)
            {
                (SelectExistingUC.DataContext as SelectExistingViewModel).UpdateModelViews(modelViewSerializable);
            }


            string projectName = "";

            if ((SelectSourceEntityUC.DataContext as SelectEntityForGivenDbContextViewModel).SelectedDbContext.CodeElementRef != null)
            {
                if ((SelectSourceEntityUC.DataContext as SelectEntityForGivenDbContextViewModel).SelectedDbContext.CodeElementRef.ProjectItem != null)
                {
                    projectName =
                        (SelectSourceEntityUC.DataContext as SelectEntityForGivenDbContextViewModel).SelectedDbContext.CodeElementRef.ProjectItem.ContainingProject.UniqueName;
                }
            }
            if (!string.IsNullOrEmpty(projectName))
            {
                string locFileName = Path.Combine(projectName, (SelectSourceEntityUC.DataContext as SelectEntityForGivenDbContextViewModel).SelectedDbContext.CodeElementFullName, JsonExtension);
                locFileName       = locFileName.Replace("\\", ".");
                SolutionDirectory = System.IO.Path.GetDirectoryName(Dte.Solution.FullName);
                locFileName       = Path.Combine(SolutionDirectory, locFileName);
                string jsonString = JsonConvert.SerializeObject(CurrentDbContext);
                File.WriteAllText(locFileName, jsonString);
            }
            try
            {
                SolutionDirectory = System.IO.Path.GetDirectoryName(Dte.Solution.FullName);
                if (CurrentUiStepId == 6)
                {
                    string FlNm = Path.Combine(
                        SolutionDirectory,
                        Path.GetDirectoryName((CreateViewUC.DataContext as CreateViewViewModel).SelectedModel.ViewProject),
                        (CreateViewUC.DataContext as CreateViewViewModel).SelectedModel.ViewFolder,
                        (CreateViewUC.DataContext as CreateViewViewModel).SelectedModel.ViewName
                        + (GenerateUC.DataContext as GenerateViewModel).FileExtension);
                    File.WriteAllText(FlNm, (GenerateUC.DataContext as GenerateViewModel).GenerateText);
                    DestinationProject.ProjectItems.AddFromFile(FlNm);
                }
                else if (CurrentUiStepId == 8)
                {
                    string FlNm = Path.Combine(
                        SolutionDirectory,
                        Path.GetDirectoryName((CreateViewUC.DataContext as CreateViewViewModel).SelectedModel.ViewProject),
                        (CreateViewUC.DataContext as CreateViewViewModel).SelectedModel.ViewFolder,
                        (CreateViewUC.DataContext as CreateViewViewModel).SelectedModel.PageViewName
                        //+ "."
                        + (GeneratePageUC.DataContext as GenerateViewPageModel).FileExtension);
                    File.WriteAllText(FlNm, (GeneratePageUC.DataContext as GenerateViewPageModel).GenerateText);
                    DestinationProject.ProjectItems.AddFromFile(FlNm);
                }

                MessageBox.Show(SuccessNotification, "Done", MessageBoxButton.OK, MessageBoxImage.Information);
            } catch (Exception e)
            {
                MessageBox.Show("Error: " + e.Message, "Error", MessageBoxButton.OK, MessageBoxImage.Error);
            }
        }
예제 #11
0
        public override void NextBtnCommandAction(Object param)
        {
            switch (CurrentUiStepId)
            {
            case 0:
                CurrentUiStepId = 1;
                PrevBtnEnabled  = true;
                NextBtnEnabled  = false;
                SaveBtnEnabled  = false;
                if (SelectDbContextUC == null)
                {
                    SelectDbContextViewModel dataContext = new SelectDbContextViewModel(Dte);
                    dataContext.UiCommandButtonVisibility = Visibility.Collapsed;
                    dataContext.UiCommandCaption3         = "NameSpace: " + (InvitationUC.DataContext as InvitationViewModel).DefaultProjectNameSpace;
                    string folder = (InvitationUC.DataContext as InvitationViewModel).DestinationFolder;
                    if (!string.IsNullOrEmpty(folder))
                    {
                        dataContext.UiCommandCaption3 = dataContext.UiCommandCaption3 + "." + folder.Replace("\\", ".");
                    }
                    SelectDbContextUC = new UserControlSelectSource(dataContext);
                    dataContext.IsReady.IsReadyEvent += SelectDbContextViewModel_IsReady;
                }
                (SelectDbContextUC.DataContext as SelectDbContextViewModel).DoAnaliseDbContext();
                this.CurrentUserControl = SelectDbContextUC;
                this.OnPropertyChanged("CurrentUserControl");


                break;

            case 1:
                CurrentUiStepId = 2;
                PrevBtnEnabled  = true;
                NextBtnEnabled  = false;
                SaveBtnEnabled  = false;
                if (SelectSourceEntityUC == null)
                {
                    SelectEntityForGivenDbContextViewModel dataContext = new SelectEntityForGivenDbContextViewModel(Dte);
                    dataContext.UiCommandButtonVisibility = Visibility.Collapsed;
                    dataContext.IsReady.IsReadyEvent     += SelectEntityForGivenDbContextViewModel_IsReady;
                    SelectSourceEntityUC = new UserControlSelectSource(dataContext);
                }
                (SelectSourceEntityUC.DataContext as SelectEntityForGivenDbContextViewModel).SelectedDbContext =
                    (SelectDbContextUC.DataContext as SelectDbContextViewModel).SelectedCodeElement;
                (SelectSourceEntityUC.DataContext as SelectEntityForGivenDbContextViewModel).CheckIsReady();
                OnDbContextChanged();
                this.CurrentUserControl = SelectSourceEntityUC;
                this.OnPropertyChanged("CurrentUserControl");

                break;

            case 2:
                CurrentUiStepId = 3;
                PrevBtnEnabled  = true;
                NextBtnEnabled  = false;
                SaveBtnEnabled  = false;
                if (SelectExistingUC == null)
                {
                    SelectExistingViewModel dataContext = new SelectExistingViewModel(Dte);
                    dataContext.IsReady.IsReadyEvent += SelectEntityForGivenDbContextViewModel_IsReady;
                    SelectExistingUC = new UserControlSelectExisting(dataContext);
                }
                (SelectExistingUC.DataContext as SelectExistingViewModel).CurrentDbContext = CurrentDbContext;
                (SelectExistingUC.DataContext as SelectExistingViewModel).SelectedEntity   =
                    (SelectSourceEntityUC.DataContext as SelectEntityForGivenDbContextViewModel).SelectedCodeElement;

                (SelectExistingUC.DataContext as SelectExistingViewModel).DestinationProject      = (InvitationUC.DataContext as InvitationViewModel).DestinationProject;
                (SelectExistingUC.DataContext as SelectExistingViewModel).DefaultProjectNameSpace = (InvitationUC.DataContext as InvitationViewModel).DefaultProjectNameSpace;
                (SelectExistingUC.DataContext as SelectExistingViewModel).DestinationFolder       = (InvitationUC.DataContext as InvitationViewModel).DestinationFolder;
                (SelectExistingUC.DataContext as SelectExistingViewModel).DbSetProppertyName      = (SelectSourceEntityUC.DataContext as SelectEntityForGivenDbContextViewModel).SelectedProppertyName;

                (SelectExistingUC.DataContext as SelectExistingViewModel).DoAnalize();
                this.CurrentUserControl = SelectExistingUC;
                this.OnPropertyChanged("CurrentUserControl");
                break;

            case 3:
                CurrentUiStepId = 4;
                PrevBtnEnabled  = true;
                NextBtnEnabled  = true;
                SaveBtnEnabled  = false;
                if (CreateViewUC == null)
                {
                    CreateViewViewModel dataContext = new CreateViewViewModel(Dte);
                    dataContext.IsReady.IsReadyEvent   += SelectEntityForGivenDbContextViewModel_IsReady;
                    dataContext.DestinationProject      = (InvitationUC.DataContext as InvitationViewModel).DestinationProject;
                    dataContext.DefaultProjectNameSpace = (InvitationUC.DataContext as InvitationViewModel).DefaultProjectNameSpace;
                    dataContext.DestinationFolder       = (InvitationUC.DataContext as InvitationViewModel).DestinationFolder;
                    CreateViewUC = new UserControlCreateView(dataContext);
                }
                (CreateViewUC.DataContext as CreateViewViewModel).SelectedDbContext =
                    (SelectSourceEntityUC.DataContext as SelectEntityForGivenDbContextViewModel).SelectedDbContext;
                (CreateViewUC.DataContext as CreateViewViewModel).SelectedEntity =
                    (SelectSourceEntityUC.DataContext as SelectEntityForGivenDbContextViewModel).SelectedCodeElement;
                (CreateViewUC.DataContext as CreateViewViewModel).CurrentDbContext = CurrentDbContext;
                (CreateViewUC.DataContext as CreateViewViewModel).DestinationDbSetProppertyName =
                    (SelectSourceEntityUC.DataContext as SelectEntityForGivenDbContextViewModel).SelectedProppertyName;
                ModelViewSerializable srcModel = null;
                if ((SelectExistingUC.DataContext as SelectExistingViewModel).IsSelectExisting)
                {
                    srcModel = (SelectExistingUC.DataContext as SelectExistingViewModel).SelectedModel;
                }
                (CreateViewUC.DataContext as CreateViewViewModel).DoAnalize(srcModel);
                this.CurrentUserControl = CreateViewUC;
                this.OnPropertyChanged("CurrentUserControl");

                break;

            case 4:
                string checkErrorsText = (CreateViewUC.DataContext as CreateViewViewModel).SelectedModel.CheckCorrect();
                if (!string.IsNullOrEmpty(checkErrorsText))
                {
                    (CreateViewUC.DataContext as CreateViewViewModel).CheckErrorsText = checkErrorsText;
                    return;
                }

                CurrentUiStepId = 5;
                PrevBtnEnabled  = true;
                NextBtnEnabled  = true;
                SaveBtnEnabled  = false;
                if (T4EditorUC == null)
                {
                    string            TemplatesFld = TemplatePathHelper.GetTemplatePath();
                    string            templatePath = Path.Combine(TemplatesFld, "ViewModelTmplst");
                    T4EditorViewModel dataContext  = new T4EditorViewModel(templatePath);
                    dataContext.IsReady.IsReadyEvent += T4EditorViewModel_IsReady;
                    T4EditorUC = new UserControlT4Editor(dataContext);
                }
                (T4EditorUC.DataContext as T4EditorViewModel).CheckIsReady();
                this.CurrentUserControl = T4EditorUC;
                this.OnPropertyChanged("CurrentUserControl");

                break;

            case 5:
                CurrentUiStepId = 6;
                PrevBtnEnabled  = true;
                NextBtnEnabled  = false;
                IVsThreadedWaitDialog2 aDialog = null;
                bool aDialogStarted            = false;
                if (this.DialogFactory != null)
                {
                    this.DialogFactory.CreateInstance(out aDialog);
                    if (aDialog != null)
                    {
                        aDialogStarted = aDialog.StartWaitDialog("Generation started", "VS is Busy", "Please wait", null, "Generation started", 0, false, true) == VSConstants.S_OK;
                    }
                }

                if (GenerateUC == null)
                {
                    GenerateViewModel generateViewModel = new GenerateViewModel();
                    generateViewModel.IsReady.IsReadyEvent += GenerateViewModel_IsReady;
                    GenerateUC = new UserControlGenerate(generateViewModel);
                }
                (GenerateUC.DataContext as GenerateViewModel).GenText = (T4EditorUC.DataContext as T4EditorViewModel).T4TempateText;
                try
                {
                    (CreateViewUC.DataContext as CreateViewViewModel).SelectedModel.RootEntityDbContextPropertyName =
                        (CreateViewUC.DataContext as CreateViewViewModel).DestinationDbSetProppertyName;
                    (GenerateUC.DataContext as GenerateViewModel).DoGenerateViewModel(Dte, TextTemplating, null,
                                                                                      (T4EditorUC.DataContext as T4EditorViewModel).T4TempatePath,
                                                                                      (CreateViewUC.DataContext as CreateViewViewModel).SelectedModel);
                    NextBtnEnabled = true;
                    if (aDialogStarted)
                    {
                        int iOut;
                        aDialog.EndWaitDialog(out iOut);
                    }
                    MessageBox.Show(SuccessNotification, "Done", MessageBoxButton.OK, MessageBoxImage.Information);
                }
                catch (Exception e)
                {
                    if (aDialogStarted)
                    {
                        int iOut;
                        aDialog.EndWaitDialog(out iOut);
                    }
                    MessageBox.Show("Error: " + e.Message, "Error", MessageBoxButton.OK, MessageBoxImage.Error);
                }
                finally
                {
                    this.CurrentUserControl = GenerateUC;
                    this.OnPropertyChanged("CurrentUserControl");
                }
                break;

            case 6:
                CurrentUiStepId = 7;
                PrevBtnEnabled  = true;
                NextBtnEnabled  = true;
                SaveBtnEnabled  = false;
                if (T4EditorPageUC == null)
                {
                    string            TemplatesFld = TemplatePathHelper.GetTemplatePath();
                    string            templatePath = Path.Combine(TemplatesFld, "ViewPageModelTmplst");
                    T4EditorViewModel dataContext  = new T4EditorViewModel(templatePath);
                    dataContext.IsReady.IsReadyEvent += T4EditorViewModel_IsReady;
                    T4EditorPageUC = new UserControlT4Editor(dataContext);
                }
                (T4EditorPageUC.DataContext as T4EditorViewModel).CheckIsReady();
                this.CurrentUserControl = T4EditorPageUC;
                this.OnPropertyChanged("CurrentUserControl");
                break;

            case 7:
                CurrentUiStepId = 8;
                PrevBtnEnabled  = true;
                NextBtnEnabled  = true;
                IVsThreadedWaitDialog2 aaDialog = null;
                bool aaDialogStarted            = false;
                if (this.DialogFactory != null)
                {
                    this.DialogFactory.CreateInstance(out aaDialog);
                    if (aaDialog != null)
                    {
                        aaDialogStarted = aaDialog.StartWaitDialog("Generation started", "VS is Busy", "Please wait", null, "Generation started", 0, false, true) == VSConstants.S_OK;
                    }
                }
                if (GeneratePageUC == null)
                {
                    GenerateViewPageModel generateViewModel = new GenerateViewPageModel();
                    generateViewModel.IsReady.IsReadyEvent += GenerateViewModel_IsReady;
                    GeneratePageUC = new UserControlGenerate(generateViewModel);
                }
                (GeneratePageUC.DataContext as GenerateViewPageModel).GenText = (T4EditorPageUC.DataContext as T4EditorViewModel).T4TempateText;
                try
                {
                    (GeneratePageUC.DataContext as GenerateViewPageModel).GeneratedModelView =
                        (GenerateUC.DataContext as GenerateViewModel).GeneratedModelView;
                    (GeneratePageUC.DataContext as GenerateViewPageModel).DoGenerateViewPageModel(Dte, TextTemplating, null,
                                                                                                  (T4EditorPageUC.DataContext as T4EditorViewModel).T4TempatePath);
                    if (aaDialogStarted)
                    {
                        int iOut;
                        aaDialog.EndWaitDialog(out iOut);
                    }
                }
                catch (Exception e)
                {
                    if (aaDialogStarted)
                    {
                        int iOut;
                        aaDialog.EndWaitDialog(out iOut);
                    }
                    MessageBox.Show("Error: " + e.Message, "Error", MessageBoxButton.OK, MessageBoxImage.Error);
                }
                finally
                {
                    this.CurrentUserControl = GeneratePageUC;
                    this.OnPropertyChanged("CurrentUserControl");
                }
                break;

            case 8:
                CurrentUiStepId = 1;
                NextBtnCommandAction(param);
                break;

            default:
                break;
            }
        }
예제 #12
0
        public override void SaveBtnCommandAction(Object param)
        {
            DbContextSerializable localDbContext        = (CreateWebApiUC.DataContext as CreateWebApiViewModel).SerializableDbContext;
            ModelViewSerializable modelViewSerializable = (GenerateUC.DataContext as GenerateCommonStaffViewModel).GeneratedModelView;

            if (modelViewSerializable.ViewName == (CreateWebApiUC.DataContext as CreateWebApiViewModel).ContextItemViewName)
            {
                localDbContext.CommonStaffs = modelViewSerializable.CommonStaffs;
                if ((SelectFolderUC.DataContext as SelectFolderViewModel).SelectedModel != null)
                {
                    (SelectFolderUC.DataContext as SelectFolderViewModel).SelectedModel.CommonStaffs = localDbContext.CommonStaffs;
                }
                if (localDbContext.CommonStaffs != null)
                {
                    CommonStaffSerializable commonStaffSerializable = localDbContext.CommonStaffs
                                                                      .Where(c => c.FileType == (SelectFolderUC.DataContext as SelectFolderViewModel).T4SelectedFolder)
                                                                      .FirstOrDefault();
                    if (commonStaffSerializable != null)
                    {
                        commonStaffSerializable.Extension =
                            (GenerateUC.DataContext as GenerateCommonStaffViewModel).FileExtension;
                    }
                }
            }
            else
            {
                ModelViewSerializable existedModelViewSerializable =
                    localDbContext.ModelViews.FirstOrDefault(mv => mv.ViewName == modelViewSerializable.ViewName);
                if (modelViewSerializable.CommonStaffs != null)
                {
                    CommonStaffSerializable commonStaffSerializable =
                        modelViewSerializable.CommonStaffs
                        .Where(c => c.FileType == (SelectFolderUC.DataContext as SelectFolderViewModel).T4SelectedFolder)
                        .FirstOrDefault();
                    if (commonStaffSerializable != null)
                    {
                        commonStaffSerializable.Extension =
                            (GenerateUC.DataContext as GenerateCommonStaffViewModel).FileExtension;
                    }
                }

                if (existedModelViewSerializable != null)
                {
                    existedModelViewSerializable.ScalarProperties = modelViewSerializable.ScalarProperties;
                    existedModelViewSerializable.CommonStaffs     = modelViewSerializable.CommonStaffs;
                    existedModelViewSerializable.UIFormProperties = modelViewSerializable.UIFormProperties;
                    existedModelViewSerializable.UIListProperties = modelViewSerializable.UIListProperties;
                }
                else
                {
                    localDbContext.ModelViews.Add(modelViewSerializable);
                }
            }
            (SelectFolderUC.DataContext as SelectFolderViewModel).OnCreatedActionsChanged();
            string projectName = "";

            if ((CreateWebApiUC.DataContext as CreateWebApiViewModel).SelectedDbContext.CodeElementRef != null)
            {
                if ((CreateWebApiUC.DataContext as CreateWebApiViewModel).SelectedDbContext.CodeElementRef.ProjectItem != null)
                {
                    projectName =
                        (CreateWebApiUC.DataContext as CreateWebApiViewModel).SelectedDbContext.CodeElementRef.ProjectItem.ContainingProject.UniqueName;
                }
            }
            if (!string.IsNullOrEmpty(projectName))
            {
                string locFileName = Path.Combine(projectName, (CreateWebApiUC.DataContext as CreateWebApiViewModel).SelectedDbContext.CodeElementFullName, JsonExtension);
                locFileName       = locFileName.Replace("\\", ".");
                SolutionDirectory = System.IO.Path.GetDirectoryName(Dte.Solution.FullName);
                locFileName       = Path.Combine(SolutionDirectory, locFileName);
                string jsonString = JsonConvert.SerializeObject(localDbContext);
                File.WriteAllText(locFileName, jsonString);
            }

            try
            {
                // insert code here

                SolutionDirectory = System.IO.Path.GetDirectoryName(Dte.Solution.FullName);
                string FlNm = Path.Combine(
                    //SolutionDirectory,
                    //Path.GetDirectoryName((CreateWebApiUC.DataContext as CreateWebApiViewModel).DestinationProject),
                    (InvitationUC.DataContext as InvitationViewModel).DestinationProjectRootFolder,
                    (CreateWebApiUC.DataContext as CreateWebApiViewModel).DestinationFolder,
                    (SelectFolderUC.DataContext as SelectFolderViewModel).FileName
                    + (GenerateUC.DataContext as GenerateCommonStaffViewModel).FileExtension);
                File.WriteAllText(FlNm, (GenerateUC.DataContext as GenerateCommonStaffViewModel).GenerateText);
                DestinationProject.ProjectItems.AddFromFile(FlNm);
                MessageBox.Show(SuccessNotification, "Done", MessageBoxButton.OK, MessageBoxImage.Information);
            }
            catch (Exception e)
            {
                MessageBox.Show("Error: " + e.Message, "Error", MessageBoxButton.OK, MessageBoxImage.Error);
            }
        }
예제 #13
0
        public static GeneratorBatchStep DoGenerateViewModel(DTE2 Dte, ITextTemplating textTemplating, string T4TempatePath, DbContextSerializable SerializableDbContext, ModelViewSerializable model, string defaultProjectNameSpace = null)
        {
            GeneratorBatchStep result = new GeneratorBatchStep()
            {
                GenerateText  = "",
                GenerateError = "",
                FileExtension = "",
                T4TempatePath = T4TempatePath,
            };

            if ((model == null) || (SerializableDbContext == null))
            {
                result.GenerateError = "Model and/or Context is not defined";
                return(result);
            }
            ITextTemplatingSessionHost textTemplatingSessionHost = (ITextTemplatingSessionHost)textTemplating;

            textTemplatingSessionHost.Session = textTemplatingSessionHost.CreateSession();
            TPCallback tpCallback = new TPCallback();

            textTemplatingSessionHost.Session["Model"]   = model;
            textTemplatingSessionHost.Session["Context"] = SerializableDbContext;
            textTemplatingSessionHost.Session["DefaultProjectNameSpace"] = string.IsNullOrEmpty(defaultProjectNameSpace) ? "" : defaultProjectNameSpace;
            result.GenerateText  = textTemplating.ProcessTemplate(T4TempatePath, File.ReadAllText(result.T4TempatePath), tpCallback);
            result.FileExtension = tpCallback.FileExtension;
            if (tpCallback.ProcessingErrors != null)
            {
                foreach (TPError tpError in tpCallback.ProcessingErrors)
                {
                    result.GenerateError += tpError.ToString() + "\n";
                }
            }
            return(result);
        }
예제 #14
0
        public static void UpdateDbContext(DTE2 Dte, Project DestinationProject, SolutionCodeElement SelectedDbContext, DbContextSerializable dbContextSerializable, ModelViewSerializable modelViewSerializable,
                                           string ContextItemViewName, string T4SelectedFolder,
                                           string DestinationProjectRootFolder,
                                           string DestinationFolder,
                                           string DestinationSubFolder,
                                           string FileName, string FileExtension,
                                           string GenerateText)
        {
            Microsoft.VisualStudio.Shell.ThreadHelper.ThrowIfNotOnUIThread();
            if (modelViewSerializable.ViewName == ContextItemViewName)
            {
                dbContextSerializable.CommonStaffs = modelViewSerializable.CommonStaffs;
                if (dbContextSerializable.CommonStaffs == null)
                {
                    dbContextSerializable.CommonStaffs = new List <CommonStaffSerializable>();
                }
                CommonStaffSerializable commonStaffSerializable = dbContextSerializable.CommonStaffs
                                                                  .Where(c => c.FileType == T4SelectedFolder)
                                                                  .FirstOrDefault();
                if (commonStaffSerializable != null)
                {
                    commonStaffSerializable.Extension = FileExtension;
                }
            }
            else
            {
                ModelViewSerializable existedModelViewSerializable =
                    dbContextSerializable.ModelViews.FirstOrDefault(mv => mv.ViewName == modelViewSerializable.ViewName);
                if (modelViewSerializable.CommonStaffs != null)
                {
                    CommonStaffSerializable commonStaffSerializable =
                        modelViewSerializable.CommonStaffs
                        .Where(c => c.FileType == T4SelectedFolder)
                        .FirstOrDefault();
                    if (commonStaffSerializable != null)
                    {
                        commonStaffSerializable.Extension = FileExtension;
                    }
                }
                if (existedModelViewSerializable != null)
                {
                    existedModelViewSerializable.CommonStaffs     = modelViewSerializable.CommonStaffs;
                    existedModelViewSerializable.UIFormProperties = modelViewSerializable.UIFormProperties;
                    existedModelViewSerializable.UIListProperties = modelViewSerializable.UIListProperties;
                }
                else
                {
                    dbContextSerializable.ModelViews.Add(modelViewSerializable);
                }
            }
            string projectName = "";

            if (SelectedDbContext.CodeElementRef != null)
            {
                if (SelectedDbContext.CodeElementRef.ProjectItem != null)
                {
                    projectName =
                        SelectedDbContext.CodeElementRef.ProjectItem.ContainingProject.UniqueName;
                }
            }
            string SolutionDirectory = System.IO.Path.GetDirectoryName(Dte.Solution.FullName);

            if (!string.IsNullOrEmpty(projectName))
            {
                string locFileName = Path.Combine(projectName, SelectedDbContext.CodeElementFullName, "json");
                locFileName = locFileName.Replace("\\", ".");
                locFileName = Path.Combine(SolutionDirectory, locFileName);
                string jsonString = JsonConvert.SerializeObject(dbContextSerializable);
                File.WriteAllText(locFileName, jsonString);
            }
            string FlNm = "";

            if (string.IsNullOrEmpty(DestinationSubFolder))
            {
                FlNm = Path.Combine(
                    DestinationProjectRootFolder,
                    DestinationFolder);
            }
            else
            {
                FlNm = Path.Combine(
                    DestinationProjectRootFolder,
                    DestinationFolder,
                    DestinationSubFolder);
            }
            System.IO.Directory.CreateDirectory(FlNm);
            FlNm = Path.Combine(FlNm, FileName + FileExtension);
            File.WriteAllText(FlNm, GenerateText);
            DestinationProject.ProjectItems.AddFromFile(FlNm);
        }
예제 #15
0
        public static ModelViewSerializable GetSelectedModelCommonShallowCopy(ModelViewSerializable SelectedModel,
                                                                              ObservableCollection <ModelViewUIFormProperty> UIFormProperties,
                                                                              ObservableCollection <ModelViewUIListProperty> UIListProperties,
                                                                              string DestinationProject, string DefaultProjectNameSpace, string DestinationFolder, string DestinationSubFolder,
                                                                              string FileType, string FileName)
        {
            ModelViewSerializable result = SelectedModel.ModelViewSerializableGetShallowCopy();

            if (result.CommonStaffs == null)
            {
                result.CommonStaffs = new List <CommonStaffSerializable>();
            }
            else
            {
                result.CommonStaffs = new List <CommonStaffSerializable>();
                SelectedModel.CommonStaffs.ForEach(c => result.CommonStaffs.Add(new CommonStaffSerializable()
                {
                    Extension   = c.Extension,
                    FileType    = c.FileType,
                    FileName    = c.FileName,
                    FileProject = c.FileProject,
                    FileDefaultProjectNameSpace = c.FileDefaultProjectNameSpace,
                    FileFolder = c.FileFolder,
                    //FileTypeData = c.FileTypeData
                }));
            }
            CommonStaffSerializable commonStaffItem =
                result.CommonStaffs.Where(c => c.FileType == FileType).FirstOrDefault();

            if (commonStaffItem == null)
            {
                result.CommonStaffs.Add(
                    commonStaffItem = new CommonStaffSerializable()
                {
                    FileType = FileType
                });
            }
            commonStaffItem.FileName    = FileName;
            commonStaffItem.FileProject = DestinationProject;
            commonStaffItem.FileDefaultProjectNameSpace = DefaultProjectNameSpace;
            if (string.IsNullOrEmpty(DestinationSubFolder))
            {
                commonStaffItem.FileFolder = DestinationFolder;
            }
            else
            {
                commonStaffItem.FileFolder = Path.Combine(DestinationFolder, DestinationSubFolder);
            }


            if (UIFormProperties != null)
            {
                result.UIFormProperties = new List <ModelViewUIFormPropertySerializable>();
                foreach (ModelViewUIFormProperty srcProp in UIFormProperties)
                {
                    result.UIFormProperties.Add(srcProp.ModelViewUIFormPropertyAssignTo(new ModelViewUIFormPropertySerializable()));
                }
            }
            if (result.UIFormProperties == null)
            {
                result.UIFormProperties = new List <ModelViewUIFormPropertySerializable>();
            }


            if (UIListProperties != null)
            {
                result.UIListProperties = new List <ModelViewUIListPropertySerializable>();
                foreach (ModelViewUIListProperty srcProp in UIListProperties)
                {
                    result.UIListProperties.Add(srcProp.ModelViewUIListPropertyAssignTo(new ModelViewUIListPropertySerializable()));
                }
            }
            if (result.UIListProperties == null)
            {
                result.UIListProperties = new List <ModelViewUIListPropertySerializable>();
            }

            return(result);
        }