# Introduction Document Manager is an internal web app that enables LMCU admins to view and update members' documents (to correct issues that happened during the ingestion process, exclude documents from members, resend failed notifications, etc), reprocess documents, and add/update DocCodeDetails. # Pages ### Document Lookup Used to lookup documents and modify authorizations. ### Reprocessing Table Used to reprocess documents that had an issue during the ingestion process. If a user has the permission, documents may be downloaded, assigned an owner, or set to unknown. ### IT Reprocessing Table Similar to the Reprocessing Table page, however, there is added functionality to update notification statuses, reprocess notification failures, and reprocess critical failures that have happened during the ingestion process. ### DocCodeDetails Used to create and modify DocCodeDetails. The fields that can be updated are the names, member view exclusion dates, and retention times. # Fluent Validation _Reference on [GitHub](https://github.com/Blazored/FluentValidation)_ FluentValidation allows for form validation by creating RuleSets that allow validation rules to be grouped (by a name) and executed together while ignoring other rules. Through Dependency Injection and Reflection, FluentValidation is able to find Validators which are located in the Validators folder (```Shared/DocumentGridView/Validators```) Currently, there is one form that is using FluentValidation on the ```ReprocessingTable``` named ```SearchCriteria```. If another validator is added, the options for this form may need to be updated as it is set to ```IncludeAllRuleSets()``` Validation is called by executing ```await fluentValidationValidator.ValidateAsync()``` which will check that the form and return a boolean. Check the reference link above for more information and examples of how FluentValidation works. # Security Groups There are 5 groups that are used to control permissions within DocumentManager: - Doc_Mgr_Bus_Admin - Doc_Mgr_Bus_Edit - Doc_Mgr_Bus_View_Only - Doc_Mgr_IT_Admin - QA_Testing - Should only contain the user Test-Associates@landmarkcu.com Permissions are managed in appsettings.json for local environments. QA, UAT, and PROD utilize pipeline variables, which can be found and updated [here](https://landmarkcu.visualstudio.com/Platform/_releaseDefinition?definitionId=20&_a=definition-variables). ### Important Notes 1. "View" permissions for individual pages are set with the initial Groups value, i.e. ```DocumentLookup.Groups```. 2. Nested groups are meant to manage specific features, i.e. ```DocumentLookup.Download.Groups``` 3. There are IT and QC roles within DocumentIngestor ([here](https://landmarkcu.visualstudio.com/Platform/_apps/hub/ms.vss-releaseManagement-web.cd-workflow-hub?definitionId=17&_a=definition-variables)) and DocumentTypeRetriever ([here](https://landmarkcu.visualstudio.com/Platform/_apps/hub/ms.vss-releaseManagement-web.cd-workflow-hub?definitionId=16&_a=definition-variables)) that are required to be checked and updated when changing permissions for DocumentManager 4. Visibility of the Admin dropdown menu is managed with pipeline variables and needs to be updated if a specific group has permissions to any of the admin pages ![Admin Menu](docs/Admin%20Menu.png) ### Updating Permissions When permissions need to be changed/updated, utilize the Excel file in the ```docs``` folder (except for Admin menu permissions) The Excel file contains two tabs: first, a grid of all permissions and second, the values for the pipeline variables which auto-update when the first tab is changed. The screenshot below is an example of both pages: ![Permissions](docs/Permissions-May2023.png) ![Permission Variables](docs/PermissionVariables-May2023.png) # Dependencies - [LCU.Library.DocumentType](https://landmarkcu.visualstudio.com/Platform/_git/LCU.Library.DocumentType?path=%2F&version=GBmaster&_a=contents) - [LCU.Library.Internal.CoreApiWrapperModel](https://landmarkcu.visualstudio.com/Platform/_git/LCU.Api.Internal.CoreApiWrapper?path=/LCU.Library.Internal.CoreApiWrapperModel) - [LCU.Library.Internal.DocumentIngestorModels](https://landmarkcu.visualstudio.com/Platform/_git/LCU.API.Internal.DocumentIngestor?path=/LCU.Library.Internal.DocumentIngestorModels) - [LCU.Library.Internal.DocumentModels](https://landmarkcu.visualstudio.com/Platform/_git/LCU.API.Internal.Document?path=/LCU.Library.Internal.DocumentModels) - [LCU.Library.Internal.Logging](https://landmarkcu.visualstudio.com/Platform/_git/LCU.Library.Internal.Logging) - [LCU.Library.Internal.RazorComponents](https://landmarkcu.visualstudio.com/Platform/_git/LCU.Library.Internal.RazorComponents) - Components used - CardDisplay - CollapsibleComponent - DataTable - LCUFooter - RowBody - TableFilter - TablePaging - TableSort # Related Links [Platform Wiki](https://landmarkcu.visualstudio.com/Platform/_wiki/wikis/Platform.wiki/241/Welcome) ### Project Files [Document Manager Overview](https://landmarkcu.sharepoint.com/:p:/r/sites/ITProgrammingDevelopmentTeam/_layouts/15/Doc.aspx?sourcedoc=%7BF7A54712-F5E5-4F9D-9008-3F8CE3BFFA3F%7D&file=Document%20Manager%20Overview.pptx&action=edit&mobileredirect=true) [Document Manager High Level WorkFlows](https://landmarkcu.sharepoint.com/:u:/r/sites/ITProgrammingDevelopmentTeam/Shared%20Documents/General/Projects/2022_Document%20Manager/03_Design%20and%20Development/Document%20Manager%20High%20Level%20WorkFlows.vsdx?d=wcee7d32e6768413a8fa3d7a660791f4f&csf=1&web=1&e=cJNi4U) [Document Manager Components](https://landmarkcu.sharepoint.com/sites/ITProgrammingDevelopmentTeam/Shared%20Documents/Forms/AllItems.aspx?id=%2Fsites%2FITProgrammingDevelopmentTeam%2FShared%20Documents%2FGeneral%2FProjects%2F2022%5FDocument%20Manager%2F05%5FDocumentation%2FDocument%5FManager%5FComponents%2Epdf&viewid=99d45851%2D1c5c%2D483e%2Dbdda%2D7d5bee978feb&parent=%2Fsites%2FITProgrammingDevelopmentTeam%2FShared%20Documents%2FGeneral%2FProjects%2F2022%5FDocument%20Manager%2F05%5FDocumentation)