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);
        }
 public FormStatistics Statistics([FromBody] FormViewRequest request)
 {
     return(this.statisticsProvider.GetFormStatistics(request.FormId,
                                                      request.StartDate.HasValue ? request.StartDate.Value : DateTime.MinValue,
                                                      request.EndDate.HasValue ? request.EndDate.Value : DateTime.MaxValue));
 }