public ActionResult CreateSimple3(Guid?fileId) { var email = Request?.RequestContext?.HttpContext?.User?.Identity?.Name; if (Request.IsAuthenticated == false) { //https://www.hlidacstatu.cz/account/Login?returnUrl=%2F%3Frnd%3D0036bd9be9bc42d4bdf449492968846e return(RedirectToAction("Login", "Account", new { returnUrl = this.Request.Url.PathAndQuery })); } if (!fileId.HasValue) { return(RedirectToAction("CreateSimple")); } var uTmp = new Lib.IO.UploadedTmpFile(); var path = uTmp.GetFullPath(fileId.ToString(), fileId.ToString() + ".csv"); var pathJson = uTmp.GetFullPath(fileId.ToString(), fileId.ToString() + ".json"); if (!System.IO.File.Exists(path)) { return(RedirectToAction("CreateSimple")); } if (!System.IO.File.Exists(pathJson)) { return(RedirectToAction("CreateSimple")); } CreateSimpleModel model = CreateSimpleModel.Load(pathJson); if (model.NumOfRows == 0) { using (System.IO.StreamReader r = new System.IO.StreamReader(path)) { var csv = new CsvHelper.CsvReader(r, new CsvHelper.Configuration.CsvConfiguration(Util.Consts.csCulture) { HasHeaderRecord = true, Delimiter = model.GetValidDelimiter() }); csv.Read(); csv.ReadHeader(); while (csv.Read()) { model.NumOfRows++; } } } model.Save(pathJson); return(View(model)); }
public ActionResult CreateSimple2(CreateSimpleModel model, FormCollection form) { var email = Request?.RequestContext?.HttpContext?.User?.Identity?.Name; if (Request.IsAuthenticated == false) { return(RedirectToAction("Login", "Account", new { returnUrl = this.Request.Url.PathAndQuery })); } var uTmp = new Lib.IO.UploadedTmpFile(); var path = uTmp.GetFullPath(model.FileId.ToString(), model.FileId.ToString() + ".csv"); var pathModels = uTmp.GetFullPath(model.FileId.ToString(), model.FileId.ToString() + ".json"); model.Headers = (form["sheaders"] ?? "").Split('|'); //check Keycolumn List <CreateSimpleModel.Column> cols = new List <CreateSimpleModel.Column>(); int columns = model.Headers.Length; for (int i = 0; i < columns; i++) { string name = model.Headers[i]; if (form[$"include_{i}"] == "1") { cols.Add( new CreateSimpleModel.Column() { Name = name, NiceName = form[$"nicename_{i}"], ValType = form[$"typ_{i}"], ShowSearchFormat = form[$"show_search_{i}"] == "--" ? "string" : form[$"show_search_{i}"], ShowDetailFormat = form[$"show_detail_{i}"] == "--" ? "string" : form[$"show_detail_{i}"], } ); } } if (string.IsNullOrEmpty(model.KeyColumn) && !cols.Any(m => m.Name.ToLower() == "id")) { cols.Add(new CreateSimpleModel.Column() { Name = "id", NiceName = "Id", ValType = "string", ShowSearchFormat = "show", ShowDetailFormat = "hide", }); } model.Columns = cols.ToArray(); model.Save(pathModels); bool addIcoCol = false; Dictionary <string, Type> properties = new Dictionary <string, Type>(); //properties.Add("id", typeof(string)); foreach (var c in model.Columns) { switch (c.ValType) { case "number": properties.Add(c.NormalizedName(), typeof(Nullable <decimal>)); break; case "datetime": properties.Add(c.NormalizedName(), typeof(Nullable <DateTime>)); break; case "url": case "ico": default: properties.Add(c.NormalizedName(), typeof(string)); break; } } if (addIcoCol && !model.Columns.Any(m => m.NormalizedName() == "ico")) { properties.Add("ICO", typeof(string)); } if (!properties.Any(m => m.Key.ToLower() == "id")) { properties.Add("id", typeof(string)); } RuntimeClassBuilder rcb = new RuntimeClassBuilder(properties); var rcbObj = rcb.CreateObject(); Newtonsoft.Json.Schema.Generation.JSchemaGenerator jsonGen = new Newtonsoft.Json.Schema.Generation.JSchemaGenerator(); jsonGen.DefaultRequired = Newtonsoft.Json.Required.Default; var schema = jsonGen.Generate(rcbObj.GetType()); //JSON schema //create registration Registration reg = new Registration(); reg.allowWriteAccess = false; reg.betaversion = true; reg.jsonSchema = schema.ToString(); reg.name = model.Name; reg.NormalizeShortName(); reg.createdBy = email; HlidacStatu.Api.Dataset.Connector.ClassicTemplate.ClassicSearchResultTemplate search = new Api.Dataset.Connector.ClassicTemplate.ClassicSearchResultTemplate(); HlidacStatu.Api.Dataset.Connector.ClassicTemplate.ClassicDetailTemplate detail = new Api.Dataset.Connector.ClassicTemplate.ClassicDetailTemplate(); search.AddColumn("Detail", "<a href=\"{{ fn_DatasetItemUrl item.id }}\">Detail</a>"); foreach (var col in model.Columns) { if (col.NormalizedName().ToLower() != "id") { if (col.ShowSearchFormat == "price") { search.AddColumn(col.NiceName, "{{ fn_FormatPrice item." + col.NormalizedName() + " }}"); } else if (col.ShowSearchFormat == "show") { if (col.ValType == "number") { search.AddColumn(col.NiceName, "{{ fn_FormatNumber item." + col.NormalizedName() + " }}"); } else if (col.ValType == "datetime") { search.AddColumn(col.NiceName, "{{ fn_FormatDate item." + col.NormalizedName() + " }}"); } else if (col.ValType == "ico") { search.AddColumn(col.NiceName, "{{ fn_RenderCompanyWithLink item." + col.NormalizedName() + " }}"); } else if (col.ValType == "url") { search.AddColumn(col.NiceName, "<a href='{{ item." + col.NormalizedName() + " }}' target='_blank'>Odkaz</a>"); } else { search.AddColumn(col.NiceName, "{{ item." + col.NormalizedName() + " }}"); } } } if (col.ShowDetailFormat == "price") { detail.AddColumn(col.NiceName, "{{ fn_FormatPrice item." + col.NormalizedName() + " }}"); } else if (col.ShowDetailFormat == "show") { if (col.ValType == "number") { detail.AddColumn(col.NiceName, "{{ fn_FormatNumber item." + col.NormalizedName() + " }}"); } else if (col.ValType == "datetime") { detail.AddColumn(col.NiceName, "{{ fn_FormatDate item." + col.NormalizedName() + " }}"); } else if (col.ValType == "ico") { detail.AddColumn(col.NiceName, "{{ fn_RenderCompanyWithLink item." + col.NormalizedName() + " }}"); } else if (col.ValType == "url") { detail.AddColumn(col.NiceName, "<a href='{{ item." + col.NormalizedName() + " }}' target='_blank'>Odkaz</a>"); } else { detail.AddColumn(col.NiceName, "{{ item." + col.NormalizedName() + " }}"); } } } reg.detailTemplate = new Registration.Template() { body = detail.Body }; reg.searchResultTemplate = new Registration.Template() { body = search.Body }; if (DataSet.ExistsDataset(reg.datasetId)) { reg.datasetId = reg.datasetId + "-" + Devmasters.TextUtil.GenRandomString(5); } datasetIndexStatCache.Invalidate(); var status = DataSet.Api.Create(reg, email); if (status.valid == false) { if (DataSet.ExistsDataset((status.value?.ToString() ?? ""))) { DataSetDB.Instance.DeleteRegistration(status.value?.ToString(), email); } ViewBag.ApiResponseError = status; return(View(model)); } model.DatasetId = ((DataSet)status.value).DatasetId; model.Save(pathModels); return(RedirectToAction("createSimple3", model)); }