Esempio n. 1
0
        public string DiscardCheckOutChanges(RequestObject requestObject, MailAttachmentDetails mailAttachmentDetails)
        {
            string result = null;

            try
            {
                if (null != requestObject && null != mailAttachmentDetails && ValidationHelperFunctions.CheckRequestValidatorToken())
                {
                    ///// full URL, relative URL
                    string[] allAttachmentUrl = mailAttachmentDetails.FullUrl.Split(';');

                    foreach (string attachmentUrl in allAttachmentUrl)
                    {
                        if (!string.IsNullOrWhiteSpace(attachmentUrl))
                        {
                            MailAttachmentDetails sendDocumentUrl = new MailAttachmentDetails();
                            sendDocumentUrl.FullUrl = attachmentUrl;
                            result = BriefcaseHelperFunction.DiscardCheckout(requestObject, sendDocumentUrl);
                        }
                    }
                }
            }
            catch (Exception exception)
            {
                Logger.LogError(exception, MethodBase.GetCurrentMethod().DeclaringType.Name, MethodBase.GetCurrentMethod().Name, ServiceConstantStrings.LogTableName);
                result = string.Concat(ConstantStrings.FALSE, ConstantStrings.Comma, ConstantStrings.Space, ServiceUtility.RemoveEscapeCharacter(exception.Message));
            }
            return(result);
        }
Esempio n. 2
0
        public bool CheckNormalDocuments(RequestObject requestObject, SyncDetails syncDetails)
        {
            ClientContext clientContext = null;
            bool          response      = false;

            try
            {
                if (null != requestObject && null != syncDetails && ValidationHelperFunctions.CheckRequestValidatorToken())
                {
                    string usersMySite = BriefcaseHelperFunction.GetPersonalURL(requestObject);
                    if (!string.IsNullOrEmpty(usersMySite))
                    {
                        using (clientContext = ServiceUtility.GetClientContext(requestObject.SPAppToken, new Uri(usersMySite), requestObject.RefreshToken))
                        {
                            List <string> sourceURL = BriefcaseHelperFunction.CheckSourceURL(clientContext, syncDetails, 1);
                            if (0 == sourceURL.Count)
                            {
                                response = true;
                            }
                        }
                    }
                }
            }
            catch (Exception exception)
            {
                Logger.LogError(exception, MethodBase.GetCurrentMethod().DeclaringType.Name, MethodBase.GetCurrentMethod().Name, ServiceConstantStrings.LogTableName);
            }
            return(response);
        }
