Ejemplo n.º 1
0
        private static async System.Threading.Tasks.Task ExportAndUploadToDriveAsync <T>(List <T> dataList, List <IList <Object> > writeValues, string extension, string contentType, string fileName, bool includeHeaders = true)
        {
            //Generate and Save Excel File locally
            Logger.Info("Generating Excel File");
            List <List <T> > splittedData = ExportToExcelHelper.Split(dataList, 1000000);
            List <byte>      data         = new List <byte>();

            foreach (var dt in splittedData)
            {
                var r = ExportToExcelHelper.ExportToExcel(dt, extension, includeHeaders).ToList();
                data.AddRange(r);
            }

            Logger.Info("Saving Excel File in ReportFiles folder");
            string filePath = GetFilePath(fileName);

            using (var stream = new FileStream(filePath, FileMode.Append))
            {
                stream.Write(data.ToArray(), 0, data.ToArray().Length);
            }

            //System.IO.File.WriteAllBytes(filePath, data.ToArray());

            //Google Drive Folder Name
            string       folderName = _iconfiguration.GetSection("GoogleDriveFolderName").Value;
            IList <File> folders    = GetFolders();

            var folder = folders.FirstOrDefault(a => a.Name == folderName);

            if (folder == null)
            {
                folder = service.CreateFolder(folderName);
            }

            if (folder != null)
            {
                Logger.Info($"Folder: {folder.Name} Found");
                var fs = GetFilesByName(Path.GetFileNameWithoutExtension(fileName));
                if (fs.Count == 1)
                {
                    //UpdateFile(filePath, folder, fs.FirstOrDefault(), contentType);
                    await UpdateFileUsingGoogleSheetAsync <T>(fs.FirstOrDefault(), writeValues, Path.GetFileNameWithoutExtension(fileName));
                }
                else
                {
                    CreateFile(filePath, folder, contentType);
                }
            }
        }