Provides the structure required to hold additional matter metadata for default values from term store. It includes term store information for matter, client, practice group, area of law and sub area of law.
 /// <summary>
 /// Assigns content type
 /// </summary>
 /// <param name="clientcontext">SP client context</param>
 /// <param name="matterMetadata">Object containing metadata for Matter</param>
 internal static void AssignContentType(ClientContext clientcontext, MatterMetadata matterMetadata)
 {
     // For each value in the list of Content Type Names
     // Add that content Type to the Library
     string defaultContentType = matterMetadata.ContentTypes[0];
     try
     {
         // Returns the selected Content types from the Site Content Types
         IList<ContentType> contentTypeCollection = GetContentTypeData(clientcontext, matterMetadata.ContentTypes);
         if (null != contentTypeCollection)
         {
             Microsoft.SharePoint.Client.Web web = clientcontext.Web;
             List matterList = web.Lists.GetByTitle(matterMetadata.Matter.MatterName);
             FieldCollection fields = GetContentType(clientcontext, contentTypeCollection, matterList);
             matterMetadata = GetWSSId(clientcontext, matterMetadata, fields);
             MatterProvisionHelper.SetFieldValues(matterMetadata, fields);
             clientcontext.ExecuteQuery();
             SetDefaultContentType(clientcontext, matterList, defaultContentType);
             MatterProvisionHelper.CreateView(clientcontext, matterList);
         }
     }
     // SharePoint Specific Exception
     catch (Exception exception)
     {
         Utility.DisplayAndLogError(Utility.ErrorFilePath, string.Format(CultureInfo.InvariantCulture, ConfigurationManager.AppSettings["ErrorMessage"], "assigning ContentType"));
         Utility.DisplayAndLogError(Utility.ErrorFilePath, "Message: " + exception.Message + "Matter name: " + matterMetadata.Matter.MatterName + "\nStacktrace: " + exception.StackTrace);
         throw;
     }
 }
        /// <summary>
        /// Assign field values for specified content types to the specified matter (document library)
        /// </summary>
        /// <param name="matterMetadata">Object containing metadata for Matter</param>
        /// <param name="fields">Field Collection object</param>
        internal static void SetFieldValues(MatterMetadata matterMetadata, FieldCollection fields)
        {
            fields.GetByInternalNameOrTitle(ConfigurationManager.AppSettings["ContentTypeColumnClientId"]).DefaultValue = matterMetadata.Client.ClientId;
            fields.GetByInternalNameOrTitle(ConfigurationManager.AppSettings["ContentTypeColumnClientId"]).ReadOnlyField = true;
            fields.GetByInternalNameOrTitle(ConfigurationManager.AppSettings["ContentTypeColumnClientId"]).SetShowInDisplayForm(true);
            fields.GetByInternalNameOrTitle(ConfigurationManager.AppSettings["ContentTypeColumnClientId"]).Update();
            fields.GetByInternalNameOrTitle(ConfigurationManager.AppSettings["ContentTypeColumnClientName"]).ReadOnlyField = true;
            fields.GetByInternalNameOrTitle(ConfigurationManager.AppSettings["ContentTypeColumnClientName"]).SetShowInDisplayForm(true);
            fields.GetByInternalNameOrTitle(ConfigurationManager.AppSettings["ContentTypeColumnClientName"]).DefaultValue = matterMetadata.Client.ClientName;
            fields.GetByInternalNameOrTitle(ConfigurationManager.AppSettings["ContentTypeColumnClientName"]).Update();

            fields.GetByInternalNameOrTitle(ConfigurationManager.AppSettings["ContentTypeColumnMatterId"]).DefaultValue = matterMetadata.Matter.MatterId;
            fields.GetByInternalNameOrTitle(ConfigurationManager.AppSettings["ContentTypeColumnMatterId"]).ReadOnlyField = true;
            fields.GetByInternalNameOrTitle(ConfigurationManager.AppSettings["ContentTypeColumnMatterId"]).SetShowInDisplayForm(true);
            fields.GetByInternalNameOrTitle(ConfigurationManager.AppSettings["ContentTypeColumnMatterId"]).Update();
            fields.GetByInternalNameOrTitle(ConfigurationManager.AppSettings["ContentTypeColumnMatterName"]).DefaultValue = matterMetadata.Matter.MatterName;
            fields.GetByInternalNameOrTitle(ConfigurationManager.AppSettings["ContentTypeColumnMatterName"]).ReadOnlyField = true;
            fields.GetByInternalNameOrTitle(ConfigurationManager.AppSettings["ContentTypeColumnMatterName"]).SetShowInDisplayForm(true);
            fields.GetByInternalNameOrTitle(ConfigurationManager.AppSettings["ContentTypeColumnMatterName"]).Update();
            fields.GetByInternalNameOrTitle(ConfigurationManager.AppSettings["ContentTypeColumnPracticeGroup"]).DefaultValue = string.Format(CultureInfo.InvariantCulture, Constants.MetadataDefaultValue, matterMetadata.PracticeGroupTerm.WssId, matterMetadata.PracticeGroupTerm.TermName, matterMetadata.PracticeGroupTerm.Id);
            fields.GetByInternalNameOrTitle(ConfigurationManager.AppSettings["ContentTypeColumnPracticeGroup"]).SetShowInDisplayForm(true);
            fields.GetByInternalNameOrTitle(ConfigurationManager.AppSettings["ContentTypeColumnPracticeGroup"]).Update();
            fields.GetByInternalNameOrTitle(ConfigurationManager.AppSettings["ContentTypeColumnAreaOfLaw"]).DefaultValue = string.Format(CultureInfo.InvariantCulture, Constants.MetadataDefaultValue, matterMetadata.AreaTerm.WssId, matterMetadata.AreaTerm.TermName, matterMetadata.AreaTerm.Id);
            fields.GetByInternalNameOrTitle(ConfigurationManager.AppSettings["ContentTypeColumnAreaOfLaw"]).SetShowInDisplayForm(true);
            fields.GetByInternalNameOrTitle(ConfigurationManager.AppSettings["ContentTypeColumnAreaOfLaw"]).Update();
            fields.GetByInternalNameOrTitle(ConfigurationManager.AppSettings["ContentTypeColumnSubareaOfLaw"]).DefaultValue = string.Format(CultureInfo.InvariantCulture, Constants.MetadataDefaultValue, matterMetadata.SubareaTerm.WssId, matterMetadata.SubareaTerm.TermName, matterMetadata.SubareaTerm.Id);
            fields.GetByInternalNameOrTitle(ConfigurationManager.AppSettings["ContentTypeColumnSubareaOfLaw"]).SetShowInDisplayForm(true);
            fields.GetByInternalNameOrTitle(ConfigurationManager.AppSettings["ContentTypeColumnSubareaOfLaw"]).Update();
        }