Esempio n. 3
0
        public Stream SaveEmail(RequestObject requestObject, MailAttachmentDetails mailAttachmentDetails)
        {
            Stream result = null;

            try
            {
                if (null != requestObject && null != mailAttachmentDetails && ValidationHelperFunctions.CheckRequestValidatorToken())
                {
                    ///// filename, stream
                    Dictionary <string, Stream> collectionOfAttachments = new Dictionary <string, Stream>();
                    ///// full URL, relative URL
                    string[]      allAttachmentUrl = mailAttachmentDetails.FullUrl.Split(';');
                    ClientContext clientContext;
                    bool          attachmentFlag = mailAttachmentDetails.IsAttachmentCall;
                    if (attachmentFlag)
                    {
                        foreach (string attachmentUrl in allAttachmentUrl)
                        {
                            if (!string.IsNullOrWhiteSpace(attachmentUrl))
                            {
                                // Do not use 'using' to generate client context here since it will dispose the object before other functions get executed
                                clientContext = ServiceUtility.GetClientContext(requestObject.SPAppToken, new Uri(attachmentUrl.Split(Convert.ToChar(ConstantStrings.DOLLAR, CultureInfo.InvariantCulture))[0]), requestObject.RefreshToken);
                                Microsoft.SharePoint.Client.File file       = clientContext.Web.GetFileByServerRelativeUrl(attachmentUrl.Split(Convert.ToChar(ConstantStrings.DOLLAR, CultureInfo.InvariantCulture))[1]);
                                ClientResult <System.IO.Stream>  fileStream = file.OpenBinaryStream();
                                ///// Load the Stream data for the file
                                clientContext.Load(file);
                                clientContext.ExecuteQuery();

                                ///// In order to allow for multiple files with the same name, we provide a GUID tag to ensure unique keys in the dictionary
                                string uniqueKeyWithDate = attachmentUrl.Split(Convert.ToChar(ConstantStrings.DOLLAR, CultureInfo.InvariantCulture))[1].Substring(attachmentUrl.Split(Convert.ToChar(ConstantStrings.DOLLAR, CultureInfo.InvariantCulture))[1].LastIndexOf(Convert.ToChar(ConstantStrings.BackwardSlash, CultureInfo.InvariantCulture)) + 1) + ConstantStrings.DOLLAR + Guid.NewGuid();
                                collectionOfAttachments.Add(uniqueKeyWithDate, fileStream.Value);
                            }
                        }
                    }

                    result = MailHelperFunctions.GenerateEmail(collectionOfAttachments, allAttachmentUrl, attachmentFlag);
                }
                else
                {
                    result = BriefcaseHelperFunction.ReturnErrorFile(TextConstants.MessageNoInputs);
                }
            }
            catch (Exception exception)
            {
                Logger.LogError(exception, MethodBase.GetCurrentMethod().DeclaringType.Name, MethodBase.GetCurrentMethod().Name, ServiceConstantStrings.LogTableName);
                result = BriefcaseHelperFunction.ReturnErrorFile(string.Concat(ConstantStrings.ServiceResponse, exception.HResult, exception.Message));
            }
            return(result);
        }
Esempio n. 4
0
        public string SyncBriefcase(RequestObject requestObject, SyncDetails syncDetails)
        {
            CommonResponse commonResponse = new CommonResponse();

            try
            {
                if (null != requestObject && null != syncDetails && ValidationHelperFunctions.CheckRequestValidatorToken())
                {
                    string        usersMySite   = string.Empty;
                    ClientContext clientContext = null;
                    usersMySite = BriefcaseHelperFunction.GetPersonalURL(requestObject);
                    if (!string.IsNullOrEmpty(usersMySite))
                    {
                        using (clientContext = ServiceUtility.GetClientContext(requestObject.SPAppToken, new Uri(usersMySite), requestObject.RefreshToken))
                        {
                            string        status    = string.Empty;
                            List <string> sourceURL = BriefcaseHelperFunction.CheckSourceURL(clientContext, syncDetails, 1);
                            if (sourceURL.Count != 0)
                            {
                                return(BriefcaseHelperFunction.GetNotSupportedMessage(sourceURL));
                            }

                            GetContextInList(requestObject, syncDetails, ref commonResponse, clientContext, ref status);
                        }
                    }
                    else
                    {
                        commonResponse.ErrorMessage = ServiceConstantStrings.UserMySiteNotPresent;
                    }
                }
                else
                {
                    commonResponse.Status.Add(false);
                    commonResponse.ErrorMessage = TextConstants.InvalidParametersMessage;
                }
            }
            catch (Exception exception)
            {
                commonResponse.Status.Add(false);
                commonResponse.ErrorMessage = ServiceUtility.RemoveEscapeCharacter(exception.Message);
            }

            return(BriefcaseHelperFunction.GetSerializeResponse(commonResponse));
        }
