Example #1
0
 public Task <IActionResult> GetAsync(
     [FromServices] GetPageCommand command,
     [FromQuery] PageOptionFilter pageOptionFilter,
     CancellationToken cancellationToken) => command.ExecuteAsync(pageOptionFilter, cancellationToken);
 public async Task <IActionResult> GetPage([FromBody] GetPageCommand command)
 {
     try
     {
         string viewPath = "Views/";
         string title    = "Home";
         try
         {
             if (String.IsNullOrWhiteSpace(command.PathName) || command.PathName.Equals("/"))
             {
                 viewPath = "Views/Home/Index";
             }
             else if (command.PathName.Split('/', StringSplitOptions.RemoveEmptyEntries).Count() == 1)
             {
                 viewPath = $"Views/{command.PathName.Replace("/","")}/Index";
             }
             else
             {
                 var parts = command.PathName.Split('/', StringSplitOptions.RemoveEmptyEntries);
                 viewPath = $"Views/{parts[0]}/{parts[1]}";
             }
         }
         catch (Exception)
         {
             viewPath = "Views/Home/Index";
         }
         var     page     = LoadView(viewPath);
         dynamic jsonPage = JsonConvert.DeserializeObject <dynamic>(page);
         var     id       = jsonPage.layout;
         var     name     = jsonPage.content;
         if (!String.IsNullOrWhiteSpace((string)jsonPage.title))
         {
             title = jsonPage.title;
         }
         if (!String.IsNullOrWhiteSpace((string)jsonPage.layout))
         {
             page = LoadView((string)jsonPage.layout);
             if (jsonPage.content != null)
             {
                 var regexView    = new Regex(@"{\s*\""content\""\s*:\s*[\w-_""./]{1,}\s*\""\s*}");
                 var matchesViews = regexView.Matches(page);
                 foreach (var match in matchesViews)
                 {
                     page = page.Replace(match.ToString(), JsonConvert.SerializeObject(jsonPage.content));
                 }
             }
         }
         else if (!String.IsNullOrWhiteSpace(jsonPage.content))
         {
             page = JsonConvert.SerializeObject(jsonPage.content);
         }
         else if (!String.IsNullOrWhiteSpace(jsonPage.type))
         {
             page = JsonConvert.SerializeObject(jsonPage);
         }
         else
         {
             return(await Response(null, new List <Notification> {
                 new Notification("Page", "Página Mal Formatada")
             }));
         }
         page = LoadViews(page);
         page = LoadTemplates(page);
         dynamic a = JsonConvert.DeserializeObject(page);
         return(await Response(new { title = title, body = a }, null));
     }
     catch (Exception ex)
     {
         return(await Response(null, new List <Notification> {
             new Notification("Page", ex.Message)
         }));
     }
 }