Beispiel #3
0
        /// <summary>
        /// Creates sample data based on the information provided
        /// </summary>
        /// <param name="listval">Matter details collection</param>
        /// <param name="clientDetails">Client details collection</param>
        /// <param name="configVal">Config values from Excel</param>        
        internal static void CreateData(List<DataStorage> listval, ClientTermSets clientDetails, Dictionary<string, string> configVal)
        {
            try
            {
                int successMatterNameCount = 0, alreadyExistsMatterCount = 0;
                Regex validateMatterId = new Regex(ConfigurationManager.AppSettings["SpecialCharacterExpressionMatterId"]),
                      validateMatterTitle = new Regex(ConfigurationManager.AppSettings["SpecialCharacterExpressionMatterTitle"]),
                      validateMatterDesc = new Regex(ConfigurationManager.AppSettings["SpecialCharacterExpressionMatterDescription"]);
                //Read data from term store
                TermSets terms = TermStoreOperations.FetchGroupTerms(configVal);
                if (null == terms)
                {
                    Utility.DisplayAndLogError(errorFilePath, "Failed to get Group Terms, skipping matter creation.");
                    return;
                }
                else
                {
                    MatterMetadata matterMetadata = new MatterMetadata();
                    //retrieve data from the list
                    for (int count = 0; count < listval.Count; count++)
                    {
                        string clientName = listval[count].ClientName;
                        /* Read from Term store */
                        Client client = clientDetails.ClientTerms.Where(item => item.ClientName.Equals(clientName, StringComparison.OrdinalIgnoreCase)).FirstOrDefault();
                        if (null == client)
                        {
                            Console.WriteLine("Failed to get client Id and/or client Url from term store for '{0}' client.", clientName);
                            Console.WriteLine("-------------------------------------------------------------------------------");
                            continue;
                        }

                        List<string> practiceGroupsList = Utility.ProcessString(listval[count].PracticeGroup).Split(';').ToList();
                        List<string> areaOfLawsList = Utility.ProcessString(listval[count].AreaOfLaw).Split(';').ToList();
                        List<string> subAreaOfLawsList = Utility.ProcessString(listval[count].SubAreaOfLaw).Split(';').ToList();

                        string folders = string.Empty;
                        string documentTemplate = string.Empty;
                        bool flag = false;

                        AssociateTermStoreProperties(listval, terms, matterMetadata, count, practiceGroupsList, areaOfLawsList, subAreaOfLawsList, ref folders, ref documentTemplate, ref flag);
                        if (string.IsNullOrWhiteSpace(documentTemplate) || string.IsNullOrWhiteSpace(listval[count].DefaultContentType))
                        {
                            Console.WriteLine("Skipping matter creation as no matching document templates exists in term store corresponding to entry for '{0}' in the configuration Excel", client.ClientName);
                            Console.WriteLine("-------------------------------------------------------------------------------");
                            continue;
                        }

                        string[] contentTypes = documentTemplate.Split(';');
                        Matter matterObj = new Matter(listval[count]);
                        Console.WriteLine("Client details fetched");
                        Console.WriteLine("Client name: {0}", clientName);

                        using (ClientContext clientContext = MatterProvisionHelperUtility.GetClientContext(client.ClientUrl, configVal))
                        {
                            CheckMatterCreationStatus(configVal, ref successMatterNameCount, ref alreadyExistsMatterCount, validateMatterId, validateMatterTitle, validateMatterDesc, matterMetadata, clientName, client, folders, contentTypes, matterObj, clientContext);
                        }
                    }  // end of for

                    Console.ForegroundColor = ConsoleColor.Green;
                    Console.WriteLine(ConfigurationManager.AppSettings["MatterSuccess"], successMatterNameCount, listval.Count);
                    Console.ForegroundColor = ConsoleColor.Yellow;
                    Console.WriteLine(ConfigurationManager.AppSettings["MatterFound"], alreadyExistsMatterCount);
                    Console.ForegroundColor = ConsoleColor.Red;
                    Console.WriteLine(ConfigurationManager.AppSettings["MatterFailure"], Convert.ToString((listval.Count - (successMatterNameCount + alreadyExistsMatterCount)), CultureInfo.InvariantCulture), listval.Count);
                    Console.ForegroundColor = ConsoleColor.White;
                }
            }
            catch (Exception exception)
            {
                Utility.DisplayAndLogError(errorFilePath, "Message: " + exception.Message + "\nStacktrace: " + exception.StackTrace);
            }
        }