Esempio n. 5
0
        /// <summary>
        /// Helper function to perform Check Out, Detach, and Update document functionality.
        /// </summary>
        /// <param name="requestObject">The Web request object.</param>
        /// <param name="syncDetails">SyncDetails object</param>
        /// <param name="commonResponse">Holds response for briefcase detach operation</param>
        /// <param name="clientContext">Client context object for connection between SP & client</param>
        /// <param name="status">Sets status for send to briefcase operation</param>
        private void GetContextInList(RequestObject requestObject, SyncDetails syncDetails, ref CommonResponse commonResponse, ClientContext clientContext, ref string status)
        {
            List list = clientContext.Web.Lists.GetById(new Guid(syncDetails.ListId));

            foreach (int itemid in syncDetails.ItemId)
            {
                ListItemCollection    listItems                     = BriefcaseHelperFunction.GetListItemCollection(clientContext, itemid);
                MailAttachmentDetails mailattachmentDetails         = new MailAttachmentDetails();
                ServiceConstantStrings.OperationTypes operationType = (ServiceConstantStrings.OperationTypes)syncDetails.Operation;
                if (operationType == ServiceConstantStrings.OperationTypes.Detach)
                {
                    commonResponse = BriefcaseHelperFunction.DetachOperation(commonResponse, clientContext, list, listItems);
                }
                else
                {
                    foreach (var listItem in listItems)
                    {
                        mailattachmentDetails.FullUrl     = Convert.ToString(listItem[ServiceConstantStrings.OneDriveSiteColumn], CultureInfo.InvariantCulture);
                        mailattachmentDetails.IsOverwrite = 1;
                    }

                    switch (operationType)
                    {
                    case ServiceConstantStrings.OperationTypes.Update:
                        status         = this.SendToBriefcase(requestObject, mailattachmentDetails, false);
                        commonResponse = BriefcaseHelperFunction.UpdateOperationStatus(commonResponse, status);
                        break;

                    case ServiceConstantStrings.OperationTypes.Checkout:
                        status         = this.CheckOutDocument(requestObject, mailattachmentDetails);
                        commonResponse = BriefcaseHelperFunction.CheckoutOperationStatus(commonResponse, status);
                        commonResponse.Status.Add(Convert.ToBoolean(status.Split(',')[0], CultureInfo.InvariantCulture));
                        break;
                    }
                }
            }
        }
