public OperationResult ProlongeTicket(MSOWebServiceCallContextDTO context, string login, string password)
        {
            try
            {
                if (!Membership.ValidateUser(login, password))
                {
                    return(OperationResult.InvalidUsernameOrPassword);
                }

                int rv = new MSOIntegrationDAO().ProlongeTicket(context, (Guid)Membership.GetUser(login).ProviderUserKey);

                switch (rv)
                {
                case 0:
                    return(OperationResult.OK);

                default:
                    return(OperationResult.InvalidTicket);
                }
            }
            catch
            {
                return(OperationResult.DBConnectionError);
            }
        }
Exemple #2
0
        /// <summary>
        /// Processes the document.
        /// </summary>
        public void ProcessDocument()
        {
            int index = -1;
            Dictionary <string, int> customXmlPartsIndexes;

            using (WordprocessingDocument document = WordprocessingDocument.Open(view.FileName, true))
            {
                MainDocumentPart mainPart = document.MainDocumentPart;

                XmlDocument eSodaData = new MSOIntegrationDAO().GetMSOServiceContextBin(view.DocumentID, EsodaConfigurationParameters.TicketDuration, string.IsNullOrEmpty(view.ItemGuid) ? null : ((Guid?)new Guid(view.ItemGuid)), view.Description, null);

                MSOProcessingHelper helper = new MSOProcessingHelper();

                //customXmlPartsIndexes = helper.GetCustomXmlPartsIndexes(mainPart, null);
                customXmlPartsIndexes = helper.GetCustomXmlPartsIndexes(mainPart, null, null);

                if (customXmlPartsIndexes.Keys.Contains <string>("context"))
                {
                    index = customXmlPartsIndexes["context"];
                }

                //helper.SetEsodaData(true, false, view.DocumentID, view.ItemGuid, view.Description, index, ref mainPart);
                helper.SetEsodaData(eSodaData, index, ref mainPart);
            }
        }