Beispiel #4
0
        /// <summary>
        /// Created to refactor CreateData method
        /// </summary>
        /// <param name="configVal">Dictionary object</param>
        /// <param name="successMatterNameCount">Success matter name</param>
        /// <param name="matterMetadata">Matter metadata</param>
        /// <param name="clientName">Client name</param>
        /// <param name="client">Client object</param>
        /// <param name="contentTypes">Array of content type</param>
        /// <param name="matterObj">Matter object</param>
        /// <param name="clientContext">Client context</param>
        /// <returns>integer value</returns>
        private static int OnMatterCreationSuccess(Dictionary<string, string> configVal, int successMatterNameCount, MatterMetadata matterMetadata, string clientName, Client client, string[] contentTypes, Matter matterObj, ClientContext clientContext)
        {
            Console.WriteLine("Created Matter, OneNote library, calendar list and Task List");

            List<string> listResponsibleAttorneys = matterObj.TeamInfo.ResponsibleAttorneys.Trim().Split(';').ToList();
            List<string> listAttorneys = matterObj.TeamInfo.Attorneys.Trim().Split(';').ToList();
            List<string> listBlockedUploadUsers = matterObj.TeamInfo.BlockedUploadUsers.Trim().Split(';').ToList();
            IList<IList<string>> assignUserNames = new List<IList<string>>();
            assignUserNames.Add(listResponsibleAttorneys);
            assignUserNames.Add(listAttorneys);
            assignUserNames.Add(listBlockedUploadUsers);
            matterObj.AssignUserNames = assignUserNames;
            matterMetadata.Matter = matterObj;
            matterMetadata.Client = client;
            // Create Matter Landing page
            MatterProvisionHelper.CreateMatterLandingPage(clientContext, client, matterObj);
            Console.WriteLine("Created matter landing Page");

            // Step 4 Assign Content Types
            matterMetadata.ContentTypes = contentTypes.Distinct().ToList();
            MatterProvisionHelperUtility.AssignContentType(clientContext, matterMetadata);
            Console.WriteLine("Assigned content type");

            // Step 5 Assign Permissions
            bool isCalendarEnabled = Convert.ToBoolean(ConfigurationManager.AppSettings["CalendarCreationEnabled"], CultureInfo.InvariantCulture);
            bool isTaskEnabled = Convert.ToBoolean(ConfigurationManager.AppSettings["TaskListCreationEnabled"], CultureInfo.InvariantCulture);
            string calendarName = string.Empty, taskListName = string.Empty;
            if (isCalendarEnabled)
            {
                calendarName = string.Concat(matterObj.MatterName, ConfigurationManager.AppSettings["CalendarNameSuffix"]);
            }
            if (isTaskEnabled)
            {
                taskListName = string.Concat(matterObj.MatterName, ConfigurationManager.AppSettings["TaskListSuffix"]);
            }
            List<string> responsibleAttorneysList = matterObj.TeamInfo.ResponsibleAttorneys.Split(';').Where(responsibleAttorney => !string.IsNullOrWhiteSpace(responsibleAttorney.Trim())).Select(responsibleAttorney => responsibleAttorney.Trim()).ToList();
            MatterProvisionHelperUtility.AssignUserPermissions(clientContext, matterObj.MatterName, responsibleAttorneysList, ConfigurationManager.AppSettings["FullControl"]);
            MatterProvisionHelperUtility.AssignUserPermissions(clientContext, matterObj.MatterName + ConfigurationManager.AppSettings["OneNoteLibrarySuffix"], responsibleAttorneysList, ConfigurationManager.AppSettings["FullControl"]);
            if (isCalendarEnabled)
            {
                // If isCreateCalendar flag is enabled; assign FULL CONTROL permissions to calendar list
                MatterProvisionHelperUtility.AssignUserPermissions(clientContext, matterObj.MatterName, responsibleAttorneysList, ConfigurationManager.AppSettings["FullControl"], calendarName);
            }
            if (isTaskEnabled)
            {
                // If isTaskEnabled flag is enabled; assign FULL CONTROL permissions to task list
                MatterProvisionHelperUtility.AssignUserPermissions(clientContext, taskListName, responsibleAttorneysList, ConfigurationManager.AppSettings["FullControl"]);
            }
            List<string> attorneysList = new List<string>();
            string[] attorneys = matterObj.TeamInfo.Attorneys.Split(';');
            if (!string.IsNullOrWhiteSpace(attorneys[0].Trim()))
            {
                int attorneyCount = matterObj.TeamInfo.Attorneys.Split(';').Length;
                for (int iLength = 0; iLength < attorneyCount; iLength++)
                {
                    attorneysList.Add(attorneys[iLength].Trim());
                }
                MatterProvisionHelperUtility.AssignUserPermissions(clientContext, matterObj.MatterName, attorneysList, ConfigurationManager.AppSettings["Contribute"]);
                MatterProvisionHelperUtility.AssignUserPermissions(clientContext, matterObj.MatterName + ConfigurationManager.AppSettings["OneNoteLibrarySuffix"], attorneysList, ConfigurationManager.AppSettings["Contribute"]);
                if (isCalendarEnabled)
                {
                    //If isCreateCalendar flag is enabled; assign CONTRIBUTE permissions to calendar list
                    MatterProvisionHelperUtility.AssignUserPermissions(clientContext, matterObj.MatterName, attorneysList, ConfigurationManager.AppSettings["Contribute"], calendarName);
                }
                if (isTaskEnabled)
                {
                    //If isTaskEnabled flag is enabled; assign CONTRIBUTE permissions to task list
                    MatterProvisionHelperUtility.AssignUserPermissions(clientContext, taskListName, attorneysList, ConfigurationManager.AppSettings["Contribute"]);
                }
            }

            List<string> blockedUploadUserList = new List<string>();
            string[] blockedUploadUsers = matterObj.TeamInfo.BlockedUploadUsers.Split(';');
            if (!string.IsNullOrWhiteSpace(blockedUploadUsers[0].Trim()))
            {
                int blockUploadUsersCount = blockedUploadUsers.Length;
                for (int iLength = 0; iLength < blockUploadUsersCount; iLength++)
                {
                    blockedUploadUserList.Add(blockedUploadUsers[iLength].Trim());
                }
                MatterProvisionHelperUtility.AssignUserPermissions(clientContext, matterObj.MatterName, blockedUploadUserList, ConfigurationManager.AppSettings["Read"]);
                MatterProvisionHelperUtility.AssignUserPermissions(clientContext, matterObj.MatterName + ConfigurationManager.AppSettings["OneNoteLibrarySuffix"], blockedUploadUserList, ConfigurationManager.AppSettings["Read"]);
                if (isCalendarEnabled)
                {
                    //If isCreateCalendar flag is enabled; assign READ permissions to calendar list
                    MatterProvisionHelperUtility.AssignUserPermissions(clientContext, matterObj.MatterName, blockedUploadUserList, ConfigurationManager.AppSettings["Read"], calendarName);
                }
                if (isTaskEnabled)
                {
                    //If isTaskEnabled flag is enabled; assign READ permissions to task list
                    MatterProvisionHelperUtility.AssignUserPermissions(clientContext, taskListName, blockedUploadUserList, ConfigurationManager.AppSettings["Read"]);
                }
            }
            Console.WriteLine("Assigned permission");

            // Step 6 Stamp properties 
            ListOperations.UpdateMetadataForList(clientContext, matterObj, client);
            Console.WriteLine("Updated matter properties");

            // Step 7 Add entry to list
            MatterProvisionHelper.InsertIntoMatterCenterMatters(configVal, clientName + "_" + matterObj.MatterName, matterObj, client);
            Console.WriteLine("{0} created successfully", matterObj.MatterName);
            Console.WriteLine("-------------------------------------------------------------------------------");
            successMatterNameCount++;
            return successMatterNameCount;
        }