Esempio n. 6
0
        public string SendToBriefcase(RequestObject requestObject, MailAttachmentDetails mailAttachmentDetails, bool doCheckOut)
        {
            string status = ConstantStrings.FALSE;
            string result = string.Empty;

            try
            {
                if (null != requestObject && null != mailAttachmentDetails && ValidationHelperFunctions.CheckRequestValidatorToken())
                {
                    Dictionary <string, Stream> collectionOfAttachments         = new Dictionary <string, Stream>();
                    Dictionary <string, string> collectionOfOriginalAttachments = new Dictionary <string, string>();
                    string[]      allAttachmentUrl = mailAttachmentDetails.FullUrl.Split(ConstantStrings.Semicolon[0]);
                    ClientContext clientContext    = null;
                    string        usersMySite      = string.Empty;
                    usersMySite = BriefcaseHelperFunction.GetPersonalURL(requestObject);
                    if (!usersMySite.ToUpperInvariant().Contains(ServiceConstantStrings.OneDriveNotSetupUrl.ToUpperInvariant()))
                    {
                        foreach (string attachmentUrl in allAttachmentUrl)
                        {
                            if (!string.IsNullOrWhiteSpace(attachmentUrl))
                            {
                                // Do not use 'using' to generate client context here since it will dispose the object before other functions get executed
                                clientContext = ServiceUtility.GetClientContext(requestObject.SPAppToken, new Uri(attachmentUrl.Split(Convert.ToChar(ConstantStrings.DOLLAR, CultureInfo.InvariantCulture))[0]), requestObject.RefreshToken);
                                Microsoft.SharePoint.Client.File file = clientContext.Web.GetFileByServerRelativeUrl(attachmentUrl.Split(Convert.ToChar(ConstantStrings.DOLLAR, CultureInfo.InvariantCulture))[1]);
                                ClientResult <System.IO.Stream>  clientResultStream = file.OpenBinaryStream();
                                ///// Load the Stream data for the file
                                clientContext.Load(file);
                                clientContext.ExecuteQuery();
                                Guid uniqueKey = Guid.NewGuid();
                                collectionOfAttachments.Add(attachmentUrl.Split(Convert.ToChar(ConstantStrings.DOLLAR, CultureInfo.InvariantCulture))[1].Substring(attachmentUrl.Split(Convert.ToChar(ConstantStrings.DOLLAR, CultureInfo.InvariantCulture))[1].LastIndexOf(Convert.ToChar(ConstantStrings.ForwardSlash, CultureInfo.InvariantCulture)) + 1) + ConstantStrings.DOLLAR + uniqueKey, clientResultStream.Value);
                                collectionOfOriginalAttachments.Add(attachmentUrl.Split(Convert.ToChar(ConstantStrings.DOLLAR, CultureInfo.InvariantCulture))[1].Substring(attachmentUrl.Split(Convert.ToChar(ConstantStrings.DOLLAR, CultureInfo.InvariantCulture))[1].LastIndexOf(Convert.ToChar(ConstantStrings.ForwardSlash, CultureInfo.InvariantCulture)) + 1) + ConstantStrings.DOLLAR + uniqueKey, attachmentUrl);
                                MailAttachmentDetails sendDocumentUrl = new MailAttachmentDetails();
                                sendDocumentUrl.FullUrl = attachmentUrl;
                                if (doCheckOut)
                                {
                                    this.CheckOutDocument(requestObject, sendDocumentUrl);
                                }
                            }
                        }
                        status = BriefcaseHelperFunction.UploadtoBriefcase(requestObject, collectionOfAttachments, collectionOfOriginalAttachments, usersMySite, allAttachmentUrl, mailAttachmentDetails.IsOverwrite);
                        //// If error not occurred while sending documents to OneDrive
                        if (!status.Contains(ConstantStrings.Code) && !status.Contains(ConstantStrings.Value))
                        {
                            status = string.Format(CultureInfo.InvariantCulture, ConstantStrings.ServiceResponse, 0, status);
                        }
                    }
                    else
                    {
                        status = string.Format(CultureInfo.InvariantCulture, ConstantStrings.ServiceResponse, TextConstants.ErrorCodeOneDriveNotConfigured, usersMySite);
                    }
                    result = status;
                }
                else
                {
                    result = string.Format(CultureInfo.InvariantCulture, ConstantStrings.ServiceResponse, 0, status);
                }
            }
            catch (Exception exception)
            {
                result = Logger.LogError(exception, MethodBase.GetCurrentMethod().DeclaringType.Name, MethodBase.GetCurrentMethod().Name, ServiceConstantStrings.LogTableName);
            }
            return(result);
        }
