public static ProductionDocumentDetail ConstructProductionModelDocument(ProductionDetailsBEO m_BootParameters) { var m_ProductionDocumentDetail = new ProductionDocumentDetail(); m_ProductionDocumentDetail.MatterId = m_BootParameters.MatterId.ToString(CultureInfo.InvariantCulture); m_ProductionDocumentDetail.CreatedBy = m_BootParameters.CreatedBy; m_ProductionDocumentDetail.DocumentSelectionContext = m_BootParameters.DocumentSelectionContext; m_ProductionDocumentDetail.DocumentExclusionContext = m_BootParameters.DocumentExclusionContext; m_ProductionDocumentDetail.ProductionCollectionId = m_BootParameters.CollectionId; m_ProductionDocumentDetail.Profile = ConvertToProfileDataObjects(m_BootParameters); m_ProductionDocumentDetail.Profile.DatasetId = Convert.ToInt64(null); //TODO: check why we have this GetMatterDatasetDetails(m_ProductionDocumentDetail, m_BootParameters); m_ProductionDocumentDetail.GetText = m_BootParameters.Profile.GetScrubbedText; var productionExtractionPath = Path.Combine(m_BootParameters.Profile.ProductionSetLocation, m_BootParameters.Profile.ProductionSetName); if (!Directory.Exists(productionExtractionPath)) { Directory.CreateDirectory(productionExtractionPath); } m_ProductionDocumentDetail.ExtractionLocation = productionExtractionPath; m_ProductionDocumentDetail.ArchivePath = m_BootParameters.Profile.ProductionSetLocation; m_ProductionDocumentDetail.NearNativeConversionPriority = m_BootParameters.NearNativeConversionPriority; return m_ProductionDocumentDetail; }
public static ProductionDocumentDetail ConstructProductionModelDocument(ProductionDetailsBEO m_BootParameters) { var m_ProductionDocumentDetail = new ProductionDocumentDetail(); m_ProductionDocumentDetail.MatterId = m_BootParameters.MatterId.ToString(CultureInfo.InvariantCulture); m_ProductionDocumentDetail.CreatedBy = m_BootParameters.CreatedBy; m_ProductionDocumentDetail.DocumentSelectionContext = m_BootParameters.DocumentSelectionContext; m_ProductionDocumentDetail.DocumentExclusionContext = m_BootParameters.DocumentExclusionContext; m_ProductionDocumentDetail.ProductionCollectionId = m_BootParameters.CollectionId; m_ProductionDocumentDetail.Profile = ConvertToProfileDataObjects(m_BootParameters); m_ProductionDocumentDetail.Profile.DatasetId = Convert.ToInt64(null); //TODO: check why we have this GetMatterDatasetDetails(m_ProductionDocumentDetail, m_BootParameters); m_ProductionDocumentDetail.GetText = m_BootParameters.Profile.GetScrubbedText; var productionExtractionPath = Path.Combine(m_BootParameters.Profile.ProductionSetLocation, m_BootParameters.Profile.ProductionSetName); if (!Directory.Exists(productionExtractionPath)) { Directory.CreateDirectory(productionExtractionPath); } m_ProductionDocumentDetail.ExtractionLocation = productionExtractionPath; m_ProductionDocumentDetail.ArchivePath = m_BootParameters.Profile.ProductionSetLocation; m_ProductionDocumentDetail.NearNativeConversionPriority = m_BootParameters.NearNativeConversionPriority; return(m_ProductionDocumentDetail); }
protected override void BeginWork() { base.BeginWork(); documentConversionTimeout = ConversionHelper.GetDocumentConversionTimeout(); documentConverisonGlobalTimeout = ConversionHelper.GetDocumentGlobalConversionTimeout(); documentVaultMngr = EVUnityContainer.Resolve <IDocumentVaultManager>("DocumentVaultManager"); m_DatasetVaultManager = new DataSetVaultManager(); m_BootParameters = Utils.Deserialize <ProductionDetailsBEO>(BootParameters); }
protected override void BeginWork() { base.BeginWork(); documentConversionTimeout = ConversionHelper.GetDocumentConversionTimeout(); documentConverisonGlobalTimeout = ConversionHelper.GetDocumentGlobalConversionTimeout(); documentVaultMngr = EVUnityContainer.Resolve<IDocumentVaultManager>("DocumentVaultManager"); m_DatasetVaultManager = new DataSetVaultManager(); m_BootParameters = Utils.Deserialize<ProductionDetailsBEO>(BootParameters); }
/// <summary> /// Recalculate the correct dpn numbers. This is used for dpn numbers that were concatenated together, during multiple production /// </summary> /// <param name="docList">docList</param> /// <param name="baseJobConfig">baseJobConfig</param> /// <param name="productionSetDocCount">productionSetDocCount</param> private static void RecalculateCorrectDpnNumbers(List <ReconversionProductionDocumentBEO> docList, ProductionDetailsBEO baseJobConfig, int productionSetDocCount) { string dpnPrefix = baseJobConfig.Profile.DpnPrefix; int dpnStart = Convert.ToInt32(baseJobConfig.Profile.DpnStartingNumber); int dpnEnd = dpnStart + productionSetDocCount - 1; //retrieve the correct dpn for each document for reprocessing foreach (var d in docList) { d.DocumentProductionNumber = ParseForCorrectDpnNumber(d.DocumentProductionNumber, dpnPrefix, dpnStart, dpnEnd); } }
/// <summary> /// Gets the production document list for ID list. /// </summary> /// <param name="idList">The id list.</param> /// <param name="idType">Type of the id.</param> /// <param name="matterId">The matter id.</param> /// <param name="baseJobConfig">The base job config.</param> /// <param name="redactableCollectionId">The redactable collection id.</param> /// <param name="jobId"> </param> /// <returns></returns> public static IEnumerable <ReconversionProductionDocumentBEO> GetProductionDocumentListForIdList( List <string> idList, string idType, long matterId, ProductionDetailsBEO baseJobConfig, string redactableCollectionId, int jobId) { //init field id value int batesFieldId = -1; int batesBeginFieldId = -1; int batesEndFieldId = -1; int dpnFieldId = -1; //bates field: 3004 var batesField = baseJobConfig.Profile.ProductionFields.FirstOrDefault(f => f.FieldType.DataTypeId == 3004); if (batesField != null) { batesFieldId = batesField.ID; } //bates begin: 3005 var batesBeginField = baseJobConfig.Profile.ProductionFields.FirstOrDefault(f => f.FieldType.DataTypeId == 3005); if (batesBeginField != null) { batesBeginFieldId = batesBeginField.ID; } //bates end: 3006 var batesEndField = baseJobConfig.Profile.ProductionFields.FirstOrDefault(f => f.FieldType.DataTypeId == 3006); if (batesEndField != null) { batesEndFieldId = batesEndField.ID; } //dpn field: 3008 var dpnField = baseJobConfig.Profile.ProductionFields.FirstOrDefault(f => f.FieldType.DataTypeId == 3008); if (dpnField != null) { dpnFieldId = dpnField.ID; } //get the collection id for the native collection string nativeCollectionId = baseJobConfig.OriginalCollectionId; //find the production collection id at the time of the original production string productionCollectionId = baseJobConfig.CollectionId; //Get the list of production documents for reprocessing var docList = new List <ReconversionProductionDocumentBEO>(); var vault = VaultRepository.CreateRepository(matterId); DataSet dsResult = vault.GetProductionReprocessDocumentList(idList, idType, redactableCollectionId, nativeCollectionId, productionCollectionId, dpnFieldId, batesFieldId, batesBeginFieldId, batesEndFieldId, jobId); ReconversionProductionDocumentBEO doc = null; //process returned records if (dsResult != null && dsResult.Tables.Count > 0) { foreach (DataRow dr in dsResult.Tables[0].Rows) { string docReferenceId = dr[Constants.ColumnDocReferenceId].ToString(); if (doc == null || !docReferenceId.Equals(doc.DocumentId)) //new document (need to check this due to that multiple rows are returned, one row for each field) { doc = new ReconversionProductionDocumentBEO(); doc.DocumentId = docReferenceId; doc.DCNNumber = dr[Constants.DCN].ToString(); doc.ProductionPath = dr[Constants.ProductionPath].ToString(); docList.Add(doc); } int fieldId = dr[Constants.ColumnFieldId] != DBNull.Value ? Convert.ToInt32(dr[Constants.ColumnFieldId].ToString()) : -1; string fieldValue = dr[Constants.ColumnFieldvalue] != DBNull.Value ? dr[Constants.ColumnFieldvalue].ToString() : ""; if (dpnFieldId > 0 && dpnFieldId == fieldId) { doc.DocumentProductionNumber = fieldValue; } if (batesFieldId > 0 && batesFieldId == fieldId) { doc.AllBates = fieldValue; } if (batesBeginFieldId > 0 && batesBeginFieldId == fieldId) { doc.StartingBatesNumber = fieldValue; } if (batesEndFieldId > 0 && batesEndFieldId == fieldId) { doc.EndingBatesNumber = fieldValue; } } //if any of the bates or dpn contain comma, ie, contain multiple bates or dpn string bates = docList[0].StartingBatesNumber; string dpn = docList[0].DocumentProductionNumber; //extrac the correct dpn if dpn contain concatenated ids, which could happen because multiple productions done on //the same collection, with same dpn field name //sample dpn sequence: "dd003, dd103, k45k005, k45k105, dd203, kkk001, ddd002, dd303, k45k205" if (dpn != null && dpn.Contains(",")) { RecalculateCorrectDpnNumbers(docList, baseJobConfig, vault.GetDocumentCountForCollection(new Guid(productionCollectionId))); } //extrac the correct bates info if bates contain concatenated ids, which could happen because multiple productions done on //the same collection, with same bates field name //if bates is configures, the file name for the production contain the beginBates number. if ((bates != null && bates.Contains(","))) { RecalculateCorrectBatesNumbers(docList); } } return(docList); }
/// <summary> /// Gets the production document list. /// </summary> /// <param name="filePath">The file path.</param> /// <param name="selectionMode">The selection mode.</param> /// <param name="matterId">The matter id.</param> /// <param name="baseJobConfig">The base job config.</param> /// <param name="redactableCollectionId">The redactable collection id.</param> /// <param name="jobId"></param> /// <param name="filters"> </param> /// <returns></returns> public virtual IEnumerable <ReconversionProductionDocumentBEO> GetProductionDocumentList( string filePath, ReProcessJobSelectionMode selectionMode, long matterId, ProductionDetailsBEO baseJobConfig, string redactableCollectionId, int jobId, string filters = null) { switch (selectionMode) { case ReProcessJobSelectionMode.Selected: { var docidList = GetDocumentIdListFromFile(filePath, Constants.DocId); foreach (var v in GetProductionDocumentListForIdList( docidList, Constants.DocId, matterId, baseJobConfig, redactableCollectionId, jobId)) { yield return(v); } break; } case ReProcessJobSelectionMode.Csv: case ReProcessJobSelectionMode.CrossReference: { var dictIds = GetDocumentIdListFromFile(filePath, Constants.DCN, Constants.DocumentSetName); //put all value in one list. Since there is only one production set, it should all be the same collectionId var ids = new List <string>(); foreach (var dictId in dictIds) { ids.AddRange(dictId.Value); } foreach (var v in GetProductionDocumentListForIdList( ids, Constants.DCN, matterId, baseJobConfig, redactableCollectionId, jobId)) { yield return(v); } break; } case ReProcessJobSelectionMode.All: IEnumerable <ReconversionProductionDocumentBEO> reconversionProductionDocumentBeos = null; if (!string.IsNullOrEmpty(filters)) { var documentVaultManager = new DocumentVaultManager(); documentVaultManager.Init(matterId); IEnumerable <DocumentConversionLogBeo> documentConversionLogBeos = documentVaultManager.GetConversionResultsWithFilters(matterId, jobId, null, null, filters ); var docidList = documentConversionLogBeos.Select( documentConversionLogBeo => documentConversionLogBeo.DocId.ToString(CultureInfo.InvariantCulture)).ToList(); reconversionProductionDocumentBeos = GetProductionDocumentListForIdList( docidList, Constants.DocId, matterId, baseJobConfig, redactableCollectionId, jobId); } else { reconversionProductionDocumentBeos = GetProductionDocumentListForIdList ( null, "ALL", matterId, baseJobConfig, redactableCollectionId, jobId); } if (reconversionProductionDocumentBeos == null) { yield return(null); } foreach (var reConversionProductionBeo in reconversionProductionDocumentBeos) { yield return(reConversionProductionBeo); } break; } }
/// <summary> /// Converts to profile data objects. /// </summary> /// <returns></returns> private static ProductionProfile ConvertToProfileDataObjects(ProductionDetailsBEO m_BootParameters) { var profile = new ProductionProfile { DatasetId = m_BootParameters.Profile.DatasetId, DpnPrefix = m_BootParameters.Profile.DpnPrefix, DpnStartingNumber = m_BootParameters.Profile.DpnStartingNumber, HeaderFooterFontSelection = new ProductionSetHeaderFooterFont { HeaderFooterColor = m_BootParameters.Profile.HeaderFooterFontSelection != null ? m_BootParameters.Profile.HeaderFooterFontSelection.HeaderFooterColor : null, HeaderFooterFont = m_BootParameters.Profile.HeaderFooterFontSelection != null ? m_BootParameters.Profile.HeaderFooterFontSelection.HeaderFooterFont : null, HeaderFooterFontSize = m_BootParameters.Profile.HeaderFooterFontSelection != null ? m_BootParameters.Profile.HeaderFooterFontSelection.HeaderFooterFontSize : null, HeaderFooterHeight = m_BootParameters.Profile.HeaderFooterFontSelection != null ? m_BootParameters.Profile.HeaderFooterFontSelection.HeaderFooterHeight : 0, HeaderFooterStyle = m_BootParameters.Profile.HeaderFooterFontSelection != null ? (FontStyles)m_BootParameters.Profile.HeaderFooterFontSelection.HeaderFooterStyle : FontStyles.Normal }, ImageType = (ImageType)m_BootParameters.Profile.ImageType, IsBurnMarkups = m_BootParameters.Profile.IsBurnMarkups, IsIncludeArrowsMarkup = m_BootParameters.Profile.IsIncludeArrowsMarkup, IsIncludeBoxesMarkup = m_BootParameters.Profile.IsIncludeBoxesMarkup, IsIncludeHighlightsMarkup = m_BootParameters.Profile.IsIncludeHighlightsMarkup, IsIncludeLinesMarkup = m_BootParameters.Profile.IsIncludeLinesMarkup, IsIncludeReasonsWithMarkup = m_BootParameters.Profile.IsIncludeReasonsWithMarkup, IsIncludeRedactionsMarkup = m_BootParameters.Profile.IsIncludeRedactionsMarkup, IsIncludeRubberStampMarkup = m_BootParameters.Profile.IsIncludeRubberStampMarkup, IsIncludeTextBoxMarkup = m_BootParameters.Profile.IsIncludeTextBoxMarkup, IsInsertPlaceHolderPage = m_BootParameters.Profile.IsInsertPlaceHolderPage, IsOneImagePerPage = m_BootParameters.Profile.IsOneImagePerPage, IsPrintDCNInPlaceHolderPage = m_BootParameters.Profile.IsPrintDCNInPlaceHolderPage, IsPrintDPNInPlaceHolderPage = m_BootParameters.Profile.IsPrintDPNInPlaceHolderPage, LeftFooter = new ProductionSetHeaderFooter { DatasetFieldSelected = m_BootParameters.Profile.LeftFooter.DatasetFieldSelected, IsIncrementNeededInText = m_BootParameters.Profile.LeftFooter.IsIncrementNeededInText, Option = (HeaderFooterOptions)m_BootParameters.Profile.LeftFooter.Option, TextPrefix = m_BootParameters.Profile.LeftFooter.TextPrefix, TextStartingNumber = m_BootParameters.Profile.LeftFooter.TextStartingNumber }, LeftHeader = new ProductionSetHeaderFooter { DatasetFieldSelected = m_BootParameters.Profile.LeftHeader.DatasetFieldSelected, IsIncrementNeededInText = m_BootParameters.Profile.LeftHeader.IsIncrementNeededInText, Option = (HeaderFooterOptions)m_BootParameters.Profile.LeftHeader.Option, TextPrefix = m_BootParameters.Profile.LeftHeader.TextPrefix, TextStartingNumber = m_BootParameters.Profile.LeftHeader.TextStartingNumber }, MiddleFooter = new ProductionSetHeaderFooter { DatasetFieldSelected = m_BootParameters.Profile.MiddleFooter.DatasetFieldSelected, IsIncrementNeededInText = m_BootParameters.Profile.MiddleFooter.IsIncrementNeededInText, Option = (HeaderFooterOptions)m_BootParameters.Profile.MiddleFooter.Option, TextPrefix = m_BootParameters.Profile.MiddleFooter.TextPrefix, TextStartingNumber = m_BootParameters.Profile.MiddleFooter.TextStartingNumber }, MiddleHeader = new ProductionSetHeaderFooter { DatasetFieldSelected = m_BootParameters.Profile.MiddleHeader.DatasetFieldSelected, IsIncrementNeededInText = m_BootParameters.Profile.MiddleHeader.IsIncrementNeededInText, Option = (HeaderFooterOptions)m_BootParameters.Profile.MiddleHeader.Option, TextPrefix = m_BootParameters.Profile.MiddleHeader.TextPrefix, TextStartingNumber = m_BootParameters.Profile.MiddleHeader.TextStartingNumber }, PrintDCNInPlaceHolderPrefferedText = m_BootParameters.Profile.PrintDCNInPlaceHolderPrefferedText, ProductionPrefix = m_BootParameters.Profile.ProductionPrefix, ProductionSetNumberingType = (ProductionNumbering)m_BootParameters.Profile.ProductionSetNumberingType, ProductionStartingNumber = m_BootParameters.Profile.ProductionStartingNumber, ProfileId = m_BootParameters.Profile.ProfileId, ProfileName = m_BootParameters.Profile.ProfileName, RightFooter = new ProductionSetHeaderFooter { DatasetFieldSelected = m_BootParameters.Profile.RightFooter.DatasetFieldSelected, IsIncrementNeededInText = m_BootParameters.Profile.RightFooter.IsIncrementNeededInText, Option = (HeaderFooterOptions)m_BootParameters.Profile.RightFooter.Option, TextPrefix = m_BootParameters.Profile.RightFooter.TextPrefix, TextStartingNumber = m_BootParameters.Profile.RightFooter.TextStartingNumber }, RightHeader = new ProductionSetHeaderFooter { DatasetFieldSelected = m_BootParameters.Profile.RightHeader.DatasetFieldSelected, IsIncrementNeededInText = m_BootParameters.Profile.RightHeader.IsIncrementNeededInText, Option = (HeaderFooterOptions)m_BootParameters.Profile.RightHeader.Option, TextPrefix = m_BootParameters.Profile.RightHeader.TextPrefix, TextStartingNumber = m_BootParameters.Profile.RightHeader.TextStartingNumber }, TiffImageColor = (TiffImageColor)m_BootParameters.Profile.TiffImageColor }; return profile; }
private static void GetMatterDatasetDetails(ProductionDocumentDetail m_ProductionDocumentDetail, ProductionDetailsBEO m_BootParameters) { DatasetBEO dataset = DataSetBO.GetDataSetDetailForCollectionId(m_BootParameters.OriginalCollectionId); m_ProductionDocumentDetail.OriginalCollectionId = dataset.RedactableDocumentSetId; //Assign redactable set id as default collection id m_ProductionDocumentDetail.DatasetCollectionId = m_BootParameters.OriginalCollectionId; //Native set collection id m_ProductionDocumentDetail.OriginalDatasetName = dataset.FolderName; m_ProductionDocumentDetail.OriginalDatasetId = (int)dataset.FolderID; m_ProductionDocumentDetail.lstProductionFields = DataSetBO.GetDataSetFields(Convert.ToInt64(m_ProductionDocumentDetail.OriginalDatasetId), m_ProductionDocumentDetail.ProductionCollectionId); m_ProductionDocumentDetail.dataSetBeo = DataSetBO.GetDataSetDetailForDataSetId(Convert.ToInt64(m_ProductionDocumentDetail.OriginalDatasetId)); m_ProductionDocumentDetail.lstDsFieldsBeo = DataSetBO.GetDataSetFields(Convert.ToInt64(m_ProductionDocumentDetail.OriginalDatasetId), m_ProductionDocumentDetail.DatasetCollectionId); m_ProductionDocumentDetail.matterBeo = MatterBO.GetMatterDetails(m_ProductionDocumentDetail.dataSetBeo.ParentID.ToString(CultureInfo.InvariantCulture)); m_ProductionDocumentDetail.SearchServerDetails = ServerBO.GetSearchServer(m_ProductionDocumentDetail.matterBeo.SearchServer.Id); }
/// <summary> /// Recalculate the correct dpn numbers. This is used for dpn numbers that were concatenated together, during multiple production /// </summary> /// <param name="docList">docList</param> /// <param name="baseJobConfig">baseJobConfig</param> /// <param name="productionSetDocCount">productionSetDocCount</param> private static void RecalculateCorrectDpnNumbers(List<ReconversionProductionDocumentBEO> docList, ProductionDetailsBEO baseJobConfig, int productionSetDocCount) { string dpnPrefix = baseJobConfig.Profile.DpnPrefix; int dpnStart = Convert.ToInt32(baseJobConfig.Profile.DpnStartingNumber); int dpnEnd = dpnStart + productionSetDocCount - 1; //retrieve the correct dpn for each document for reprocessing foreach (var d in docList) { d.DocumentProductionNumber = ParseForCorrectDpnNumber(d.DocumentProductionNumber, dpnPrefix, dpnStart, dpnEnd); } }
/// <summary> /// Gets the production document list for ID list. /// </summary> /// <param name="idList">The id list.</param> /// <param name="idType">Type of the id.</param> /// <param name="matterId">The matter id.</param> /// <param name="baseJobConfig">The base job config.</param> /// <param name="redactableCollectionId">The redactable collection id.</param> /// <param name="jobId"> </param> /// <returns></returns> public static IEnumerable<ReconversionProductionDocumentBEO> GetProductionDocumentListForIdList( List<string> idList, string idType, long matterId, ProductionDetailsBEO baseJobConfig, string redactableCollectionId, int jobId) { //init field id value int batesFieldId = -1; int batesBeginFieldId = -1; int batesEndFieldId = -1; int dpnFieldId = -1; //bates field: 3004 var batesField = baseJobConfig.Profile.ProductionFields.FirstOrDefault(f => f.FieldType.DataTypeId == 3004); if (batesField != null) batesFieldId = batesField.ID; //bates begin: 3005 var batesBeginField = baseJobConfig.Profile.ProductionFields.FirstOrDefault(f => f.FieldType.DataTypeId == 3005); if (batesBeginField != null) batesBeginFieldId = batesBeginField.ID; //bates end: 3006 var batesEndField = baseJobConfig.Profile.ProductionFields.FirstOrDefault(f => f.FieldType.DataTypeId == 3006); if (batesEndField != null) batesEndFieldId = batesEndField.ID; //dpn field: 3008 var dpnField = baseJobConfig.Profile.ProductionFields.FirstOrDefault(f => f.FieldType.DataTypeId == 3008); if (dpnField != null) dpnFieldId = dpnField.ID; //get the collection id for the native collection string nativeCollectionId = baseJobConfig.OriginalCollectionId; //find the production collection id at the time of the original production string productionCollectionId = baseJobConfig.CollectionId; //Get the list of production documents for reprocessing var docList = new List<ReconversionProductionDocumentBEO>(); var vault = VaultRepository.CreateRepository(matterId); DataSet dsResult = vault.GetProductionReprocessDocumentList(idList, idType, redactableCollectionId, nativeCollectionId, productionCollectionId, dpnFieldId, batesFieldId, batesBeginFieldId, batesEndFieldId, jobId); ReconversionProductionDocumentBEO doc = null; //process returned records if (dsResult != null && dsResult.Tables.Count > 0) { foreach (DataRow dr in dsResult.Tables[0].Rows) { string docReferenceId = dr[Constants.ColumnDocReferenceId].ToString(); if (doc == null || !docReferenceId.Equals(doc.DocumentId)) //new document (need to check this due to that multiple rows are returned, one row for each field) { doc = new ReconversionProductionDocumentBEO(); doc.DocumentId = docReferenceId; doc.DCNNumber = dr[Constants.DCN].ToString(); doc.ProductionPath = dr[Constants.ProductionPath].ToString(); docList.Add(doc); } int fieldId = dr[Constants.ColumnFieldId] != DBNull.Value ? Convert.ToInt32(dr[Constants.ColumnFieldId].ToString()) : -1; string fieldValue = dr[Constants.ColumnFieldvalue] != DBNull.Value ? dr[Constants.ColumnFieldvalue].ToString() : ""; if (dpnFieldId > 0 && dpnFieldId == fieldId) doc.DocumentProductionNumber = fieldValue; if (batesFieldId > 0 && batesFieldId == fieldId) doc.AllBates = fieldValue; if (batesBeginFieldId > 0 && batesBeginFieldId == fieldId) doc.StartingBatesNumber = fieldValue; if (batesEndFieldId > 0 && batesEndFieldId == fieldId) doc.EndingBatesNumber = fieldValue; } //if any of the bates or dpn contain comma, ie, contain multiple bates or dpn string bates = docList[0].StartingBatesNumber; string dpn = docList[0].DocumentProductionNumber; //extrac the correct dpn if dpn contain concatenated ids, which could happen because multiple productions done on //the same collection, with same dpn field name //sample dpn sequence: "dd003, dd103, k45k005, k45k105, dd203, kkk001, ddd002, dd303, k45k205" if (dpn != null && dpn.Contains(",")) { RecalculateCorrectDpnNumbers(docList, baseJobConfig, vault.GetDocumentCountForCollection(new Guid(productionCollectionId))); } //extrac the correct bates info if bates contain concatenated ids, which could happen because multiple productions done on //the same collection, with same bates field name //if bates is configures, the file name for the production contain the beginBates number. if ((bates != null && bates.Contains(","))) { RecalculateCorrectBatesNumbers(docList); } } return docList; }
/// <summary> /// Gets the production document list. /// </summary> /// <param name="filePath">The file path.</param> /// <param name="selectionMode">The selection mode.</param> /// <param name="matterId">The matter id.</param> /// <param name="baseJobConfig">The base job config.</param> /// <param name="redactableCollectionId">The redactable collection id.</param> /// <param name="jobId"></param> /// <param name="filters"> </param> /// <returns></returns> public virtual IEnumerable<ReconversionProductionDocumentBEO> GetProductionDocumentList( string filePath, ReProcessJobSelectionMode selectionMode, long matterId, ProductionDetailsBEO baseJobConfig, string redactableCollectionId, int jobId,string filters=null) { switch (selectionMode) { case ReProcessJobSelectionMode.Selected: { var docidList = GetDocumentIdListFromFile(filePath, Constants.DocId); foreach (var v in GetProductionDocumentListForIdList( docidList, Constants.DocId, matterId, baseJobConfig, redactableCollectionId, jobId)) yield return v; break; } case ReProcessJobSelectionMode.Csv: case ReProcessJobSelectionMode.CrossReference: { var dictIds = GetDocumentIdListFromFile(filePath, Constants.DCN, Constants.DocumentSetName); //put all value in one list. Since there is only one production set, it should all be the same collectionId var ids = new List<string>(); foreach (var dictId in dictIds) { ids.AddRange(dictId.Value); } foreach (var v in GetProductionDocumentListForIdList( ids, Constants.DCN, matterId, baseJobConfig, redactableCollectionId, jobId)) yield return v; break; } case ReProcessJobSelectionMode.All: IEnumerable<ReconversionProductionDocumentBEO> reconversionProductionDocumentBeos = null; if (!string.IsNullOrEmpty(filters)) { var documentVaultManager = new DocumentVaultManager(); documentVaultManager.Init(matterId); IEnumerable<DocumentConversionLogBeo> documentConversionLogBeos = documentVaultManager.GetConversionResultsWithFilters(matterId, jobId, null, null, filters ); var docidList = documentConversionLogBeos.Select( documentConversionLogBeo => documentConversionLogBeo.DocId.ToString(CultureInfo.InvariantCulture)).ToList(); reconversionProductionDocumentBeos = GetProductionDocumentListForIdList( docidList, Constants.DocId, matterId, baseJobConfig, redactableCollectionId, jobId); } else { reconversionProductionDocumentBeos = GetProductionDocumentListForIdList ( null, "ALL", matterId, baseJobConfig, redactableCollectionId, jobId); } if (reconversionProductionDocumentBeos == null) yield return null; foreach (var reConversionProductionBeo in reconversionProductionDocumentBeos) yield return reConversionProductionBeo; break; } }
/// <summary> /// Begins the work. /// </summary> protected override void BeginWork() { base.BeginWork(); _mBootParameters = GetProductionDetailsBusinessEntity(BootParameters); _mBootParameters.ShouldNotBe(null); _mBootParameters.Profile.ShouldNotBe(null); _mBootParameters.Profile.ProductionSetName.ShouldNotBeEmpty(); if (!Directory.Exists(_mBootParameters.Profile.ProductionSetLocation)) { Tracer.Warning(Constants.ProductionsetStartError); LogMessage(false, ConMessageProductionSetLocation); throw new Exception(ConMessageProductionSetLocation); } _vaultManager = EVUnityContainer.Resolve<IDocumentVaultManager>(Constants.DocumentVaultManager); _mProductionDocumentDetail = ProductionStartupHelper.ConstructProductionModelDocument(_mBootParameters); _batesPrefix = _mProductionDocumentDetail.Profile.ProductionPrefix ?? string.Empty; _dpnPrefix = _mProductionDocumentDetail.Profile.DpnPrefix ?? string.Empty; _mCreatedBy = _mBootParameters.CreatedBy; _mDatasetId = _mBootParameters.SearchCriteria.SelectedDatasets[0]; _isPathValid = true; GetVolumeSettings(_mProductionDocumentDetail.ExtractionLocation); var dataset = DataSetBO.GetDataSetDetailForDataSetId(Convert.ToInt64(_mDatasetId)); var field = dataset.DatasetFieldList.FirstOrDefault(f => f.FieldType.DataTypeId == Constants.DCNFieldTypeId); if (field != null) _dcnField = field.Name; MockSession(); //CNEV3.1 - Design Specification - Production update - Call Production BO methods for creating the production tags //CNEV3.1 - Design Specification - Production update - Refactor the worker such a way that worker is just a shim and it just calls the respective business methods ReadProductionBatchSize(); }
/// <summary> /// Converts to profile data objects. /// </summary> /// <returns></returns> private static ProductionProfile ConvertToProfileDataObjects(ProductionDetailsBEO m_BootParameters) { var profile = new ProductionProfile { DatasetId = m_BootParameters.Profile.DatasetId, DpnPrefix = m_BootParameters.Profile.DpnPrefix, DpnStartingNumber = m_BootParameters.Profile.DpnStartingNumber, HeaderFooterFontSelection = new ProductionSetHeaderFooterFont { HeaderFooterColor = m_BootParameters.Profile.HeaderFooterFontSelection != null ? m_BootParameters.Profile.HeaderFooterFontSelection.HeaderFooterColor : null, HeaderFooterFont = m_BootParameters.Profile.HeaderFooterFontSelection != null ? m_BootParameters.Profile.HeaderFooterFontSelection.HeaderFooterFont : null, HeaderFooterFontSize = m_BootParameters.Profile.HeaderFooterFontSelection != null ? m_BootParameters.Profile.HeaderFooterFontSelection.HeaderFooterFontSize : null, HeaderFooterHeight = m_BootParameters.Profile.HeaderFooterFontSelection != null ? m_BootParameters.Profile.HeaderFooterFontSelection.HeaderFooterHeight : 0, HeaderFooterStyle = m_BootParameters.Profile.HeaderFooterFontSelection != null ? (FontStyles)m_BootParameters.Profile.HeaderFooterFontSelection.HeaderFooterStyle : FontStyles.Normal }, ImageType = (ImageType)m_BootParameters.Profile.ImageType, IsBurnMarkups = m_BootParameters.Profile.IsBurnMarkups, IsIncludeArrowsMarkup = m_BootParameters.Profile.IsIncludeArrowsMarkup, IsIncludeBoxesMarkup = m_BootParameters.Profile.IsIncludeBoxesMarkup, IsIncludeHighlightsMarkup = m_BootParameters.Profile.IsIncludeHighlightsMarkup, IsIncludeLinesMarkup = m_BootParameters.Profile.IsIncludeLinesMarkup, IsIncludeReasonsWithMarkup = m_BootParameters.Profile.IsIncludeReasonsWithMarkup, IsIncludeRedactionsMarkup = m_BootParameters.Profile.IsIncludeRedactionsMarkup, IsIncludeRubberStampMarkup = m_BootParameters.Profile.IsIncludeRubberStampMarkup, IsIncludeTextBoxMarkup = m_BootParameters.Profile.IsIncludeTextBoxMarkup, IsInsertPlaceHolderPage = m_BootParameters.Profile.IsInsertPlaceHolderPage, IsOneImagePerPage = m_BootParameters.Profile.IsOneImagePerPage, IsPrintDCNInPlaceHolderPage = m_BootParameters.Profile.IsPrintDCNInPlaceHolderPage, IsPrintDPNInPlaceHolderPage = m_BootParameters.Profile.IsPrintDPNInPlaceHolderPage, LeftFooter = new ProductionSetHeaderFooter { DatasetFieldSelected = m_BootParameters.Profile.LeftFooter.DatasetFieldSelected, IsIncrementNeededInText = m_BootParameters.Profile.LeftFooter.IsIncrementNeededInText, Option = (HeaderFooterOptions)m_BootParameters.Profile.LeftFooter.Option, TextPrefix = m_BootParameters.Profile.LeftFooter.TextPrefix, TextStartingNumber = m_BootParameters.Profile.LeftFooter.TextStartingNumber }, LeftHeader = new ProductionSetHeaderFooter { DatasetFieldSelected = m_BootParameters.Profile.LeftHeader.DatasetFieldSelected, IsIncrementNeededInText = m_BootParameters.Profile.LeftHeader.IsIncrementNeededInText, Option = (HeaderFooterOptions)m_BootParameters.Profile.LeftHeader.Option, TextPrefix = m_BootParameters.Profile.LeftHeader.TextPrefix, TextStartingNumber = m_BootParameters.Profile.LeftHeader.TextStartingNumber }, MiddleFooter = new ProductionSetHeaderFooter { DatasetFieldSelected = m_BootParameters.Profile.MiddleFooter.DatasetFieldSelected, IsIncrementNeededInText = m_BootParameters.Profile.MiddleFooter.IsIncrementNeededInText, Option = (HeaderFooterOptions)m_BootParameters.Profile.MiddleFooter.Option, TextPrefix = m_BootParameters.Profile.MiddleFooter.TextPrefix, TextStartingNumber = m_BootParameters.Profile.MiddleFooter.TextStartingNumber }, MiddleHeader = new ProductionSetHeaderFooter { DatasetFieldSelected = m_BootParameters.Profile.MiddleHeader.DatasetFieldSelected, IsIncrementNeededInText = m_BootParameters.Profile.MiddleHeader.IsIncrementNeededInText, Option = (HeaderFooterOptions)m_BootParameters.Profile.MiddleHeader.Option, TextPrefix = m_BootParameters.Profile.MiddleHeader.TextPrefix, TextStartingNumber = m_BootParameters.Profile.MiddleHeader.TextStartingNumber }, PrintDCNInPlaceHolderPrefferedText = m_BootParameters.Profile.PrintDCNInPlaceHolderPrefferedText, ProductionPrefix = m_BootParameters.Profile.ProductionPrefix, ProductionSetNumberingType = (ProductionNumbering)m_BootParameters.Profile.ProductionSetNumberingType, ProductionStartingNumber = m_BootParameters.Profile.ProductionStartingNumber, ProfileId = m_BootParameters.Profile.ProfileId, ProfileName = m_BootParameters.Profile.ProfileName, RightFooter = new ProductionSetHeaderFooter { DatasetFieldSelected = m_BootParameters.Profile.RightFooter.DatasetFieldSelected, IsIncrementNeededInText = m_BootParameters.Profile.RightFooter.IsIncrementNeededInText, Option = (HeaderFooterOptions)m_BootParameters.Profile.RightFooter.Option, TextPrefix = m_BootParameters.Profile.RightFooter.TextPrefix, TextStartingNumber = m_BootParameters.Profile.RightFooter.TextStartingNumber }, RightHeader = new ProductionSetHeaderFooter { DatasetFieldSelected = m_BootParameters.Profile.RightHeader.DatasetFieldSelected, IsIncrementNeededInText = m_BootParameters.Profile.RightHeader.IsIncrementNeededInText, Option = (HeaderFooterOptions)m_BootParameters.Profile.RightHeader.Option, TextPrefix = m_BootParameters.Profile.RightHeader.TextPrefix, TextStartingNumber = m_BootParameters.Profile.RightHeader.TextStartingNumber }, TiffImageColor = (TiffImageColor)m_BootParameters.Profile.TiffImageColor }; return(profile); }
private static void GetMatterDatasetDetails(ProductionDocumentDetail m_ProductionDocumentDetail, ProductionDetailsBEO m_BootParameters) { DatasetBEO dataset = DataSetBO.GetDataSetDetailForCollectionId(m_BootParameters.OriginalCollectionId); m_ProductionDocumentDetail.OriginalCollectionId = dataset.RedactableDocumentSetId; //Assign redactable set id as default collection id m_ProductionDocumentDetail.DatasetCollectionId = m_BootParameters.OriginalCollectionId; //Native set collection id m_ProductionDocumentDetail.OriginalDatasetName = dataset.FolderName; m_ProductionDocumentDetail.OriginalDatasetId = (int)dataset.FolderID; m_ProductionDocumentDetail.lstProductionFields = DataSetBO.GetDataSetFields(Convert.ToInt64(m_ProductionDocumentDetail.OriginalDatasetId), m_ProductionDocumentDetail.ProductionCollectionId); m_ProductionDocumentDetail.dataSetBeo = DataSetBO.GetDataSetDetailForDataSetId(Convert.ToInt64(m_ProductionDocumentDetail.OriginalDatasetId)); m_ProductionDocumentDetail.lstDsFieldsBeo = DataSetBO.GetDataSetFields(Convert.ToInt64(m_ProductionDocumentDetail.OriginalDatasetId), m_ProductionDocumentDetail.DatasetCollectionId); m_ProductionDocumentDetail.matterBeo = MatterBO.GetMatterDetails(m_ProductionDocumentDetail.dataSetBeo.ParentID.ToString(CultureInfo.InvariantCulture)); m_ProductionDocumentDetail.SearchServerDetails = ServerBO.GetSearchServer(m_ProductionDocumentDetail.matterBeo.SearchServer.Id); }