Exemple #3
0
        /// <summary>
        /// Gets the name of the template file.
        /// </summary>
        public string GetTemplateFileName()
        {
            string fileName = null;

            view.WithSchema = true;

            try
            {
                if (view.Mode == Modes.Create)
                {
                    fileName = new MSOIntegrationDAO().GetMSOTemplateFileName(view.DocumentID);
                }
                else if (view.Mode == Modes.Edit)
                {
                    MSOIntegrationDAO msoIntegrationDao = new MSOIntegrationDAO();
                    fileName = msoIntegrationDao.GetMSOFileName(view.DocumentID);
                    if (string.IsNullOrEmpty(fileName))
                    {
                        fileName = msoIntegrationDao.GetMSOTemplateFileName(view.DocumentID);
                    }
                }

                if (string.IsNullOrEmpty(fileName))
                {
                    MSOTemplateDTO msoTemplateDto = new MSOTemplateDAO().GetCurrentMSOTemplate(true);
                    if (msoTemplateDto != null)
                    {
                        fileName = msoTemplateDto.FileName;
                    }
                    view.WithSchema = false;
                }

                if (string.IsNullOrEmpty(fileName))
                {
                    view.ErrorMessage = "Nie udało się pobrać nazwy pliku template'u.";
                    view.WithSchema   = false;
                    return(null);
                }

                fileName = Path.Combine(MSOProcessingHelper.MSODirectoryPath, fileName);

                if (!File.Exists(fileName))
                {
                    view.ErrorMessage = "Podany plik nie istnieje: " + fileName;
                    view.WithSchema   = false;
                    return(null);
                }
            }
            catch (SqlException se)
            {
                view.ErrorMessage = "Wystąpił wyjątek podczas pobierania nazwy pliku template'u: " + se.Message;
                view.WithSchema   = false;
            }

            return(fileName);
        }
        private int saveGenericDocument(string filePath, string originalFilename, string mimeType, Guid documentGuid, Guid?elementVersionGuid, string description, string desiredName, string ticket)
        {
            DocumentDAO dao    = new DocumentDAO();
            Guid        userID = new MSOIntegrationDAO().GetUseGuidFromTicket(ticket);
            Guid        itemId = Guid.Empty;

            int documentID = dao.GetDocumentIDForGuid(documentGuid);

            if (documentID == 0)
            {
                return(-1);
            }
            FileStream fs = File.OpenRead(filePath);

            try
            {
                if (!elementVersionGuid.HasValue)
                {
                    dao.AddNewDocumentItem(documentID, originalFilename, description, fs, mimeType, ref itemId, DocumentItemCategory.Created);

                    DocumentItemDTO docItem  = dao.GetItem(itemId);
                    string[]        fullname = Membership.GetUser(userID).Comment.Split(' ');

                    string imie     = fullname.Length >= 2 ? fullname[1] : string.Empty;
                    string nazwisko = fullname.Length >= 1 ? fullname[0] : string.Empty;


                    List <string> paramList = new List <string>();
                    paramList.Add(originalFilename);


                    ActionLogger al = new ActionLogger(new ActionContext(new Guid("9cd585bb-2a06-4c24-b415-aa3f8b00ea5f"), userID, Membership.GetUser(userID).UserName, Membership.GetUser(userID).Comment, paramList));

                    al.AppliesToDocuments.Add(documentID);
                    al.ActionData.Add("idDokumentu", documentID.ToString());
                    al.ActionData.Add("idPracownika", Membership.GetUser(userID).UserName);
                    al.ActionData.Add("imie", imie);
                    al.ActionData.Add("nazwisko", nazwisko);
                    al.ActionData.Add("dataDodania", docItem.CreationDate.ToString());
                    al.ActionData.Add("idPliku", docItem.ID.ToString());
                    al.ActionData.Add("nazwaPliku", originalFilename);
                    al.Execute();
                }
                else
                {
                    dao.AddNewVersionOfDocumentItem(documentID, elementVersionGuid.Value, description, fs, mimeType, desiredName, DocumentItemCategory.Created);
                }
            }
            catch
            {
                return(-2);
            }
            return(0);
        }
        private int validateXmlData(XmlDocument xdoc, MSOWebServiceCallContextDTO context)
        {
            MSOIntegrationDAO dao        = new MSOIntegrationDAO();
            string            schemaFile = Path.Combine(Pemi.Esoda.Tools.MSOIntegrationHelper.MSOProcessingHelper.MSODirectoryPath, dao.GetMSOSchemaFileName(context.DocumentGUID));

            if (string.IsNullOrEmpty(schemaFile))
            {
                return(-1); //no schemaFile
            }
            XmlValidator xv = new XmlValidator();

            try
            {
                return(xv.ValidateWithSchemaFile(xdoc.OuterXml, schemaFile) ? 1 : 0); //1 - xml valid, 0 - xml not valid
            }
            catch
            {
                return(-2); //validator error
            }
        }
Exemple #6
0
        /// <summary>
        /// Processes the document.
        /// </summary>
        public void ProcessDocument()
        {
            int index = -1;
            Dictionary <string, int> customXmlPartsIndexes;

            using (WordprocessingDocument document = WordprocessingDocument.Open(view.FileName, true))
            {
                MainDocumentPart mainPart = document.MainDocumentPart;

                XmlDocument eSodaData = new MSOIntegrationDAO().GetMSOServiceContextLAW(view.DocumentID, EsodaConfigurationParameters.TicketDuration); //?

                MSOProcessingHelper helper = new MSOProcessingHelper();

                customXmlPartsIndexes = helper.GetCustomXmlPartsIndexes(mainPart, null, null);

                if (customXmlPartsIndexes.Keys.Contains <string>("context"))
                {
                    index = customXmlPartsIndexes["context"];
                }

                helper.SetEsodaData(eSodaData, index, ref mainPart);
            }
        }