Esempio n. 7
0
        public string GetVersion(RequestObject requestObject, SyncDetails syncDetails)
        {
            string         response       = string.Empty;
            VersionDetails versionDetails = new VersionDetails();

            try
            {
                if (null != requestObject && null != syncDetails && ValidationHelperFunctions.CheckRequestValidatorToken())
                {
                    versionDetails.Status = false;
                    ClientContext clientContext = null;
                    string        usersMySite   = BriefcaseHelperFunction.GetPersonalURL(requestObject);
                    if (!string.IsNullOrEmpty(usersMySite))
                    {
                        using (clientContext = ServiceUtility.GetClientContext(requestObject.SPAppToken, new Uri(usersMySite), requestObject.RefreshToken))
                        {
                            List <string> sourceURL = BriefcaseHelperFunction.CheckSourceURL(clientContext, syncDetails, 1);

                            if (sourceURL.Count != 0)
                            {
                                return(BriefcaseHelperFunction.GetNotSupportedMessage(sourceURL));
                            }

                            sourceURL = BriefcaseHelperFunction.CheckSourceURL(clientContext, syncDetails, 2);
                            List <string> relativeURLList = BriefcaseHelperFunction.CheckSourceURL(clientContext, syncDetails, 3);
                            versionDetails.RelativeURL = relativeURLList;
                            for (int iterator = 0; iterator < sourceURL.Count; iterator++)
                            {
                                string url         = sourceURL[iterator];
                                string relativeURL = Convert.ToString(url.Split(Convert.ToChar(ConstantStrings.DOLLAR, CultureInfo.InvariantCulture))[1], CultureInfo.InvariantCulture);
                                using (clientContext = ServiceUtility.GetClientContext(requestObject.SPAppToken, new Uri(url.Split(Convert.ToChar(ConstantStrings.DOLLAR, CultureInfo.InvariantCulture))[0]), requestObject.RefreshToken))
                                {
                                    Microsoft.SharePoint.Client.File file = clientContext.Web.GetFileByServerRelativeUrl(relativeURL);
                                    string documentLibraryName            = BriefcaseHelperFunction.getLibraryName(clientContext, file);
                                    List   docLib = clientContext.Web.Lists.GetByTitle(documentLibraryName);
                                    clientContext.Load(docLib);
                                    clientContext.ExecuteQuery();
                                    versionDetails.IsMajorVersion.Add(docLib.EnableVersioning);
                                    versionDetails.IsMinorVersion.Add(docLib.EnableMinorVersions);
                                    versionDetails.Status = true;
                                    if (versionDetails.IsMajorVersion[iterator] || versionDetails.IsMinorVersion[iterator])
                                    {
                                        versionDetails.CurrentMajorVersion.Add(Convert.ToString(file.MajorVersion, CultureInfo.InvariantCulture));

                                        if (file.CheckOutType != CheckOutType.None)
                                        {
                                            if (0 == file.MinorVersion)
                                            {
                                                versionDetails.CurrentMinorVersion.Add(Convert.ToString(file.MinorVersion, CultureInfo.InvariantCulture));
                                            }
                                            else
                                            {
                                                int currentMinorVersion = file.MinorVersion - 1;
                                                versionDetails.CurrentMinorVersion.Add(Convert.ToString(currentMinorVersion, CultureInfo.InvariantCulture));
                                            }

                                            clientContext.Load(file.CheckedOutByUser);
                                            clientContext.ExecuteQuery();
                                            User user = clientContext.Web.CurrentUser;
                                            clientContext.Load(user);
                                            clientContext.ExecuteQuery();
                                            if (user.Title == file.CheckedOutByUser.Title)
                                            {
                                                versionDetails.CheckOutStatus.Add(Convert.ToString(file.CheckedOutByUser.Title, CultureInfo.InvariantCulture));
                                            }
                                            else
                                            {
                                                versionDetails.Status       = false;
                                                versionDetails.ErrorMessage = ServiceConstantStrings.AlreadyCheckOut;
                                            }
                                        }
                                        else
                                        {
                                            versionDetails.CurrentMinorVersion.Add(Convert.ToString(file.MinorVersion, CultureInfo.InvariantCulture));
                                            versionDetails.CheckOutStatus.Add(ConstantStrings.Space);
                                        }
                                    }
                                }
                            }
                        }
                    }
                    else
                    {
                        versionDetails.ErrorMessage = ServiceConstantStrings.UserMySiteNotPresent;
                    }
                }
                else
                {
                    versionDetails.Status       = false;
                    versionDetails.ErrorMessage = TextConstants.MessageNoInputs;
                }
            }
            catch (Exception exception)
            {
                versionDetails.Status        = false;
                versionDetails.ErrorMessage += ServiceUtility.RemoveEscapeCharacter(exception.Message);
                Logger.LogError(exception, MethodBase.GetCurrentMethod().DeclaringType.Name, MethodBase.GetCurrentMethod().Name, ServiceConstantStrings.LogTableName);
            }

            response = BriefcaseHelperFunction.GetSerializeResponse(versionDetails);
            return(response);
        }
