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);
            }
        }