Beispiel #5
0
 /// <summary>
 /// Method to associate 
 /// </summary>
 /// <param name="listval">Value of list</param>
 /// <param name="terms">Termsets object</param>
 /// <param name="matterMetadata">Matter meta data</param>
 /// <param name="count">Integer count</param>
 /// <param name="practiceGroupsList">List of practice groups</param>
 /// <param name="areaOfLawsList">List of area of laws</param>
 /// <param name="subAreaOfLawsList">List of sub area of law</param>
 /// <param name="folders">Folder name</param>
 /// <param name="documentTemplate">Template of document</param>
 /// <param name="flag">Boolean flag</param>
 private static void AssociateTermStoreProperties(List<DataStorage> listval, TermSets terms, MatterMetadata matterMetadata, int count, List<string> practiceGroupsList, List<string> areaOfLawsList, List<string> subAreaOfLawsList, ref string folders, ref string documentTemplate, ref bool flag)
 {
     foreach (PracticeGroupTerm practiceGroup in terms.PGTerms)
     {
         foreach (AreaTerm areaTerm in practiceGroup.AreaTerms)
         {
             foreach (SubareaTerm subAreaTerm in areaTerm.SubareaTerms)
             {
                 if (subAreaOfLawsList.Contains(subAreaTerm.TermName, StringComparer.OrdinalIgnoreCase) && areaOfLawsList.Contains(areaTerm.TermName, StringComparer.OrdinalIgnoreCase) && practiceGroupsList.Contains(practiceGroup.TermName, StringComparer.OrdinalIgnoreCase))
                 {
                     if (Convert.ToBoolean(subAreaTerm.IsNoFolderStructurePresent, CultureInfo.InvariantCulture))
                     {
                         folders = string.IsNullOrWhiteSpace(areaTerm.FolderNames) ? practiceGroup.FolderNames : areaTerm.FolderNames;
                     }
                     else
                     {
                         folders = subAreaTerm.FolderNames;
                     }
                     documentTemplate = subAreaTerm.ContentTypeName + ";" + subAreaTerm.DocumentTemplates;
                     listval[count].DefaultContentType = subAreaTerm.ContentTypeName;
                     // Setting metadata properties for the Matter
                     matterMetadata.PracticeGroupTerm = practiceGroup;
                     matterMetadata.AreaTerm = areaTerm;
                     matterMetadata.SubareaTerm = subAreaTerm;
                     if (!string.IsNullOrWhiteSpace(subAreaTerm.DocumentTemplates))
                     {
                         listval[count].DocumentCount = Convert.ToString(subAreaTerm.DocumentTemplates.Split(';').Count(), CultureInfo.InvariantCulture);
                     }
                     else
                     {
                         listval[count].DocumentCount = Constants.ZERO_DOCUMENT_COUNT;
                     }
                     flag = true;
                     break;
                 }
             }
             if (flag)
             {
                 break;
             }
         }
         if (flag)
         {
             break;
         }
     }
 }
