Example #1
0
        private static IEnumerable <string> GetAllowedFileTypes(BulkFileType type)
        {
            if (type == BulkFileType.SupportingDocument)
            {
                return(new[]
                {
                    MimeTypes.Bitmap,
                    MimeTypes.Gif,
                    MimeTypes.Jpeg,
                    MimeTypes.MSExcel,
                    MimeTypes.MSExcelXml,
                    MimeTypes.MSPowerPoint,
                    MimeTypes.MSPowerPointXml,
                    MimeTypes.MSWord,
                    MimeTypes.MSWordXml,
                    MimeTypes.OpenOfficePresentation,
                    MimeTypes.OpenOfficeSpreadsheet,
                    MimeTypes.OpenOfficeText,
                    MimeTypes.Pdf,
                    MimeTypes.Png
                });
            }

            return(new[]
            {
                ".xlsx",
                ".xls",
                ".csv"
            });
        }
Example #2
0
 private static void PadMissingColumn(DataTable dataTable, BulkFileType type)
 {
     if (type == BulkFileType.ReceiptRecovery &&
         dataTable != null &&
         dataTable.Columns.Count == MaxColumns - 1)
     {
         dataTable.Columns.Add("RecoveredDisposed", typeof(string));
     }
 }
Example #3
0
        private static RuleResult <BulkFileRules> GetFileTypesRule(HttpPostedFileBase file, BulkFileType type)
        {
            var allowedTypes = GetAllowedFileTypes(type);

            // For data uploads, it's diificult to identify CSV files correctly using Content Type,
            // hence opting for the filaname extention.
            var fileType = type == BulkFileType.SupportingDocument
                ? file.ContentType
                : Path.GetExtension(file.FileName);

            var result = allowedTypes.Contains(fileType) ? MessageLevel.Success : MessageLevel.Error;

            var rule = type == BulkFileType.SupportingDocument
                ? BulkFileRules.SupportingDocumentFileType
                : BulkFileRules.DataFileType;

            return(new RuleResult <BulkFileRules>(rule, result));
        }
Example #4
0
        public async Task <BulkFileRulesSummary> GetFileRulesSummary(HttpPostedFileBase file, BulkFileType type, string token)
        {
            var rules = new List <RuleResult <BulkFileRules> >
            {
                GetFileTypesRule(file, type),
                GetFileSizeRule(file),
                await GetVirusScan(file, token)
            };

            if (type != BulkFileType.SupportingDocument &&
                // Only run this rule if all rules above have passed.
                rules.All(r => r.MessageLevel == MessageLevel.Success))
            {
                rules.Add(await GetFileParse(file, type, token));

                if (DataTable != null && DataTable.Rows.Count == 0)
                {
                    rules.Add(new RuleResult <BulkFileRules>(BulkFileRules.EmptyData, MessageLevel.Error));
                }
            }

            return(new BulkFileRulesSummary()
            {
                FileRulesResults = rules,
                DataTable = DataTable,
                FileBytes = FileBytes
            });
        }
Example #5
0
        private async Task <RuleResult <BulkFileRules> > GetFileParse(HttpPostedFileBase file, BulkFileType type, string token)
        {
            MessageLevel result;

            try
            {
                var extension = Path.GetExtension(file.FileName);

                var isCsv = extension == ".csv";

                var dataTable = await fileReader.GetFirstDataTable(file, isCsv, !isCsv, token);

                PadMissingColumn(dataTable, type);

                result = IsDataTableValid(dataTable) ? MessageLevel.Success : MessageLevel.Error;

                DataTable = dataTable;
            }
            catch (Exception)
            {
                result = MessageLevel.Error;
            }

            return(new RuleResult <BulkFileRules>(BulkFileRules.FileParse, result));
        }