public async Task OnGet(Guid id) { // TODO: Error handling Project = (await _projectTbl.Get(x => x.Id.Equals(id), null, $"{nameof(ProjectTbl.Templates)}, {nameof(ProjectTbl.Templates)}.{nameof(TemplateTbl.Versions)}").ConfigureAwait(false)).Single(); if (Project == null) { throw new NullReferenceException(nameof(Project)); } Project.Templates = Project.Templates?.OrderBy(x => x.Name).ToList(); CreateTemplate = new TemplateTbl { ProjectId = id }; UpdateTemplateName = new UpdateTemplateNameModel { ProjectId = id }; DeleteTemplate = new DeleteTemplateModel { ProjectId = id }; MarkAsActive = new MarkAsActiveModel { ProjectId = id }; DuplicateTemplateVersion = new DuplicateTemplateVersionModel { ProjectId = id }; DeleteTemplateVersion = new DeleteTemplateVersionModel { ProjectId = id }; }
internal async Task <(ValidationError error, TemplateField field)> SetRandomTableField(TemplateField field) { ValidationError err = ValidationError.None; try { var match = validationRegexs[field.FieldType].Match(field.Value); if (!match.Success) { field.Valid = false; return(ValidationError.InvalidTag, field); } var table = match.Groups[1].Value.Trim(); var json = new TemplateTbl { TableName = table }; // if table uses variables don't check the db if (table.Contains('{') || table.Contains('}')) { var(valid, vars) = ParseVariableNames(table); err = valid ? ValidationError.None : ValidationError.InvalidTag; field.Valid = valid; json.Variables = vars; } else { var result = await randomTableService.TableExists(table); if (!result.Result) { field.Valid = false; err = ValidationError.TableDoesNotExist; } } field.TemplateJson = JsonConvert.SerializeObject(json); field.Valid = true; } catch (Exception ex) { Log.Error($"Exception parsing {field.Value}. ex:{ex.Message}"); Log.Debug(ex.StackTrace); field.Valid = false; err = ValidationError.InvalidTag; } return(err, field); }
public async Task <IActionResult> OnPostCreateTemplate() { // TODO: Error handling TemplateTbl result = await _templateTbl.Add(CreateTemplate).ConfigureAwait(false); await _projectTbl.UpdateFromQuery(x => x.Id.Equals(MarkAsActive.ProjectId), _ => new ProjectTbl { DateModified = DateTime.Now }); TempData["toastStatus"] = "success"; TempData["toastMessage"] = $"Template created - {result.Name}"; TempData["scrollToId"] = $"template-{result.Id}"; return(RedirectToPage("/Project/Details", new { id = CreateTemplate.ProjectId })); }