Beispiel #6
0
 /// <summary>
 /// Method to check matter creation status
 /// </summary>
 /// <param name="configVal">dictionary object</param>
 /// <param name="successMatterNameCount">success matter name</param>
 /// <param name="alreadyExistsMatterCount">count of existing matter</param>
 /// <param name="validateMatterId">validate matter id</param>
 /// <param name="validateMatterTitle">validate title</param>
 /// <param name="validateMatterDesc"> validate description</param>
 /// <param name="matterMetadata">matter metadata</param>
 /// <param name="clientName">client name</param>
 /// <param name="client">client object</param>
 /// <param name="folders">folder name</param>
 /// <param name="contentTypes">array of content type</param>
 /// <param name="matterObj">matter object</param>
 /// <param name="clientContext">client context</param>
 private static void CheckMatterCreationStatus(Dictionary<string, string> configVal, ref int successMatterNameCount, ref int alreadyExistsMatterCount, Regex validateMatterId, Regex validateMatterTitle, Regex validateMatterDesc, MatterMetadata matterMetadata, string clientName, Client client, string folders, string[] contentTypes, Matter matterObj, ClientContext clientContext)
 {
     string matterCreatedSuccessfully;
     if (Convert.ToInt32(ConfigurationManager.AppSettings["MatterIdMaxLength"], CultureInfo.InvariantCulture) < matterObj.MatterId.Length || (!validateMatterId.IsMatch(matterObj.MatterId)))
     {
         matterCreatedSuccessfully = Constants.InvalidMatterID;
     }
     else if (Convert.ToInt32(ConfigurationManager.AppSettings["MatterTitleMaxLength"], CultureInfo.InvariantCulture) < matterObj.MatterName.Length || (!validateMatterTitle.IsMatch(matterObj.MatterName)))
     {
         matterCreatedSuccessfully = Constants.InvalidMatterTitle;
     }
     else if (!validateMatterDesc.IsMatch(matterObj.MatterDescription))
     {
         matterCreatedSuccessfully = Constants.InvalidMatterDescription;
     }
     else if (Constants.InvalidConflictDate.Equals(matterObj.Conflict.ConflictCheckOn))
     {
         matterCreatedSuccessfully = Constants.InvalidConflictDate;
     }
     else
     {
         // Call to create matter
         matterCreatedSuccessfully = MatterProvisionHelper.CreateMatter(clientContext, client.ClientUrl, matterObj, folders);
     }
     if (Constants.MatterProvisionPrerequisitesSuccess == matterCreatedSuccessfully)
     {
         try
         {
             successMatterNameCount = OnMatterCreationSuccess(configVal, successMatterNameCount, matterMetadata, clientName, client, contentTypes, matterObj, clientContext);
         }
         catch (Exception exception)
         {
             Utility.DisplayAndLogError(errorFilePath, "Message: " + exception.Message + "\nStacktrace: " + exception.StackTrace);
             MatterProvisionHelper.DeleteMatter(clientContext, matterObj);
         }
     }
     else
     {
         switch (matterCreatedSuccessfully)
         {
             case "1":
                 // matter is already present
                 Console.WriteLine("Matter: {0} is already present", matterObj.MatterName);
                 alreadyExistsMatterCount++;
                 break;
             case "2":
                 // OneNote library is already present
                 Console.WriteLine("OneNote Library: {0} is already present", matterObj.MatterName + ConfigurationManager.AppSettings["OneNoteLibrarySuffix"]);
                 alreadyExistsMatterCount++;
                 break;
             case "3":
                 // matter landing page is already present
                 Console.WriteLine("Matter Landing Page: {0} is already present", matterObj.MatterName);
                 alreadyExistsMatterCount++;
                 break;
             case "4":
                 // Validation fail for matter ID
                 Console.WriteLine("Matter Id validation fail for Matter {0}", matterObj.MatterName);
                 break;
             case "5":
                 // Validation fail for matter Name 
                 Console.WriteLine("Matter Name validation fail for Matter {0}", matterObj.MatterName);
                 break;
             case "6":
                 // Validation fail for matter description
                 Console.WriteLine("Matter Description validation fail for Matter {0}", matterObj.MatterName);
                 break;
             case "7":
                 // Validation fail for conflict date
                 Console.WriteLine("Conflict date validation fail for Matter {0}", matterObj.MatterName);
                 break;
         }
         Console.WriteLine("-------------------------------------------------------------------------------");
     }
 }
        /// <summary>
        /// Function to get the WssID for the Practice group, Area of law and Subarea of law terms
        /// </summary>
        /// <param name="clientContext">SP client context</param>
        /// <param name="matterMetadata">Object containing metadata for Matter</param>
        /// <param name="fields">Field Collection object</param>
        /// <returns>An Object containing metadata for Matter</returns>
        internal static MatterMetadata GetWSSId(ClientContext clientContext, MatterMetadata matterMetadata, FieldCollection fields)
        {
            ClientResult<TaxonomyFieldValue> practiceGroupResult = clientContext.CastTo<TaxonomyField>
                (fields.GetByInternalNameOrTitle(ConfigurationManager.AppSettings["ContentTypeColumnPracticeGroup"]))
                .GetFieldValueAsTaxonomyFieldValue(matterMetadata.PracticeGroupTerm.Id);
            ClientResult<TaxonomyFieldValue> areaOfLawResult = clientContext.CastTo<TaxonomyField>
                (fields.GetByInternalNameOrTitle(ConfigurationManager.AppSettings["ContentTypeColumnAreaOfLaw"]))
                .GetFieldValueAsTaxonomyFieldValue(matterMetadata.AreaTerm.Id);
            ClientResult<TaxonomyFieldValue> subareaOfLawResult = clientContext.CastTo<TaxonomyField>
                (fields.GetByInternalNameOrTitle(ConfigurationManager.AppSettings["ContentTypeColumnSubareaOfLaw"]))
                .GetFieldValueAsTaxonomyFieldValue(matterMetadata.SubareaTerm.Id);
            clientContext.ExecuteQuery();

            matterMetadata.PracticeGroupTerm.WssId = practiceGroupResult.Value.WssId;
            matterMetadata.AreaTerm.WssId = areaOfLawResult.Value.WssId;
            matterMetadata.SubareaTerm.WssId = subareaOfLawResult.Value.WssId;
            return matterMetadata;
        }
