コード例 #1
0
        public static void Add(this DocumentSetTemplate documentSet, ListItem documentItem, string documentSetName, string folder, ContentTypeId docId, bool majorVersionOnly)
        {
            Trace.TraceInformation($"Adding: {documentItem.File.Name} to {documentSetName}, Document Folder: {folder}");
            var ctx = documentSet.Context;
            Uri webUrl = new Uri(ctx.Url);

            DocumentStream ds = new DocumentStream((ClientContext)ctx, documentItem);
            MemoryStream documentStream;

            if (majorVersionOnly)
                documentStream = ds.MajorVersion;
            else
                documentStream = ds.LatestVersion;

            //Use a place holder to workaround filesize limitation with the DefaultDocuments API.
            //Place holder is inserted via the API, and then overwritten later.
            if (documentStream != null)
            {
                string placeholderPage = "Placeholder";
                MemoryStream repo = new MemoryStream(Encoding.UTF8.GetBytes(placeholderPage));
                documentSet.DefaultDocuments.Add(folder + ds.FileName, docId, repo.ToArray());
                documentSet.Update(true);
                ctx.ExecuteQuery();
                repo.Close();
                Trace.TraceInformation("- Placeholder created");

                UploadFile((ClientContext)ctx, webUrl.AbsolutePath + "/_cts/" + documentSetName, documentStream, documentItem.File.Name);
            }
        }
コード例 #2
0
        public async Task <ActionResult> UploadFiles(Guid requestID)
        {
            if (Request.Files.Count != 1)
            {
                throw new ArgumentOutOfRangeException("Only a single file may be uploaded at a time.");
            }
            if (Request.InputStream.Length == 0)
            {
                throw new ArgumentOutOfRangeException("The stream is 0 length and cannot be saved.");
            }

            try
            {
                if (Request.InputStream.Length != 0)
                {
                    var             file   = Request.Files[0];
                    MultipartParser parser = new MultipartParser(Request.InputStream);
                    if (!parser.Success)
                    {
                        throw new ArgumentException("Unable to parse the file content correctly.");
                    }

                    var userIdentity = HttpContext.User.Identity as Lpp.Utilities.Security.ApiIdentity;

                    List <Document> addedDocuments = new List <Document>();
                    using (var db = new DataContext())
                    {
                        string filename = System.IO.Path.GetFileName(file.FileName);
                        Guid   id       = Lpp.Utilities.DatabaseEx.NewGuid();

                        var document = new Document
                        {
                            ID            = id,
                            RevisionSetID = id,
                            CreatedOn     = DateTime.UtcNow,
                            FileName      = filename,
                            ItemID        = requestID,
                            Length        = parser.FileContents.LongLength,
                            MimeType      = FileEx.GetMimeTypeByExtension(filename),
                            Name          = System.IO.Path.GetFileName(filename),
                            Viewable      = false,
                            Kind          = DocumentKind.User
                        };

                        if (userIdentity != null)
                        {
                            document.UploadedByID = userIdentity.ID;
                        }

                        db.Documents.Add(document);
                        addedDocuments.Add(document);

                        await db.SaveChangesAsync();

                        var docStream = new DocumentStream(db, document.ID);
                        await new MemoryStream(parser.FileContents).CopyToAsync(docStream);
                    }

                    return(Json(addedDocuments.Select(d => new { d.ID, d.FileName, d.MimeType, Size = d.Length }), JsonRequestBehavior.AllowGet));
                }
            }
            catch (Exception e)
            {
                System.Diagnostics.Debug.WriteLine(e);
                throw e;
            }
            return(null);
        }
