Пример #1
0
        public async Task <List <SmsMessage> > ParseCsvFileAsync(string title, IFormFile file, bool headersExistanceMarker)
        {
            var csvParser     = ParserFactory.BuildCsvParser();
            var tempDir       = _configuration.GetSection("Storage")["TempDir"];
            var fileStream    = file.OpenReadStream();
            var targetCsvPath = Path.Combine(tempDir, title);

            if (fileStream.CanRead && fileStream.Length > 0)
            {
                var buffer = new byte[fileStream.Length];
                await fileStream.ReadAsync(buffer);

                try
                {
                    File.WriteAllBytes(targetCsvPath, buffer);
                }
                catch (Exception e)
                {
                    Debug.WriteLine(e.Message);
                }

                _ = new List <SmsMessage>();
                var csvDocument = await csvParser.Parse(targetCsvPath, headersExistanceMarker);

                List <SmsMessage> messages;
                if (headersExistanceMarker)
                {
                    messages = ProcessCsvWithHeaders(csvDocument);
                }
                else
                {
                    messages = ProcessCsvWithoutHeaders(csvDocument);
                }
                return(messages);
            }
            else
            {
                Debug.WriteLine("Couldn't read from input file stream or it was 0 length stream!");
                return(new List <SmsMessage>());
            }
        }