Beispiel #8
0
        /// <summary>
        /// Created to refactor CreateData method
        /// </summary>
        /// <param name="configVal">Dictionary object</param>
        /// <param name="successMatterNameCount">Success matter name</param>
        /// <param name="matterMetadata">Matter metadata</param>
        /// <param name="clientName">Client name</param>
        /// <param name="client">Client object</param>
        /// <param name="contentTypes">Array of content type</param>
        /// <param name="matterObj">Matter object</param>
        /// <param name="clientContext">Client context</param>
        /// <returns>integer value</returns>
        private static int OnMatterCreationSuccess(Dictionary <string, string> configVal, int successMatterNameCount, MatterMetadata matterMetadata, string clientName, Client client, string[] contentTypes, Matter matterObj, ClientContext clientContext)
        {
            Console.WriteLine("Created Matter, OneNote library, calendar list and Task List");

            List <string>           listResponsibleAttorneys = matterObj.TeamInfo.ResponsibleAttorneys.Trim().Split(';').ToList();
            List <string>           listAttorneys            = matterObj.TeamInfo.Attorneys.Trim().Split(';').ToList();
            List <string>           listBlockedUploadUsers   = matterObj.TeamInfo.BlockedUploadUsers.Trim().Split(';').ToList();
            IList <IList <string> > assignUserNames          = new List <IList <string> >();

            assignUserNames.Add(listResponsibleAttorneys);
            assignUserNames.Add(listAttorneys);
            assignUserNames.Add(listBlockedUploadUsers);
            matterObj.AssignUserNames = assignUserNames;
            matterMetadata.Matter     = matterObj;
            matterMetadata.Client     = client;
            // Create Matter Landing page
            MatterProvisionHelper.CreateMatterLandingPage(clientContext, client, matterObj);
            Console.WriteLine("Created matter landing Page");

            // Step 4 Assign Content Types
            matterMetadata.ContentTypes = contentTypes.Distinct().ToList();
            MatterProvisionHelperUtility.AssignContentType(clientContext, matterMetadata);
            Console.WriteLine("Assigned content type");

            // Step 5 Assign Permissions
            bool   isCalendarEnabled = Convert.ToBoolean(ConfigurationManager.AppSettings["CalendarCreationEnabled"], CultureInfo.InvariantCulture);
            bool   isTaskEnabled = Convert.ToBoolean(ConfigurationManager.AppSettings["TaskListCreationEnabled"], CultureInfo.InvariantCulture);
            string calendarName = string.Empty, taskListName = string.Empty;

            if (isCalendarEnabled)
            {
                calendarName = string.Concat(matterObj.MatterName, ConfigurationManager.AppSettings["CalendarNameSuffix"]);
            }
            if (isTaskEnabled)
            {
                taskListName = string.Concat(matterObj.MatterName, ConfigurationManager.AppSettings["TaskListSuffix"]);
            }
            List <string> responsibleAttorneysList = matterObj.TeamInfo.ResponsibleAttorneys.Split(';').Where(responsibleAttorney => !string.IsNullOrWhiteSpace(responsibleAttorney.Trim())).Select(responsibleAttorney => responsibleAttorney.Trim()).ToList();

            MatterProvisionHelperUtility.AssignUserPermissions(clientContext, matterObj.MatterName, responsibleAttorneysList, ConfigurationManager.AppSettings["FullControl"]);
            MatterProvisionHelperUtility.AssignUserPermissions(clientContext, matterObj.MatterName + ConfigurationManager.AppSettings["OneNoteLibrarySuffix"], responsibleAttorneysList, ConfigurationManager.AppSettings["FullControl"]);
            if (isCalendarEnabled)
            {
                // If isCreateCalendar flag is enabled; assign FULL CONTROL permissions to calendar list
                MatterProvisionHelperUtility.AssignUserPermissions(clientContext, matterObj.MatterName, responsibleAttorneysList, ConfigurationManager.AppSettings["FullControl"], calendarName);
            }
            if (isTaskEnabled)
            {
                // If isTaskEnabled flag is enabled; assign FULL CONTROL permissions to task list
                MatterProvisionHelperUtility.AssignUserPermissions(clientContext, taskListName, responsibleAttorneysList, ConfigurationManager.AppSettings["FullControl"]);
            }
            List <string> attorneysList            = new List <string>();

            string[] attorneys = matterObj.TeamInfo.Attorneys.Split(';');
            if (!string.IsNullOrWhiteSpace(attorneys[0].Trim()))
            {
                int attorneyCount = matterObj.TeamInfo.Attorneys.Split(';').Length;
                for (int iLength = 0; iLength < attorneyCount; iLength++)
                {
                    attorneysList.Add(attorneys[iLength].Trim());
                }
                MatterProvisionHelperUtility.AssignUserPermissions(clientContext, matterObj.MatterName, attorneysList, ConfigurationManager.AppSettings["Contribute"]);
                MatterProvisionHelperUtility.AssignUserPermissions(clientContext, matterObj.MatterName + ConfigurationManager.AppSettings["OneNoteLibrarySuffix"], attorneysList, ConfigurationManager.AppSettings["Contribute"]);
                if (isCalendarEnabled)
                {
                    //If isCreateCalendar flag is enabled; assign CONTRIBUTE permissions to calendar list
                    MatterProvisionHelperUtility.AssignUserPermissions(clientContext, matterObj.MatterName, attorneysList, ConfigurationManager.AppSettings["Contribute"], calendarName);
                }
                if (isTaskEnabled)
                {
                    //If isTaskEnabled flag is enabled; assign CONTRIBUTE permissions to task list
                    MatterProvisionHelperUtility.AssignUserPermissions(clientContext, taskListName, attorneysList, ConfigurationManager.AppSettings["Contribute"]);
                }
            }

            List <string> blockedUploadUserList = new List <string>();

            string[] blockedUploadUsers = matterObj.TeamInfo.BlockedUploadUsers.Split(';');
            if (!string.IsNullOrWhiteSpace(blockedUploadUsers[0].Trim()))
            {
                int blockUploadUsersCount = blockedUploadUsers.Length;
                for (int iLength = 0; iLength < blockUploadUsersCount; iLength++)
                {
                    blockedUploadUserList.Add(blockedUploadUsers[iLength].Trim());
                }
                MatterProvisionHelperUtility.AssignUserPermissions(clientContext, matterObj.MatterName, blockedUploadUserList, ConfigurationManager.AppSettings["Read"]);
                MatterProvisionHelperUtility.AssignUserPermissions(clientContext, matterObj.MatterName + ConfigurationManager.AppSettings["OneNoteLibrarySuffix"], blockedUploadUserList, ConfigurationManager.AppSettings["Read"]);
                if (isCalendarEnabled)
                {
                    //If isCreateCalendar flag is enabled; assign READ permissions to calendar list
                    MatterProvisionHelperUtility.AssignUserPermissions(clientContext, matterObj.MatterName, blockedUploadUserList, ConfigurationManager.AppSettings["Read"], calendarName);
                }
                if (isTaskEnabled)
                {
                    //If isTaskEnabled flag is enabled; assign READ permissions to task list
                    MatterProvisionHelperUtility.AssignUserPermissions(clientContext, taskListName, blockedUploadUserList, ConfigurationManager.AppSettings["Read"]);
                }
            }
            Console.WriteLine("Assigned permission");

            // Step 6 Stamp properties
            ListOperations.UpdateMetadataForList(clientContext, matterObj, client);
            Console.WriteLine("Updated matter properties");

            // Step 7 Add entry to list
            MatterProvisionHelper.InsertIntoMatterCenterMatters(configVal, clientName + "_" + matterObj.MatterName, matterObj, client);
            Console.WriteLine("{0} created successfully", matterObj.MatterName);
            Console.WriteLine("-------------------------------------------------------------------------------");
            successMatterNameCount++;
            return(successMatterNameCount);
        }
