private void CreateViewFiles(AddNewBusinessModel parameter, ProjectItem folder)
 {
     foreach (var viewFileViewModel in parameter.ViewFiles)
     {
         var model = new ViewFileModel
         {
             BusinessName = parameter.BusinessName,
             Namespace    = GetNamespace(parameter.ViewFolder),
             FileName     = viewFileViewModel.FileName,
             IsPopup      = viewFileViewModel.IsPopup,
             ViewFolder   = parameter.ViewFolder,
             ViewFiles    = parameter.ViewFiles
         };
         foreach (var ext in new[] { ".cshtml", ".js" })
         {
             var fileName = viewFileViewModel.FileName + ext;
             _statusBar.Progress(true, $"Generating view file: {fileName}", _steps++, _totalSteps);
             if (FindProjectItem(folder, fileName, ItemType.PhysicalFile) != null)
             {
                 continue;
             }
             string content = Engine.Razor.RunCompile(ext == ".cshtml" ? "CshtmlTemplate" : "JsTemplate", typeof(ViewFileModel), model);
             CreateAndAddFile(folder, fileName, content);
         }
     }
 }
Exemple #2
0
 public Task <string> Render(ViewFileModel context)
 {
     using (var serviceScope = _scopeFactory.CreateScope())
     {
         var helper = serviceScope.ServiceProvider.GetRequiredService <OfficialRazorViewToStringRenderer>();
         return(helper.RenderViewToStringAsync(context.TemplateFolderNames, context));
     }
 }