Esempio n. 8
0
        public string SendToMatter(RequestObject requestObject, BriefcaseDetails[] briefcaseDetails, int versionInfo, string comments, bool retainCheckout, bool convenienceCopy)
        {
            CommonResponse checkInResponse = new CommonResponse();
            string         status          = string.Empty;

            try
            {
                if (null != requestObject && null != briefcaseDetails && ValidationHelperFunctions.CheckRequestValidatorToken())
                {
                    ClientContext clientContext = null;
                    string        usersMySite   = BriefcaseHelperFunction.GetPersonalURL(requestObject);
                    if (!string.IsNullOrEmpty(usersMySite))
                    {
                        for (int iterator = 0; iterator < briefcaseDetails.Length; iterator++)
                        {
                            if (!string.IsNullOrWhiteSpace(briefcaseDetails[iterator].DocumentUrl) && !string.IsNullOrWhiteSpace(briefcaseDetails[iterator].DocumentId))
                            {
                                using (clientContext = ServiceUtility.GetClientContext(requestObject.SPAppToken, new Uri(usersMySite), requestObject.RefreshToken))
                                {
                                    ClientResult <System.IO.Stream> data  = Lists.GetStreamFromFile(clientContext, briefcaseDetails[iterator].DocumentUrl);
                                    string             briefcaseItemQuery = string.Format(CultureInfo.InvariantCulture, ServiceConstantStrings.SendToMatterQuery, ServiceConstantStrings.OneDriveSiteColumn, briefcaseDetails[iterator].DocumentId);
                                    ListItemCollection listItems          = Lists.GetData(clientContext, ServiceConstantStrings.OneDriveDocumentLibraryTitle, briefcaseItemQuery);
                                    string             sourceUrl          = string.Empty;
                                    foreach (var listItem in listItems)
                                    {
                                        sourceUrl = Convert.ToString(listItem[ServiceConstantStrings.OneDriveSiteColumn], CultureInfo.InvariantCulture);
                                    }
                                    if (!string.IsNullOrWhiteSpace(sourceUrl))
                                    {
                                        status = BriefcaseHelperFunction.UploadtoMatter(requestObject, sourceUrl, data.Value, versionInfo, comments, retainCheckout);
                                        checkInResponse.Status.Add(Convert.ToBoolean(status.Split(ConstantStrings.Comma[0])[0], CultureInfo.InvariantCulture));
                                        if (checkInResponse.Status[iterator])
                                        {
                                            checkInResponse.FileNames.Add(status.Split(ConstantStrings.Comma[0])[1]);
                                            if (!retainCheckout)
                                            {
                                                if (!convenienceCopy)
                                                {
                                                    foreach (var listitem in listItems)
                                                    {
                                                        listitem.DeleteObject();
                                                        clientContext.ExecuteQuery();
                                                    }
                                                }
                                            }
                                        }
                                        else
                                        {
                                            checkInResponse.ErrorMessage += ConstantStrings.Space + status.Split(ConstantStrings.Comma[0])[1];
                                        }
                                    }
                                }
                            }
                        }
                    }
                    else
                    {
                        checkInResponse.ErrorMessage = ServiceConstantStrings.UserMySiteNotPresent;
                    }
                }
                else
                {
                    checkInResponse.Status.Add(false);
                    checkInResponse.ErrorMessage += ConstantStrings.Space + TextConstants.MissingParametersMessage;
                }
            }
            catch (Exception exception)
            {
                Logger.LogError(exception, MethodBase.GetCurrentMethod().DeclaringType.Name, MethodBase.GetCurrentMethod().Name, ServiceConstantStrings.LogTableName);
                checkInResponse.Status.Add(false);
                checkInResponse.ErrorMessage += ConstantStrings.Space + ServiceUtility.RemoveEscapeCharacter(exception.Message);
            }
            return(BriefcaseHelperFunction.GetSerializeResponse(checkInResponse));
        }