Beispiel #9
0
 /// <summary>
 /// Method to associate
 /// </summary>
 /// <param name="listval">Value of list</param>
 /// <param name="terms">Termsets object</param>
 /// <param name="matterMetadata">Matter meta data</param>
 /// <param name="count">Integer count</param>
 /// <param name="practiceGroupsList">List of practice groups</param>
 /// <param name="areaOfLawsList">List of area of laws</param>
 /// <param name="subAreaOfLawsList">List of sub area of law</param>
 /// <param name="folders">Folder name</param>
 /// <param name="documentTemplate">Template of document</param>
 /// <param name="flag">Boolean flag</param>
 private static void AssociateTermStoreProperties(List <DataStorage> listval, TermSets terms, MatterMetadata matterMetadata, int count, List <string> practiceGroupsList, List <string> areaOfLawsList, List <string> subAreaOfLawsList, ref string folders, ref string documentTemplate, ref bool flag)
 {
     foreach (PracticeGroupTerm practiceGroup in terms.PGTerms)
     {
         foreach (AreaTerm areaTerm in practiceGroup.AreaTerms)
         {
             foreach (SubareaTerm subAreaTerm in areaTerm.SubareaTerms)
             {
                 if (subAreaOfLawsList.Contains(subAreaTerm.TermName, StringComparer.OrdinalIgnoreCase) && areaOfLawsList.Contains(areaTerm.TermName, StringComparer.OrdinalIgnoreCase) && practiceGroupsList.Contains(practiceGroup.TermName, StringComparer.OrdinalIgnoreCase))
                 {
                     if (Convert.ToBoolean(subAreaTerm.IsNoFolderStructurePresent, CultureInfo.InvariantCulture))
                     {
                         folders = string.IsNullOrWhiteSpace(areaTerm.FolderNames) ? practiceGroup.FolderNames : areaTerm.FolderNames;
                     }
                     else
                     {
                         folders = subAreaTerm.FolderNames;
                     }
                     documentTemplate = subAreaTerm.ContentTypeName + ";" + subAreaTerm.DocumentTemplates;
                     listval[count].DefaultContentType = subAreaTerm.ContentTypeName;
                     // Setting metadata properties for the Matter
                     matterMetadata.PracticeGroupTerm = practiceGroup;
                     matterMetadata.AreaTerm          = areaTerm;
                     matterMetadata.SubareaTerm       = subAreaTerm;
                     if (!string.IsNullOrWhiteSpace(subAreaTerm.DocumentTemplates))
                     {
                         listval[count].DocumentCount = Convert.ToString(subAreaTerm.DocumentTemplates.Split(';').Count(), CultureInfo.InvariantCulture);
                     }
                     else
                     {
                         listval[count].DocumentCount = Constants.ZERO_DOCUMENT_COUNT;
                     }
                     flag = true;
                     break;
                 }
             }
             if (flag)
             {
                 break;
             }
         }
         if (flag)
         {
             break;
         }
     }
 }