Exemple #3
0
        public async Task <ActionResult> Get()
        {
            ViewFileModel viewFileModel = new ViewFileModel()
            {
                TemplateFolderNames = "/Application/Dto/ListDtoTemplate.cshtml",
                CreateTime          = DateTime.Now,
                EmailAddress        = Project.EmailAddress,
                Author          = Project.Author,
                TableName       = "WebInfos",
                ProjectName     = "SJNScaffolding",
                IdType          = IdType.Long,
                TemplateFolder  = @"..\..\..\SJNScaffolding.WPF\Templates",
                OutputFolder    = Project.OutputPath,
                TypeColumnNames = TestHelper.GetColunmsList()
            };

            foreach (var itemFolder in new[] { "Views", "JS" })
            {
                foreach (var templateName in new[] { "IndexTemplate", "CreateOrUpdateModalTemplate" })
                {
                    viewFileModel.TemplateFolderNames = "/Views/" + itemFolder + "-" + templateName + ".cshtml";
                    string content = await _templateEngine.Render(viewFileModel);

                    string fileName = templateName.Replace("JS", "").Replace("Template", ".").Replace("Views", ".");

                    if (itemFolder.Equals("JS"))
                    {
                        fileName += "js";
                    }
                    else
                    {
                        fileName += "cshtml";
                    }

                    //  FileHelper.CreateFile(_baseUrl + _parameter.ViewFolder, fileName, content);
                }
            }
            //await _addNewBussinessHelper.Execute(new ViewFileModel()
            //{
            //    TemplateFolderNames = "/Application/Dto/ListDtoTemplate.cshtml",
            //    CreateTime = DateTime.Now,
            //    EmailAddress = _project.EmailAddress,
            //    Author = _project.Author,
            //    TableName = "WebInfos",
            //    ProjectName = "SJNScaffolding",
            //    IdType = IdType.Long,
            //    TemplateFolder = @"..\..\..\SJNScaffolding.WPF\Templates",
            //    OutputFolder = _project.OutputPath,
            //    TypeColumnNames = TestHelper.GetColunmsList()
            //});
            return(Content("OJBK"));
        }
        public async Task <IActionResult> ReadBoard(int BoardType, int BoardId)
        {
            using (var session = _accountContext.SessionFactory.OpenSession())
                using (var Trans = session.BeginTransaction())
                {
                    AttachableViewBoardModel model = new AttachableViewBoardModel();
                    model.BoardType = BoardType;
                    model.Username  = HttpContext.User.Identity.Name;
                    var attachFiles = await session.CreateCriteria <AttachFileRepositary>()
                                      .Add(Restrictions.Eq("Boardid", BoardId) && Restrictions.Eq("Grouptype", BoardType)).ListAsync <AttachFileRepositary>();

                    List <ViewFileModel> attachViewFiles = new List <ViewFileModel>();
                    foreach (AttachFileRepositary file in attachFiles)
                    {
                        ViewFileModel fileModel = new ViewFileModel()
                        {
                            FileId = file.Id, Filename = file.Filename, Filetype = file.Contentstype, KBSize = file.Contents.Length / 1024
                        };
                        attachViewFiles.Add(fileModel);
                    }

                    switch (BoardType)
                    {
                    case 0: // 공지사항
                        NoticeBoard board = await session.CreateCriteria <NoticeBoard>().Add(Restrictions.Eq("ID", BoardId)).UniqueResultAsync <NoticeBoard>();

                        if (board == null)
                        {
                            return(BadRequest("존재하지 않는 게시글입니다"));
                        }
                        //UserAccount account = await session.CreateCriteria<UserAccount>().Add(Restrictions.Eq("ID", BoardId)).UniqueResultAsync<UserAccount>();
                        model.Title    = board.Title;
                        model.Contents = board.Contents;
                        board.ViewCount++;
                        model.Createts       = board.Createts;
                        model.ViewCount      = board.ViewCount;
                        model.VIewFileModels = attachViewFiles.ToArray();
                        await session.UpdateAsync(board);

                        await Trans.CommitAsync();

                        break;

                    default:
                        return(BadRequest("없는 게시판의 글입니다"));
                    }
                    return(Ok(model));
                }
        }
        public async Task Build(List <TypeColumnName> typeColumnNames)
        {
            try
            {
                Template[] templates   = _project.BuildTasks.Templates;
                bool       isWebUpload = typeColumnNames.Exists(u => u.WebuploadColunm.IsWebUpload);

                foreach (var buildKv in templates)
                {
                    if (buildKv.IsExcute == false)
                    {
                        continue;
                    }
                    //此模板是ViewModel,只有有上传控件时才生成模板
                    if (buildKv.Key == "/ViewModel/EntityViewModel.cshtml" && isWebUpload == false)
                    {
                        continue;
                    }

                    var output = buildKv.Output;

                    var addViewModel = new ViewFileModel()
                    {
                        TemplateFolderNames = buildKv.Key,
                        CreateTime          = DateTime.Now,
                        EmailAddress        = _project.EmailAddress,
                        Author          = _project.Author,
                        TableName       = _project.TableName,
                        ProjectName     = _project.ProjectName,
                        IdType          = _project.IdType,
                        OutputFolder    = _project.OutputPath,
                        TypeColumnNames = typeColumnNames
                    };

                    string content = await _templateEngine.Render(addViewModel);

                    var    fileName = Handlebars.Compile(buildKv.Output.Name)(addViewModel) ?? "";
                    string folder   = Handlebars.Compile(buildKv.Output.Folder)(addViewModel) ?? "";

                    FileHelper.CreateFile(_project.OutputPath + folder, fileName, content);
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                throw;
            }
        }
        public async Task Execute(ViewFileModel viewFileModel)
        {
            this._parameter     = new AddNewBussinessModel(viewFileModel.ProjectName, viewFileModel.TableName, viewFileModel.TemplateFolder);
            this._viewFileModel = viewFileModel;
            this._baseUrl       = viewFileModel.OutputFolder;

            await CreateServiceInterfaceFile();
            await CreateServiceFile();
            await CreateDtoFiles();
            await CreateViewJsFiles();
            await CreateContorlFiles();

            if (_viewFileModel.WebUploadList.Any())
            {
                await CreateViewModel();
            }

            await CreateCoreEntity();
        }
Exemple #7
0
        public void CreateService()
        {
            ViewFileModel vf = new ViewFileModel
            {
                CreateTime      = DateTime.Now,
                EmailAddress    = "*****@*****.**",
                Author          = "IGeekFan",
                TableName       = "WebInfos",
                ProjectName     = "SJNScaffolding",
                TypeColumnNames = TestHelper.GetColunmsList(),
                IdType          = IdType.Long,
                TemplateFolder  = @"..\..\..\SJNScaffolding.WPF\Templates",
                OutputFolder    = @"..\..\..\SJNScaffolding.WPF\Outputs"
            };

            var bussiness = new AddNewBussinessWpfHelper(vf);

            bussiness.Execute();
        }
Exemple #8
0
        public async Task <string> Build(List <TypeColumnName> typeColumnNames, bool download = false)
        {
            try
            {
                Template[] templates   = _project.BuildTasks.Templates;
                bool       isWebUpload = typeColumnNames.Exists(u => u.WebuploadColunm.IsWebUpload);

                foreach (var buildKv in templates)
                {
                    if (buildKv.IsExcute == false)
                    {
                        continue;
                    }
                    //此模板是ViewModel,只有有上传控件时才生成模板
                    if (buildKv.Key == "/ViewModel/EntityViewModel.cshtml" && isWebUpload == false)
                    {
                        continue;
                    }

                    var addViewModel = new ViewFileModel()
                    {
                        TemplateFolderNames = buildKv.Key,
                        CreateTime          = DateTime.Now,
                        EmailAddress        = _project.EmailAddress,
                        Author          = _project.Author,
                        TableName       = _project.TableName,
                        ProjectName     = _project.ProjectName,
                        IdType          = _project.IdType,
                        OutputFolder    = _project.OutputPath,
                        TypeColumnNames = typeColumnNames
                    };

                    string content = await _templateEngine.Render(addViewModel);

                    var    fileName = Handlebars.Compile(buildKv.Output.Name)(addViewModel) ?? "";
                    string folder   = Handlebars.Compile(buildKv.Output.Folder)(addViewModel) ?? "";

                    FileHelper.CreateFile(_project.OutputPath + folder, fileName, content);
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                _logger.LogError(e.Message);
                throw;
            }

            if (download)
            {
                string outputUrl = FileHelper.GetCompressDirPath(_project.OutputPath, new List <string>()
                {
                    _project.OutputPath
                });

                string relaName   = outputUrl.Substring(outputUrl.LastIndexOf("/", StringComparison.Ordinal) + 1);
                string path       = Directory.GetCurrentDirectory() + "/wwwroot/file/" + relaName;
                byte[] fileBuffer = FileHelper.File2Bytes(outputUrl);
                FileHelper.Bytes2File(fileBuffer, path);
                FileHelper.DeletePath(_project.OutputPath);
                return("/file/" + relaName);
            }

            return(string.Empty);
        }
        private void Button_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                //表中字段名
                List <string> columnsList = this.Columns.Text.Split(new string[] { "\r\n" }, StringSplitOptions.None).Where(s => !string.IsNullOrEmpty(s)).Select(u => u.Trim()).ToList();
                //中文名
                List <string> columnsNameList = this.ColumnsName.Text.Split(new string[] { "\r\n" }, StringSplitOptions.None).Where(s => !string.IsNullOrEmpty(s)).Select(u => u.Trim()).ToList();
                //字段填充到HTML中的内容
                List <string> columnsHtmlList = this.ColumnsHtml.Text.Split(new string[] { "\r\n" }, StringSplitOptions.None).Select(u => u.Trim()).ToList();
                //字段类型
                List <string> columnsTypeList = this.ColumnsType.Text.Split(new string[] { "\r\n" }, StringSplitOptions.None).Where(s => !string.IsNullOrEmpty(s)).Select(
                    u =>
                {
                    string conlumsType = u.Trim().ToLower();
                    //将传入的参数按程序中的类型进行转换
                    return(TypeHelper.TypeChangeDictionary.FirstOrDefault(r => conlumsType.Contains(r.Key)).Value);
                }).ToList();

                if (columnsList.Count != columnsTypeList.Count || columnsList.Count != columnsNameList.Count)
                {
                    throw new ArgumentException("字段之间个数不匹配!");
                }
                //生成每个字段对应的中文名-类型-以及是否必填,是否Combobox等内容
                List <TypeColumnName> typeNameList = new List <TypeColumnName>();
                for (int i = 0; i < columnsList.Count; i++)
                {
                    if (columnsList[i].Contains("$") && columnsList[i].Contains("#"))
                    {
                        throw new ArgumentException("无法同时上传图片和文件!");
                    }
                    string columnName = columnsList[i].Replace("*", "").Replace("#", "").Replace("$", "").Replace("%", "").Replace("@", "");
                    //*是必填
                    //#是上传图片
                    //$是上传文件
                    //%是跨行
                    //@是下拉框
                    WebUploadColunm webuploadColunm;
                    if (columnsList[i].Contains("#"))
                    {
                        webuploadColunm = new WebUploadColunm(true, columnName, UploadType.Img);
                    }
                    else if (columnsList[i].Contains("$"))
                    {
                        webuploadColunm = new WebUploadColunm(true, columnName, UploadType.File);
                    }
                    else
                    {
                        webuploadColunm = new WebUploadColunm();
                    }

                    typeNameList.Add(new TypeColumnName()
                    {
                        ColumnName = columnName,
                        AttrType   = columnsTypeList[i],
                        Comments   = columnsNameList[i],
                        IsRequired = columnsList[i].Contains("*") ? "1" : "0",
                        DataLength = 100,
                        IsCombobox = columnsList[i].Contains("@") ? true : false,
                        IsColspan3 = columnsList[i].Contains("%") ? "1" : "0"
                    });
                }

                ViewFileModel vf = new ViewFileModel
                {
                    CreateTime      = DateTime.Now,
                    EmailAddress    = this.EmailAddress.Text,
                    Author          = this.UserName.Text,
                    TableName       = this.TableName.Text,
                    ProjectName     = this.ProjectName.Text,
                    TypeColumnNames = typeNameList,
                    IdType          = _idType,
                    TemplateFolder  = @"..\..\Templates",
                    OutputFolder    = outputsFolder.Text ?? @"..\..\Outputs"
                };

                var bussiness = new AddNewBussinessWpfHelper(vf);

                bussiness.Execute();

                MessageBox.Show("操作成功!");
            }
            catch (Exception exception)
            {
                MessageBox.Show(exception.Message);
            }
        }
 public AddNewBussinessWpfHelper(ViewFileModel viewFileModel)
 {
     this._parameter     = new AddNewBussinessModel(viewFileModel.ProjectName, viewFileModel.TableName, viewFileModel.TemplateFolder);
     this._viewFileModel = viewFileModel;
     _baseUrl            = viewFileModel.OutputFolder;
 }