Exemple #7
0
        /// <summary>
        /// Processes the document.
        /// </summary>
        public bool ProcessDocument()
        {
            try
            {
                using (WordprocessingDocument document = WordprocessingDocument.Open(view.FileName, true))
                {
                    MainDocumentPart mainPart = document.MainDocumentPart;

                    XmlDocument xmlData   = null;
                    XmlDocument eSodaData = new MSOIntegrationDAO().GetMSOServiceContext(view.DocumentID, EsodaConfigurationParameters.TicketDuration, view.WithSchema);

                    int    index       = -1;
                    string storeItemID = null;
                    Dictionary <string, int> customXmlPartsIndexes;

                    MSOProcessingHelper     processingHelper  = new MSOProcessingHelper();
                    MSOGenerationHelper     generationHelper  = new MSOGenerationHelper();
                    List <CustomXmlElement> customXmlElements = generationHelper.BuildCustomXmlStructure(mainPart);

                    storeItemID = generationHelper.GetStoreItemID(customXmlElements);

                    //customXmlPartsIndexes = processingHelper.GetCustomXmlPartsIndexes(mainPart, storeItemID);
                    customXmlPartsIndexes = processingHelper.GetCustomXmlPartsIndexes(mainPart, storeItemID, processingHelper.GetTargetNamespaces(eSodaData));

                    if (customXmlPartsIndexes.Keys.Contains <string>("xmlData"))
                    {
                        index = customXmlPartsIndexes["xmlData"];
                    }

                    xmlData = processingHelper.SetDocumentData(view.Mode, view.DocumentID, index, out storeItemID, ref mainPart);

                    if (xmlData != null)
                    {
                        XmlNamespaceManager nsManager = new XmlNamespaceManager(xmlData.NameTable);
                        int prefixIndex = 0;

                        generationHelper.SetNamespaces(xmlData.DocumentElement, ref prefixIndex, ref nsManager);

                        if (customXmlElements.Count > 0)
                        {
                            for (int i = 0; i < customXmlElements.Count; ++i)
                            {
                                CustomXmlElement customXmlElement = customXmlElements[i];
                                generationHelper.GenerateAttributes(xmlData.DocumentElement, nsManager, ref customXmlElement);
                                generationHelper.GenerateDataBindings(xmlData.DocumentElement, nsManager, storeItemID, ref customXmlElement);
                                //generationHelper.GenerateCustomControls(xmlData.DocumentElement, nsManager, storeItemID, ref customXmlElement);
                            }
                        }
                        #region For future releases
                        //else
                        //{
                        //    OpenXmlElement customXmlBlock = new CustomXmlBlock();
                        //    ((CustomXmlBlock)customXmlBlock).Element = new StringValue(xmlData.DocumentElement.LocalName);
                        //    if (mainPart.Document.Body.Elements<DocumentFormat.OpenXml.Wordprocessing.Paragraph>().Count() > 0)
                        //    {
                        //        mainPart.Document.Body.Elements<DocumentFormat.OpenXml.Wordprocessing.Paragraph>().Last().AppendChild(customXmlBlock);
                        //    }
                        //    else
                        //    {
                        //        mainPart.Document.Body.PrependChild(customXmlBlock);
                        //    }
                        //    generationHelper.GenerateCustomXmlBlocks(xmlData.DocumentElement, null, nsManager, ref  customXmlBlock);
                        //}
                        #endregion

                        mainPart.Document.Save();
                    }

                    index = -1;

                    if (customXmlPartsIndexes.Keys.Contains <string>("context"))
                    {
                        index = customXmlPartsIndexes["context"];
                    }

                    //processingHelper.SetEsodaData(false, view.WithSchema, view.DocumentID, null, null, index, ref mainPart);
                    processingHelper.SetEsodaData(eSodaData, index, ref mainPart);
                }
            }
            catch (Exception e)
            {
                view.ErrorMessage = "Błąd przetwarzania dokumentu Word: " + e.Message;
                return(false);
            }
            return(true);
        }
        public OperationResult SaveForm(XmlDocument xdoc, MSOWebServiceCallContextDTO context, byte[] formContent)
        {
            OperationResult result = OperationResult.OK;

            if (!validateContext(context, true))
            {
                result = OperationResult.InvalidContext;
                return(result);
            }

            switch (validateXmlData(xdoc, context))
            {
            case 0:
                result = OperationResult.InvalidXmlData;
                break;

            case -1:
                result = OperationResult.SchemaNotFound;
                break;

            case -2:
                result = OperationResult.XmlValidatorError;
                break;
            }

            MSOIntegrationDAO dao       = new MSOIntegrationDAO();
            OperationResult   tmpRes    = result;
            string            extension = null;

            try
            {
                extension = Path.GetExtension(dao.GetFormExtension(context.DocumentTypeID));
            }
            catch
            {
                return(OperationResult.DBConnectionError);
            }
            Guid tempFilename = Guid.NewGuid();

            try
            {
                int rv = dao.TrySaveExistingForm(xdoc, context);

                if (rv == 0 && tmpRes != OperationResult.OK)
                {
                    return(tmpRes);
                }

                rv = dao.SaveExistingForm(xdoc, context, tempFilename.ToString() + extension);

                switch (rv)
                {
                case -1:
                    result = OperationResult.InvalidDocument;
                    break;

                case -2:
                    result = OperationResult.InvalidTicket;
                    break;

                case -3:
                    result = OperationResult.TicketExpired;
                    break;

                case -4:
                    result = OperationResult.DocumentTypeChanged;
                    break;

                case -5:
                    result = OperationResult.DocumentContentChanged;
                    break;

                case -6:
                    result = OperationResult.InvalidFormHash;
                    break;
                }
            }
            catch (Exception)
            {
                result = OperationResult.UnableToSaveDocument;
                return(result);
            }

            if (result != OperationResult.OK)
            {
                return(result);
            }

            string filePath = Path.Combine(Pemi.Esoda.Tools.MSOIntegrationHelper.MSOProcessingHelper.MSODirectoryPath, tempFilename.ToString() + extension);

            try
            {
                File.WriteAllBytes(filePath, formContent);
            }
            catch
            {
                return(OperationResult.UnableToSaveFormContent);
            }
            dao.DeleteTicket(context);
            return(result);
        }
        public UploadResult SaveGenericDocument(byte[] documentContent, string originalName, string mimeType, MSOWebServiceCallContextDTO context)
        {
            if (documentContent == null || documentContent.Length == 0)
            {
                return(UploadResult.FileContentEmpty);
            }

            if (string.IsNullOrEmpty(originalName) || string.IsNullOrEmpty(mimeType))
            {
                return(UploadResult.InvalidFilenameOrMimeType);
            }

            if (!validateContext(context, false))
            {
                return(UploadResult.InvalidContext);
            }

            MSOIntegrationDAO dao = new MSOIntegrationDAO();

            try
            {
                switch (dao.CheckTicket(context))
                {
                case 0:
                    return(UploadResult.TicketExpired);

                case -1:
                    return(UploadResult.InvalidTicket);
                }
            }
            catch
            {
                return(UploadResult.DBConnectionError);
            }
            Guid   tempFilename = Guid.NewGuid();
            string filePath     = Path.Combine(Server.MapPath("~/temp"), tempFilename.ToString());

            try
            {
                File.WriteAllBytes(filePath, documentContent);
            }
            catch
            {
                return(UploadResult.UnableToSaveFile);
            }
            try
            {
                switch (saveGenericDocument(filePath, originalName, mimeType, context.DocumentGUID, context.LastVersionGuid, context.Description, originalName, context.Ticket))
                {
                case -1:
                    return(UploadResult.DocumentNotFound);

                case -2:
                    return(UploadResult.UnableToAddDocumentItem);
                }
                dao.DeleteTicket(context);
                return(UploadResult.OK);
            }
            catch
            {
                return(UploadResult.DBConnectionError);
            }
        }