コード例 #3
0
        public async Task <ActionResult> LoadFTPFiles(FTPCredentials credentials, Guid requestId, IEnumerable <string> paths)
        {
            var             userIdentity      = HttpContext.User.Identity as Lpp.Utilities.Security.ApiIdentity;
            List <Document> uploadedDocuments = new List <Document>();

            using (var sftp = new SftpClient(credentials.Address, credentials.Port, credentials.Login, credentials.Password))
            {
                try
                {
                    sftp.Connect();
                    foreach (var path in paths)
                    {
                        var fileInfo = sftp.Get(path);
                        using (var sSource = sftp.OpenRead(path))
                        {
                            using (var db = new DataContext())
                            {
                                Guid id       = Lpp.Utilities.DatabaseEx.NewGuid();
                                var  document = new Document
                                {
                                    ID            = id,
                                    RevisionSetID = id,
                                    CreatedOn     = DateTime.UtcNow,
                                    FileName      = fileInfo.Name,
                                    ItemID        = requestId,
                                    Length        = fileInfo.Length,
                                    MimeType      = FileEx.GetMimeTypeByExtension(fileInfo.Name),
                                    Name          = fileInfo.Name,
                                    Viewable      = false,
                                    Kind          = DocumentKind.User
                                };

                                if (userIdentity != null)
                                {
                                    document.UploadedByID = userIdentity.ID;
                                }

                                db.Documents.Add(document);
                                uploadedDocuments.Add(document);

                                await db.SaveChangesAsync();

                                var docStream = new DocumentStream(db, document.ID);

                                await sSource.CopyToAsync(docStream);
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    return(new HttpStatusCodeResult((int)HttpStatusCode.BadRequest, ex.Message));
                }
                finally
                {
                    if (sftp.IsConnected)
                    {
                        sftp.Disconnect();
                    }
                }
            }

            Response.StatusCode  = (int)HttpStatusCode.OK;
            Response.ContentType = "application/json";

            return(Json(uploadedDocuments.Select(d => new { d.ID, d.FileName, d.MimeType, Size = d.Length }), JsonRequestBehavior.AllowGet));
        }
コード例 #4
0
 void IDocumentContent.OnClose(CancelEventArgs e)
 {
     DocumentStream.Dispose();
 }
コード例 #5
0
        /// <summary>
        /// Creates a new model, and optionally restores the values from the request document
        /// </summary>
        /// <param name="context"></param>
        /// <returns></returns>
        private SPANQueryBuilderModel getModel(IDnsRequestContext context)
        {
            var m = new SPANQueryBuilderModel();

            // set up ui defaults, overridden if we deserialize
            m.ExclusionAgeSelector.Age           = 0;
            m.IndexVariable                      = "dx";
            m.IndexVariableBMISelector.BMIOption = "1";
            m.ObservationPeriod.EndPeriod        = DateTime.Today;
            m.ObservationPeriod.StartPeriod      = DateTime.Today;
            m.ReportSelector1.Column             = NA;
            m.ReportSelector1.Group              = NA;
            m.ReportSelector1.Option             = NA;
            m.ReportSelector1.Row                = NA;
            m.ReportSelector2.Column             = NA;
            m.ReportSelector2.Group              = NA;
            m.ReportSelector2.Option             = NA;
            m.ReportSelector2.Row                = NA;
            m.ReportSelector3.Column             = NA;
            m.ReportSelector3.Group              = NA;
            m.ReportSelector3.Option             = NA;
            m.ReportSelector3.Row                = NA;
            m.ReportSelector4.Column             = NA;
            m.ReportSelector4.Group              = NA;
            m.ReportSelector4.Option             = NA;
            m.ReportSelector4.Row                = NA;
            m.ReportSelector5.Column             = NA;
            m.ReportSelector5.Group              = NA;
            m.ReportSelector5.Option             = NA;
            m.ReportSelector5.Row                = NA;

            if ((context.Documents != null) && (context.Documents.Where(d => d.Name == REQUEST_FILENAME).Count() > 0))
            {
                var doc = context.Documents.Where(d => d.Name == REQUEST_FILENAME).First();
                using (var db = new DataContext())
                {
                    using (var docStream = new DocumentStream(db, doc.ID))
                    {
                        XmlSerializer serializer = new XmlSerializer(typeof(drn_query_builder));
                        using (XmlTextReader reader = new XmlTextReader(docStream))
                        {
                            drn_query_builder deserializedModel = (drn_query_builder)serializer.Deserialize(reader);

                            // set up enrollment selector
                            m.EnrollmentSelector.After      = Convert.ToInt32(deserializedModel.enroll_post);
                            m.EnrollmentSelector.Continuous = deserializedModel.enroll_cont == "y";
                            m.EnrollmentSelector.Prior      = Convert.ToInt32(deserializedModel.enroll_prior);

                            // set up exclusion age selector
                            var agevar = deserializedModel.exclusion_criteria.FirstOrDefault().age_var;
                            if (agevar != null)
                            {
                                m.ExclusionAgeSelector.Age         = Convert.ToInt32(agevar[0].age);
                                m.ExclusionAgeSelector.AgeOperator = agevar[0].age_operator;
                            }

                            // set up exclusion Dx selector
                            var dxvar = deserializedModel.exclusion_criteria.FirstOrDefault().dx_var;
                            if (dxvar != null)
                            {
                                //m.ExclusionDxSelector.SelectedCodes = dxvar[0].code.Select(c => new LookupListValue() { ItemCode = c.Value });
                                //m.ExclusionDxSelector.BoolOperator = dxvar[0].bool_operator;
                            }

                            // set up exclusion Px selector
                            var pxvar = deserializedModel.exclusion_criteria.FirstOrDefault().px_var;
                            if (pxvar != null)
                            {
                                //m.ExclusionPxSelector.SelectedCodes = pxvar[0].code.Select(c => new LookupListValue() { ItemCode = c.Value });
                                //m.ExclusionPxSelector.BoolOperator = pxvar[0].bool_operator;
                            }

                            // set up exclusion Rx selector
                            var rxvar = deserializedModel.exclusion_criteria.FirstOrDefault().rx_var;
                            if (rxvar != null)
                            {
                                //m.ExclusionRxSelector.SelectedCodes = rxvar[0].code.Select(c => new LookupListValue() { ItemCode = c.Value });
                                //m.ExclusionRxSelector.BoolOperator = rxvar[0].bool_operator;
                            }

                            // set up inclusion Dx selector
                            dxvar = deserializedModel.inclusion_criteria.FirstOrDefault().dx_var;
                            if (dxvar != null)
                            {
                                //m.InclusionDxSelector.SelectedCodes = dxvar[0].code.Select(c => new LookupListValue() { ItemCode = c.Value });
                                //m.InclusionDxSelector.BoolOperator = dxvar[0].bool_operator;
                            }

                            // set up inclusion Px selector
                            pxvar = deserializedModel.inclusion_criteria.FirstOrDefault().px_var;
                            if (pxvar != null)
                            {
                                //m.InclusionPxSelector.SelectedCodes = pxvar[0].code.Select(c => new LookupListValue() { ItemCode = c.Value });
                                //m.InclusionPxSelector.BoolOperator = pxvar[0].bool_operator;
                            }

                            // set up inclusion Rx selector
                            rxvar = deserializedModel.inclusion_criteria.FirstOrDefault().rx_var;
                            if (rxvar != null)
                            {
                                //m.InclusionRxSelector.SelectedCodes = rxvar[0].code.Select(c => new LookupListValue() { ItemCode = c.Value });
                                //m.InclusionRxSelector.BoolOperator = rxvar[0].bool_operator;
                            }

                            m.IndexVariable = deserializedModel.index_variable.FirstOrDefault().index_code;

                            // set up index variable age selector
                            agevar = deserializedModel.index_variable.FirstOrDefault().age_var;
                            if (agevar != null)
                            {
                                m.IndexVariableAgeSelector.Age         = Convert.ToInt32(agevar[0].age);
                                m.IndexVariableAgeSelector.AgeAsOfDate = Convert.ToDateTime(agevar[0].as_of);
                                m.IndexVariableAgeSelector.AgeOperator = agevar[0].age_operator;
                            }
                            ;

                            // set up index variable bmi selector
                            var bmivar = deserializedModel.index_variable.FirstOrDefault().bmi_var;
                            if (bmivar != null)
                            {
                                m.IndexVariableBMISelector.BMI       = bmivar[0].Value;
                                m.IndexVariableBMISelector.BMIOption = bmivar[0].group;
                            }
                            ;

                            // set up index variable Dx selector
                            dxvar = deserializedModel.index_variable.FirstOrDefault().dx_var;
                            if (dxvar != null)
                            {
                                //m.IndexVariableDxSelector.SelectedCodes = dxvar[0].code.Select(c => new LookupListValue() { ItemCode = c.Value });
                                //m.IndexVariableDxSelector.BoolOperator = dxvar[0].bool_operator;
                            }

                            // set up index variable Px selector
                            pxvar = deserializedModel.index_variable.FirstOrDefault().px_var;
                            if (pxvar != null)
                            {
                                //m.IndexVariablePxSelector.SelectedCodes = pxvar[0].code.Select(c => new LookupListValue() { ItemCode = c.Value });
                                //m.IndexVariablePxSelector.BoolOperator = pxvar[0].bool_operator;
                            }

                            // set up index variable Rx selector
                            rxvar = deserializedModel.index_variable.FirstOrDefault().rx_var;
                            if (rxvar != null)
                            {
                                //m.IndexVariableRxSelector.SelectedCodes = rxvar[0].code.Select(c => new LookupListValue() { ItemCode = c.Value });
                                //m.IndexVariableRxSelector.BoolOperator = rxvar[0].bool_operator;
                            }

                            // set up observation period range
                            m.ObservationPeriod.EndPeriod   = Convert.ToDateTime(deserializedModel.period_end);
                            m.ObservationPeriod.StartPeriod = Convert.ToDateTime(deserializedModel.period_start);

                            // set up reports
                            if (deserializedModel.report != null)
                            {
                                foreach (var repvar in deserializedModel.report)
                                {
                                    switch (repvar.Value)
                                    {
                                    case "Report0":
                                        m.ReportSelector1.Column = repvar.column ?? NA;
                                        m.ReportSelector1.Group  = repvar.group ?? NA;
                                        m.ReportSelector1.Option = repvar.option ?? NA;
                                        m.ReportSelector1.Row    = repvar.row ?? NA;
                                        break;

                                    case "Report1":
                                        m.ReportSelector2.Column = repvar.column ?? NA;
                                        m.ReportSelector2.Group  = repvar.group ?? NA;
                                        m.ReportSelector2.Option = repvar.option ?? NA;
                                        m.ReportSelector2.Row    = repvar.row ?? NA;
                                        break;

                                    case "Report2":
                                        m.ReportSelector3.Column = repvar.column ?? NA;
                                        m.ReportSelector3.Group  = repvar.group ?? NA;
                                        m.ReportSelector3.Option = repvar.option ?? NA;
                                        m.ReportSelector3.Row    = repvar.row ?? NA;
                                        break;

                                    case "Report3":
                                        m.ReportSelector4.Column = repvar.column ?? NA;
                                        m.ReportSelector4.Group  = repvar.group ?? NA;
                                        m.ReportSelector4.Option = repvar.option ?? NA;
                                        m.ReportSelector4.Row    = repvar.row ?? NA;
                                        break;

                                    case "Report4":
                                        m.ReportSelector5.Column = repvar.column ?? NA;
                                        m.ReportSelector5.Group  = repvar.group ?? NA;
                                        m.ReportSelector5.Option = repvar.option ?? NA;
                                        m.ReportSelector5.Row    = repvar.row ?? NA;
                                        break;
                                    }
                                }
                            }
                        }
                    }
                }
            }

            return(m);
        }
        public void DocumentStreamFiltersRequestsCorrectly()
        {
            // ARRANGE
            CollectionConfigurationError[] errors;
            FilterInfo filterApple = new FilterInfo {
                FieldName = "Id", Predicate = Predicate.Contains, Comparand = "apple"
            };
            FilterInfo filterOrange = new FilterInfo {
                FieldName = "Id", Predicate = Predicate.Contains, Comparand = "orange"
            };
            FilterInfo filterMango = new FilterInfo {
                FieldName = "Id", Predicate = Predicate.Contains, Comparand = "mango"
            };

            // (apple AND orange) OR mango
            var documentStreamInfo = new DocumentStreamInfo()
            {
                DocumentFilterGroups =
                    new[]
                {
                    new DocumentFilterConjunctionGroupInfo()
                    {
                        TelemetryType = TelemetryType.Request,
                        Filters       = new FilterConjunctionGroupInfo {
                            Filters = new[] { filterApple, filterOrange }
                        }
                    },
                    new DocumentFilterConjunctionGroupInfo()
                    {
                        TelemetryType = TelemetryType.Request,
                        Filters       = new FilterConjunctionGroupInfo {
                            Filters = new[] { filterMango }
                        }
                    }
                }
            };
            var documentStream = new DocumentStream(documentStreamInfo, out errors, new ClockMock());
            var requests       = new[]
            {
                new RequestTelemetry()
                {
                    Id = "apple"
                }, new RequestTelemetry()
                {
                    Id = "orange"
                }, new RequestTelemetry()
                {
                    Id = "mango"
                },
                new RequestTelemetry()
                {
                    Id = "apple orange"
                }, new RequestTelemetry()
                {
                    Id = "apple mango"
                },
                new RequestTelemetry()
                {
                    Id = "orange mango"
                }, new RequestTelemetry()
                {
                    Id = "apple orange mango"
                },
                new RequestTelemetry()
                {
                    Id = "none of the above"
                }
            };

            // ACT
            var  results           = new bool[requests.Length];
            bool errorsEncountered = false;

            for (int i = 0; i < requests.Length; i++)
            {
                CollectionConfigurationError[] runtimeErrors;
                results[i] = documentStream.CheckFilters(requests[i], out runtimeErrors);
                if (runtimeErrors.Any())
                {
                    errorsEncountered = true;
                }
            }

            // ASSERT
            Assert.AreEqual(0, errors.Length);

            Assert.IsFalse(errorsEncountered);

            Assert.IsFalse(results[0]);
            Assert.IsFalse(results[1]);
            Assert.IsTrue(results[2]);
            Assert.IsTrue(results[3]);
            Assert.IsTrue(results[4]);
            Assert.IsTrue(results[5]);
            Assert.IsTrue(results[6]);
            Assert.IsFalse(results[7]);
        }
コード例 #7
0
        Task <HttpResponseMessage> ExecuteAsync(CodeActivityContext context)
        {
            MultipartFormDataContent formData = new MultipartFormDataContent();
            FileStream fs = null;

            var basePath = BasePath.Get(context);
            var request  = new HttpRequestMessage()
            {
                RequestUri = new Uri(basePath + "/parseDocument"),
                Method     = HttpMethod.Post,
            };

            var apiKey = APIKey.Get(context);

            request.Headers.Add("X-Auth-Key", apiKey);

            var documentURL = DocumentURL.Get(context);

            if (documentURL != null && !documentURL.Equals(""))
            {
                formData.Add(new StringContent(documentURL, Encoding.UTF8), "url");
            }

            var template = Template.Get(context);

            if (template != null && !template.Equals(""))
            {
                formData.Add(new StringContent(template, Encoding.UTF8), "template");
            }

            var pdfTextExtraction = PDFTextExtraction.Get(context);

            if (pdfTextExtraction == PDFTextExtractionType.Fast)
            {
                formData.Add(new StringContent("fast", Encoding.UTF8), "pdf_text_extraction");
            }
            else if (pdfTextExtraction == PDFTextExtractionType.Full)
            {
                formData.Add(new StringContent("full", Encoding.UTF8), "pdf_text_extraction");
            }

            var userData = UserData.Get(context);

            if (userData != null && !userData.Equals(""))
            {
                formData.Add(new StringContent(userData, Encoding.UTF8), "user_data");
            }

            var userDataSetExternalID = UserDataSetExternalID.Get(context);

            if (userDataSetExternalID != null && !userDataSetExternalID.Equals(""))
            {
                formData.Add(new StringContent(userDataSetExternalID, Encoding.UTF8), "user_data_set_external_id");
            }

            var documentFilename = DocumentFilename.Get(context);
            var documentBytes    = DocumentBytes.Get(context);
            var documentPath     = DocumentPath.Get(context);
            var documentStream   = DocumentStream.Get(context);

            if (documentBytes != null && documentBytes.Length > 0)
            {
                formData.Add(new ByteArrayContent(documentBytes), "document", documentFilename);
            }
            else if (documentPath != null && !documentPath.Equals(""))
            {
                fs = File.OpenRead(documentPath);
                formData.Add(new StreamContent(fs), "document", Path.GetFileName(documentPath));
            }
            else if (documentStream != null && documentStream.Length > 0)
            {
                formData.Add(new StreamContent(documentStream), "document", documentFilename);
            }

            request.Content = formData;
            request.Properties["RequestTimeout"] = TimeSpan.FromSeconds(600);

            return(httpClient.SendAsync(request));
        }