Beispiel #10
0
        /// <summary>
        /// Method to check matter creation status
        /// </summary>
        /// <param name="configVal">dictionary object</param>
        /// <param name="successMatterNameCount">success matter name</param>
        /// <param name="alreadyExistsMatterCount">count of existing matter</param>
        /// <param name="validateMatterId">validate matter id</param>
        /// <param name="validateMatterTitle">validate title</param>
        /// <param name="validateMatterDesc"> validate description</param>
        /// <param name="matterMetadata">matter metadata</param>
        /// <param name="clientName">client name</param>
        /// <param name="client">client object</param>
        /// <param name="folders">folder name</param>
        /// <param name="contentTypes">array of content type</param>
        /// <param name="matterObj">matter object</param>
        /// <param name="clientContext">client context</param>
        private static void CheckMatterCreationStatus(Dictionary <string, string> configVal, ref int successMatterNameCount, ref int alreadyExistsMatterCount, Regex validateMatterId, Regex validateMatterTitle, Regex validateMatterDesc, MatterMetadata matterMetadata, string clientName, Client client, string folders, string[] contentTypes, Matter matterObj, ClientContext clientContext)
        {
            string matterCreatedSuccessfully;

            if (Convert.ToInt32(ConfigurationManager.AppSettings["MatterIdMaxLength"], CultureInfo.InvariantCulture) < matterObj.MatterId.Length || (!validateMatterId.IsMatch(matterObj.MatterId)))
            {
                matterCreatedSuccessfully = Constants.InvalidMatterID;
            }
            else if (Convert.ToInt32(ConfigurationManager.AppSettings["MatterTitleMaxLength"], CultureInfo.InvariantCulture) < matterObj.MatterName.Length || (!validateMatterTitle.IsMatch(matterObj.MatterName)))
            {
                matterCreatedSuccessfully = Constants.InvalidMatterTitle;
            }
            else if (!validateMatterDesc.IsMatch(matterObj.MatterDescription))
            {
                matterCreatedSuccessfully = Constants.InvalidMatterDescription;
            }
            else if (Constants.InvalidConflictDate.Equals(matterObj.Conflict.ConflictCheckOn))
            {
                matterCreatedSuccessfully = Constants.InvalidConflictDate;
            }
            else
            {
                // Call to create matter
                matterCreatedSuccessfully = MatterProvisionHelper.CreateMatter(clientContext, client.ClientUrl, matterObj, folders);
            }
            if (Constants.MatterProvisionPrerequisitesSuccess == matterCreatedSuccessfully)
            {
                try
                {
                    successMatterNameCount = OnMatterCreationSuccess(configVal, successMatterNameCount, matterMetadata, clientName, client, contentTypes, matterObj, clientContext);
                }
                catch (Exception exception)
                {
                    Utility.DisplayAndLogError(errorFilePath, "Message: " + exception.Message + "\nStacktrace: " + exception.StackTrace);
                    MatterProvisionHelper.DeleteMatter(clientContext, matterObj);
                }
            }
            else
            {
                switch (matterCreatedSuccessfully)
                {
                case "1":
                    // matter is already present
                    Console.WriteLine("Matter: {0} is already present", matterObj.MatterName);
                    alreadyExistsMatterCount++;
                    break;

                case "2":
                    // OneNote library is already present
                    Console.WriteLine("OneNote Library: {0} is already present", matterObj.MatterName + ConfigurationManager.AppSettings["OneNoteLibrarySuffix"]);
                    alreadyExistsMatterCount++;
                    break;

                case "3":
                    // matter landing page is already present
                    Console.WriteLine("Matter Landing Page: {0} is already present", matterObj.MatterName);
                    alreadyExistsMatterCount++;
                    break;

                case "4":
                    // Validation fail for matter ID
                    Console.WriteLine("Matter Id validation fail for Matter {0}", matterObj.MatterName);
                    break;

                case "5":
                    // Validation fail for matter Name
                    Console.WriteLine("Matter Name validation fail for Matter {0}", matterObj.MatterName);
                    break;

                case "6":
                    // Validation fail for matter description
                    Console.WriteLine("Matter Description validation fail for Matter {0}", matterObj.MatterName);
                    break;

                case "7":
                    // Validation fail for conflict date
                    Console.WriteLine("Conflict date validation fail for Matter {0}", matterObj.MatterName);
                    break;
                }
                Console.WriteLine("-------------------------------------------------------------------------------");
            }
        }