private static void UploadFiles(CsvUploadViewModel upload, string uploadsFolder)
        {
            foreach (IFormFile file in upload.Files)
            {
                var uniqueFileName = $"{Guid.NewGuid().ToString()}_{file.FileName}";

                var filePath = Path.Combine(uploadsFolder, uniqueFileName);

                using (var stream = new FileStream(filePath, FileMode.Create))
                {
                    file.CopyTo(stream);
                }
            }
        }
        public async Task <IActionResult> Index(CsvUploadViewModel upload)
        {
            if (ModelState.IsValid)
            {
                var uploadsFolder = Path.Combine(_hostingEnvironment.WebRootPath, "upload");

                if (!Directory.Exists(uploadsFolder))
                {
                    Directory.CreateDirectory(uploadsFolder);
                }

                if (upload.Files != null && upload.Files.Count > 0)
                {
                    UploadFiles(upload, uploadsFolder);

                    try
                    {
                        _unitOfWork.BeginTransaction();

                        foreach (var dbEmail in _reader.Read(uploadsFolder))
                        {
                            await _dbEmailRepository.Save(dbEmail);
                        }

                        await _unitOfWork.Commit();
                    }
                    catch (Exception ex)
                    {
                        await _unitOfWork.Rollback();

                        throw ex;
                    }
                    finally
                    {
                        _unitOfWork.CloseTransaction();

                        ClearUploadsFolder(uploadsFolder);
                    }
                }
            }

            return(View());
        }