Example #1
0
        public string GETDocumentNameSheet(int sheetIndex)
        {
            string ObjectName                    = string.Empty;
            bool   containsAllHeader             = false;
            ExcelImportDocumentList DocumentList = ExcelImportDocumentList.GetExcelImportDocumentList();
            var sheet = ExcelWorkbook.Worksheets[sheetIndex];

            DataTable ExcelDataTable = getDataTable(sheet);

            foreach (var excelDoc in DocumentList)
            {
                if (excelDoc.ExcelImportDocumentHeaderList.Count == ExcelDataTable.Columns.Count)
                {
                    foreach (var excelHeader in excelDoc.ExcelImportDocumentHeaderList)
                    {
                        if (!ExcelDataTable.Columns.Contains(excelHeader.ExcelHeader))
                        {
                            break;
                        }
                        containsAllHeader = true;
                    }
                    if (!containsAllHeader)
                    {
                        continue;
                    }
                    ObjectName = excelDoc.DocumentName;
                    break;
                }
            }
            return(ObjectName);
        }
Example #2
0
        private bool HasValidLayOut()
        {
            ExcelImportDocumentList DocumentList = ExcelImportDocumentList.GetExcelImportDocumentList();
            bool ContainsAllHeader = false;

            foreach (var sheet in ExcelWorkbook.Worksheets)
            {
                ContainsAllHeader = false;
                DataTable ExcelDataTable = getDataTable(sheet);

                ExcelDataTableList.Add(ExcelDataTable);

                foreach (var excelDoc in DocumentList)
                {
                    if (excelDoc.ExcelImportDocumentHeaderList.Count == ExcelDataTable.Columns.Count)
                    {
                        foreach (var excelHeader in excelDoc.ExcelImportDocumentHeaderList)
                        {
                            if (!ExcelDataTable.Columns.Contains(excelHeader.ExcelHeader))
                            {
                                break;
                            }
                            ContainsAllHeader = true;
                        }
                        if (!ContainsAllHeader)
                        {
                            continue;
                        }
                        try
                        {
                            ExcelImportDocumentHeadersList.Add(excelDoc.ExcelImportDocumentHeaderList);
                            CSLAObjectTypeList.Add(Type.GetType(excelDoc.CSLAObject));
                        }
                        catch (TypeLoadException e)
                        {
                            addValidationMessage($"{e.GetType().Name}: Unable to load type {excelDoc.CSLAObject}", Csla.Rules.RuleSeverity.Error, DocumentEnums.MessageRelation.File);
                        }
                        break;
                    }
                }

                if (ContainsAllHeader == false)
                {
                    //Add Logic here to see if there is a way to chech closes macth
                    foreach (var excelDoc in DocumentList)
                    {
                        List <string> InvalidColumnList  = new List <string>();
                        List <string> ExpectedColumnList = new List <string>();
                        int           headercountdiff    = excelDoc.ExcelImportDocumentHeaderList.Count - ExcelDataTable.Columns.Count;

                        if (IsBetween(headercountdiff, -2, 2))
                        {
                            foreach (var excelHeader in excelDoc.ExcelImportDocumentHeaderList)
                            {
                                if (!ExcelDataTable.Columns.Contains(excelHeader.ExcelHeader))
                                {
                                    ExpectedColumnList.Add(excelHeader.ExcelHeader);
                                }
                            }

                            foreach (DataColumn dc in ExcelDataTable.Columns)
                            {
                                if (excelDoc.ExcelImportDocumentHeaderList.FirstOrDefault(x => x.ExcelHeader.ToLower() == dc.ColumnName.ToLower()) == null)
                                {
                                    InvalidColumnList.Add(dc.ColumnName);
                                }
                            }

                            if (ExpectedColumnList.Count <= 3)
                            {
                                StringBuilder layoutDiff = new StringBuilder();

                                if (InvalidColumnList.Count > 0)
                                {
                                    layoutDiff.Append($"Invalid Columns({ string.Join(",", InvalidColumnList)})");
                                }

                                if (ExpectedColumnList.Count > 0)
                                {
                                    layoutDiff.Append($"Expected Columns({ string.Join(",", ExpectedColumnList)})");
                                }

                                addValidationMessage($"Invalid file format for {ExcelDataTable.TableName} closes supported file is {excelDoc.DocumentName}. Layout Differences : {layoutDiff.ToString()}", Csla.Rules.RuleSeverity.Error, DocumentEnums.MessageRelation.File);
                                break;
                            }
                        }
                    }
                    break;
                }
            }
            return(ContainsAllHeader);
        }