private static void ListValidationOperations(ISharePointListValidationService spListValidationService)
        {
            Task <List <string> > t_missingLists = Task.Factory.StartNew <List <string> >(() =>
            {
                logger.Log(LogLevel.Info, $"Checking for missing lists");
                return(spListValidationService.MissingLists());
            });

            Task <List <SPListItemCount> > t_listItemsCountMismatch = Task.Factory.StartNew <List <SPListItemCount> >(() =>
            {
                logger.Log(LogLevel.Info, $"Checking for list item count mismatch");
                return(spListValidationService.GetListsItemsCountMismatch());
            });

            Task <List <SPField> > t_missingFields = Task.Factory.StartNew <List <SPField> >(() =>
            {
                logger.Log(LogLevel.Info, $"Checking for missing list fields");
                return(spListValidationService.MissingListColumns());
            });

            Task <List <SPListItem> > t_missingListItems = Task.Factory.StartNew <List <SPListItem> >(() =>
            {
                logger.Log(LogLevel.Info, $"Checking for missing list items");
                return(spListValidationService.MissingListItems());
            });

            Task <List <SPWebPart> > t_missingWebParts = Task.Factory.StartNew <List <SPWebPart> >(() =>
            {
                logger.Log(LogLevel.Info, $"Checking for missing webparts");
                return(spListValidationService.MissingWebParts());
            });

            Task.WaitAll(new Task[] { t_missingLists, t_listItemsCountMismatch, t_missingFields, t_missingListItems, t_missingWebParts });

            if (t_missingLists.Result.Count > 0)
            {
                CsvWriterHelper.WriteCsvRecords(t_missingLists.Result, Path.Combine(dirInfo.FullName, "missingLists.csv"));
            }

            if (t_listItemsCountMismatch.Result.Count > 0)
            {
                CsvWriterHelper.WriteCsvRecords(t_listItemsCountMismatch.Result, Path.Combine(dirInfo.FullName, "listItemsCountMismatch.csv"));
            }

            if (t_missingFields.Result.Count > 0)
            {
                CsvWriterHelper.WriteCsvRecords(t_missingFields.Result, Path.Combine(dirInfo.FullName, "missingFields.csv"));
            }

            if (t_missingListItems.Result.Count > 0)
            {
                CsvWriterHelper.WriteCsvRecords(t_missingListItems.Result, Path.Combine(dirInfo.FullName, "missingListItems.csv"));
            }

            if (t_missingWebParts.Result.Count > 0)
            {
                CsvWriterHelper.WriteCsvRecords(t_missingWebParts.Result, Path.Combine(dirInfo.FullName, "missingWebParts.csv"));
            }
        }
        private static void ListValidationOperations(ISharePointListValidationService spListValidationService)
        {
            logger.Log(LogLevel.Info, $"Checking for missing lists");
            var missingLists = spListValidationService.MissingLists();

            if (missingLists.Count > 0)
            {
                CsvWriterHelper.WriteCsvRecords(missingLists, Path.Combine(dirInfo.FullName, "missingLists.csv"));
            }

            logger.Log(LogLevel.Info, $"Checking for list item count mismatch");
            var listItemsCountMismatch = spListValidationService.GetListsItemsCountMismatch();

            if (listItemsCountMismatch.Count > 0)
            {
                CsvWriterHelper.WriteCsvRecords(listItemsCountMismatch, Path.Combine(dirInfo.FullName, "listItemsCountMismatch.csv"));
            }

            logger.Log(LogLevel.Info, $"Checking for missing list fields");
            var missingFields = spListValidationService.MissingListColumnsV1();

            if (missingFields.Count > 0)
            {
                CsvWriterHelper.WriteCsvRecords(missingFields, Path.Combine(dirInfo.FullName, "missingFields.csv"));
            }

            logger.Log(LogLevel.Info, $"Checking for missing list views");
            var missingListViews = spListValidationService.MissingListViews();

            if (missingListViews.Count > 0)
            {
                CsvWriterHelper.WriteCsvRecords(missingListViews, Path.Combine(dirInfo.FullName, "missingListViews.csv"));
            }

            logger.Log(LogLevel.Info, $"Checking for missing list items");
            var missingListItems = spListValidationService.MissingListItemsV1();

            if (missingListItems.Count > 0)
            {
                CsvWriterHelper.WriteCsvRecords(missingListItems, Path.Combine(dirInfo.FullName, "missingListItems.csv"));
            }


            /*
             * logger.Log(LogLevel.Info, $"Checking for missing list items by modified date");
             * var missingListItemsByModifiedDate = spListValidationService.MissingListItems();
             * if (missingListItemsByModifiedDate.Count > 0)
             *  CsvWriterHelper.WriteCsvRecords(missingListItemsByModifiedDate, Path.Combine(dirInfo.FullName, "missingListItemsByModifiedDate.csv"));
             */

            logger.Log(LogLevel.Info, $"Checking for missing webparts");
            var missingWebParts = spListValidationService.MissingWebParts();

            if (missingWebParts.Count > 0)
            {
                CsvWriterHelper.WriteCsvRecords(missingWebParts, Path.Combine(dirInfo.FullName, "missingWebParts.csv"));
            }

            logger.Log(LogLevel.Info, $"Checking for missing worflows");
            var missingWorkflows = spListValidationService.MissingWorkflows();

            if (missingWorkflows.Count > 0)
            {
                CsvWriterHelper.WriteCsvRecords(missingWorkflows, Path.Combine(dirInfo.FullName, "missingWorkflows.csv"));
            }
        }