public FormsViewerResponse Detail([FromBody] FormViewRequest request)
        {
            var result = this.dataProvider.GetEntries(request.FormId, request.StartDate, request.EndDate);

            var response = new FormsViewerResponse
            {
                Headers = result.SelectMany(t => t.Fields).Select(t => t.FieldName).Distinct().ToList(),
                Entries = new List <List <string> >()
            };

            foreach (var entry in result)
            {
                List <string> rowData = new List <string>();

                // Add to the first place the created date.
                rowData.Add(entry.Created.ToString());

                foreach (var header in response.Headers)
                {
                    var    field = entry.Fields.FirstOrDefault(t => t.FieldName == header);
                    string value = string.Empty;
                    if (field == null)
                    {
                        value = "-";
                    }
                    else if (field.ValueType.Equals("System.Collections.Generic.List`1[Sitecore.ExperienceForms.Data.Entities.StoredFileInfo]", StringComparison.OrdinalIgnoreCase))
                    {
                        if (field.Value.Contains(','))
                        {
                            foreach (var file in field.Value.Split(',').Where(t => !string.IsNullOrEmpty(t)))
                            {
                                value += string.Format("<a target=\"_blank\" href=\"{0}\">Download</a><br>", Sitecore.Web.WebUtil.GetFullUrl(string.Format(FileDownloadPattern, file)));
                            }
                        }
                        else
                        {
                            value = string.Format("<a target=\"_blank\" href=\"{0}\">Download</a>", Sitecore.Web.WebUtil.GetFullUrl(string.Format(FileDownloadPattern, field.Value)));
                        }
                    }
                    else
                    {
                        value = field.Value;
                    }

                    rowData.Add(value);
                }

                response.Entries.Add(rowData);
            }

            // Insert created header
            response.Headers.Insert(0, "Created");

            return(response);
        }
        private string CreateReport(FormViewExportRequest request, List <FormEntry> entries)
        {
            string result = string.Empty;

            var response = new FormsViewerResponse();

            response.Entries = new List <List <string> >();
            foreach (var entry in entries)
            {
                List <string> rowData = new List <string>();
                foreach (var header in request.Fields)
                {
                    var    field = entry.Fields.FirstOrDefault(t => t.FieldName == header);
                    string value = string.Empty;
                    if (field == null)
                    {
                        if (header.Equals("Created"))
                        {
                            value = entry.Created.ToString();
                        }
                        else
                        {
                            value = "-";
                        }
                    }
                    else if (field.ValueType.Equals("System.Collections.Generic.List`1[Sitecore.ExperienceForms.Data.Entities.StoredFileInfo]", StringComparison.OrdinalIgnoreCase))
                    {
                        if (field.Value.Contains(','))
                        {
                            foreach (var file in field.Value.Split(',').Where(t => !string.IsNullOrEmpty(t)))
                            {
                                value += string.Format("<a target=\"_blank\" href=\"{0}\">Download</a><br>", Sitecore.Web.WebUtil.GetFullUrl(string.Format(FileDownloadPattern, file)));
                            }
                        }
                        else
                        {
                            value = string.Format("<a target=\"_blank\" href=\"{0}\">Download</a>", Sitecore.Web.WebUtil.GetFullUrl(string.Format(FileDownloadPattern, field.Value)));
                        }
                    }
                    else
                    {
                        value = field.Value;
                    }

                    rowData.Add(value);
                }

                response.Entries.Add(rowData);
            }

            if (request.ExportOption.Equals("xml", StringComparison.OrdinalIgnoreCase))
            {
                return(exportService.ExportToXml(request, response.Entries.ToList()));
            }
            else if (request.ExportOption.Equals("csv", StringComparison.OrdinalIgnoreCase))
            {
                return(exportService.ExportToCsv(request, entries.ToList()));
            }

            return(result);
        }