Exemplo n.º 1
0
        public string ConsultaToCSV(IPrincipal user, string indexName, IList <string> selectFilter = null, IEnumerable <Tuple <string, string, string> > filterFilter = null, long numberEntries = 1000, bool allEntries = false)
        {
            try
            {
                int from = 0;
                int size = 10000;

                var tempDownloadFolderUser = Path.Combine(Configuration.DefaultTempFolder, user.Identity.Name, "downloadTemp");
                Directory.CreateDirectory(tempDownloadFolderUser);

                var fileName = Path.Combine(tempDownloadFolderUser, $"{indexName}_{DateTime.Now.ToString("yyyyMMddHHmmss")}.csv");

                if (allEntries)
                {
                    numberEntries = _unitOfWork.TotalDocuments(indexName: indexName);
                }

                do
                {
                    using (var export = new CsvExport())
                    {
                        var result = this._unitOfWork.MatchAll(indexName: indexName, selectFilter: selectFilter, filterFilter: filterFilter, from: from, size: size);

                        foreach (var item in result)
                        {
                            export.AddRow();

                            foreach (var key in item.Keys)
                            {
                                export[key] = item[key];
                            }
                        }

                        result.Clear();

                        if (from == 0)
                        {
                            export.ExportToFile(fileName, includeHeader: true);
                        }
                        else
                        {
                            export.AddLinesToFile(fileName);
                        }
                    }

                    from += size;

                    if ((from + size) >= numberEntries)
                    {
                        size = (int)(numberEntries - from);
                    }
                }while (from < numberEntries);

                return(fileName);
            }
            catch (Exception erro)
            {
                throw erro;
            }
        }