Beispiel #1
0
    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
        };
    }
Beispiel #2
0
        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);
        }
Beispiel #3
0
    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 }));
    }