Beispiel #1
0
        /// <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;
            }
        }
Beispiel #2
0
 /// <summary>
 /// Reverts the changes for sample data based on the information provided
 /// </summary>
 /// <param name="matterDetailsCollection">Matter details collection</param>
 /// <param name="clientCollection">Client details collection</param>
 /// <param name="configVal">Configuration values from Excel</param>
 internal static void RevertData(List <DataStorage> matterDetailsCollection, ClientTermSets clientCollection, Dictionary <string, string> configVal)
 {
     try
     {
         if (null != matterDetailsCollection && null != clientCollection && null != configVal && 0 < matterDetailsCollection.Count)
         {
             foreach (DataStorage matterDetails in matterDetailsCollection)
             {
                 Client clientObject = clientCollection.ClientTerms.Where(item => item.ClientName.Equals(matterDetails.ClientName, StringComparison.OrdinalIgnoreCase)).FirstOrDefault();
                 if (null != clientObject)
                 {
                     using (ClientContext clientContext = MatterProvisionHelperUtility.GetClientContext(clientObject.ClientUrl, configVal))
                     {
                         PropertyValues properties = clientContext.Web.Lists.GetByTitle(matterDetails.MatterPrefix).RootFolder.Properties;
                         clientContext.Load(properties);
                         clientContext.ExecuteQuery();
                         Matter matter = new Matter(matterDetails);
                         matter.MatterGuid = properties.FieldValues.ContainsKey("MatterGUID") ? System.Web.HttpUtility.HtmlDecode(Convert.ToString(properties.FieldValues["MatterGUID"], CultureInfo.InvariantCulture)) : matterDetails.MatterPrefix;
                         MatterProvisionHelper.DeleteMatter(clientContext, matter);
                     }
                 }
                 else
                 {
                     Console.WriteLine("Failed to get Client Url for client: {0}", matterDetails.ClientName);
                     Console.WriteLine("-------------------------------------------------------------------------------");
                     continue;
                 }
             }
         }
     }
     catch (Exception exception)
     {
         Utility.DisplayAndLogError(errorFilePath, "Message: " + exception.Message + "\nStacktrace: " + exception.StackTrace);
     }
 }
Beispiel #3
0
        /// <summary>
        /// Add Calendar Web Part to client site
        /// </summary>
        /// <param name="clientContext">SharePoint Client Context</param>
        /// <param name="matter">Matter object containing Matter data</param>
        internal static void AddCalendarList(ClientContext clientContext, Matter matter)
        {
            string calendarName = string.Concat(matter.MatterName, ConfigurationManager.AppSettings["CalendarNameSuffix"]);

            try
            {
                Web web = clientContext.Web;
                clientContext.Load(web, item => item.ListTemplates);
                clientContext.ExecuteQuery();
                ListTemplate listTemplate = null;
                foreach (var calendar in web.ListTemplates)
                {
                    if (calendar.Name == Constants.CalendarName)
                    {
                        listTemplate = calendar;
                    }
                }

                ListCreationInformation listCreationInformation = new ListCreationInformation();
                listCreationInformation.TemplateType = listTemplate.ListTemplateTypeKind;
                listCreationInformation.Title        = calendarName;
                // Added URL property for URL consolidation changes
                listCreationInformation.Url = Constants.TitleListPath + matter.MatterGuid + ConfigurationManager.AppSettings["CalendarNameSuffix"];
                web.Lists.Add(listCreationInformation);
                web.Update();
                clientContext.ExecuteQuery();
                MatterProvisionHelperUtility.BreakPermission(clientContext, matter.MatterName, matter.CopyPermissionsFromParent, calendarName);
            }
            catch (Exception exception)
            {
                //// Generic Exception
                MatterProvisionHelper.DeleteMatter(clientContext, matter);
                DisplayAndLogError(errorFilePath, "Message: " + exception.Message + "\nStacktrace: " + exception.StackTrace);
            }
        }
Beispiel #4
0
        /// <summary>
        /// Main Method to initiate the execution
        /// </summary>
        /// <param name="args">Command line argument</param>
        public static void Main(string[] args)
        {
            try
            {
                if (null != args && 2 <= args.Length)
                {
                    bool createData = Convert.ToBoolean(args[0], CultureInfo.InvariantCulture);
                    if (!ExcelOperations.IsNullOrEmptyCredential(args[1], args[2]))
                    {
                        //// Read Configuration sheet and Sample data sheet from Excel
                        string filePath        = Directory.GetParent(Directory.GetCurrentDirectory()).Parent.FullName + "\\" + ConfigurationManager.AppSettings["filename"];
                        string sheetName       = ConfigurationManager.AppSettings["sheetname"];
                        string configSheetName = ConfigurationManager.AppSettings["configsheetname"];
                        Dictionary <string, string> configVal = ExcelOperations.ReadFromExcel(filePath, configSheetName);
                        configVal.Add("Username", args[1].Trim());
                        configVal.Add("Password", args[2].Trim());
                        Collection <Collection <string> > dataValue = ExcelOperations.ReadSheet(filePath, sheetName);
                        List <DataStorage> matterDetails            = MatterProvisionHelper.FetchMatterData(dataValue);
                        ClientTermSets     clientDetails            = TermStoreOperations.GetClientDetails(configVal);

                        if (createData)
                        {
                            CreateData(matterDetails, clientDetails, configVal);
                        }
                        else
                        {
                            RevertData(matterDetails, clientDetails, configVal);
                        }
                    }
                    else
                    {
                        Console.WriteLine("Invalid Username and Password");
                    }
                }
                else
                {
                    Console.WriteLine("Incorrect command line argument was supplied. Kindly provide correct command line argument.");
                }
                Console.WriteLine("\n\n---Execution completed---");
                Console.WriteLine("Press any key to exit.");
                Console.ReadKey();
            }
            catch (Exception exception)
            {
                Utility.DisplayAndLogError(errorFilePath, "Message: " + exception.Message + "\nStacktrace: " + exception.StackTrace);
                Console.WriteLine("Error log will found at {0}", errorFilePath);
                Console.WriteLine("\n\n---Execution completed---");
                Console.WriteLine("Press any key to exit.");
                Console.ReadKey();
            }
        }
Beispiel #5
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 #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("-------------------------------------------------------------------------------");
            }
        }