Ejemplo n.º 1
0
        public static BinaryFile ConvertPDFToImage(BinaryFile inputFile)
        {
            int desired_x_dpi = 96;
            int desired_y_dpi = 96;

            using (GhostscriptRasterizer rasterizer = new GhostscriptRasterizer())
            {
                rasterizer.Open(inputFile.ContentStream);
                if (rasterizer.PageCount > 0)
                {
                    string filename = "ImageConvertedPDF.png";

                    Image img = rasterizer.GetPage(desired_x_dpi, desired_y_dpi, 1);
                    using (MemoryStream m = new MemoryStream())
                    {
                        img.Save(m, ImageFormat.Png);
                        var data         = m.ToArray();
                        var databaseData = new BinaryFileData()
                        {
                            Content = data
                        };
                        var outputFile = new BinaryFile()
                        {
                            FileName     = filename,
                            MimeType     = "image/png",
                            DatabaseData = databaseData,
                        };
                        return(outputFile);
                    }
                }
            }
            return(new BinaryFile());
        }
Ejemplo n.º 2
0
        public static BinaryFile HtmlToPdf(string html, RockContext rockContext = null, string pdfFileName = "GeneratedPDF.pdf", PageMargins margins = null, PageOrientation orientation = PageOrientation.Default)
        {
            if (rockContext == null)
            {
                rockContext = new RockContext();
            }
            var htmlToPdf = new HtmlToPdfConverter();

            if (margins != null)
            {
                htmlToPdf.Margins = margins;
            }
            htmlToPdf.Orientation = orientation;

            using (MemoryStream msPDF = new MemoryStream(htmlToPdf.GeneratePdf(html)))
            {
                BinaryFile pdfBinary = new BinaryFile();
                pdfBinary.Guid             = Guid.NewGuid();
                pdfBinary.FileName         = pdfFileName;
                pdfBinary.MimeType         = "application/pdf";
                pdfBinary.BinaryFileTypeId = new BinaryFileTypeService(rockContext).Get(new Guid(Rock.SystemGuid.BinaryFiletype.DEFAULT)).Id;

                BinaryFileData pdfData = new BinaryFileData();
                pdfData.Content = msPDF.ToArray();

                pdfBinary.DatabaseData = pdfData;

                return(pdfBinary);
            }
        }
        public override MobileBlockResponse HandleRequest(string resource, Dictionary <string, string> Body)
        {
            RockContext       rockContext       = new RockContext();
            PersonService     personService     = new PersonService(rockContext);
            BinaryFileService binaryFileService = new BinaryFileService(rockContext);

            var person = personService.Get(resource.AsGuid());

            if (person == null)
            {
                return(base.HandleRequest(resource, Body));
            }

            var data = new BinaryFileData()
            {
                Content = Convert.FromBase64String(Body["Photo"])
            };

            var file = new BinaryFile()
            {
                MimeType       = "image/jpg",
                DatabaseData   = data,
                FileName       = person.FullName,
                BinaryFileType = new BinaryFileTypeService(rockContext).Get(Rock.SystemGuid.BinaryFiletype.PERSON_IMAGE.AsGuid()),
            };

            binaryFileService.Add(file);
            rockContext.SaveChanges();

            AddOrUpdatePersonInPhotoRequestGroup(person, rockContext);
            person.PhotoId = file.Id;
            rockContext.SaveChanges();

            return(base.HandleRequest(resource, Body));
        }
Ejemplo n.º 4
0
        public void AddFile(FileDTO fileDto)
        {
            BinaryFileData binDataToRepository = new BinaryFileData
            {
                Content = fileDto.BinaryData.Content
            };
            File fileToRepository = new File
            {
                FileName         = fileDto.FileName,
                BinaryData       = binDataToRepository,
                ContentType      = fileDto.ContentType,
                CreatedDate      = DateTime.Now,
                FileIndex        = fileDto.FileIndex,
                RequestFormToken = fileDto.RequestFormToken
            };

            fileRepository.Insert(fileToRepository);
        }
Ejemplo n.º 5
0
 public static List <BinaryFile> ChopImage(BinaryFile inputFile, int cols, int rows, RockContext rockContext)
 {
     using (MemoryStream ms = new MemoryStream(inputFile.DatabaseData.Content))
     {
         List <BinaryFile> output        = new List <BinaryFile>();
         Image             originalImage = Image.FromStream(ms);
         Bitmap            sourceBitmap  = new Bitmap(originalImage);
         int width         = originalImage.Width;
         int height        = originalImage.Height;
         int elementWidth  = width / cols;
         int elementHeight = height / rows;
         for (var x = 0; x < width; x += elementWidth)
         {
             for (var y = 0; y < height; y += elementHeight)
             {
                 using (MemoryStream outMS = new MemoryStream())
                 {
                     var clone = sourceBitmap.Clone(new Rectangle(x + 4, y + 4, elementWidth - 4, elementHeight - 4), sourceBitmap.PixelFormat);
                     clone = Crop(clone);
                     clone.Save(outMS, ImageFormat.Png);
                     var data         = outMS.ToArray();
                     var databaseData = new BinaryFileData()
                     {
                         Content = data
                     };
                     var element = new BinaryFile()
                     {
                         BinaryFileTypeId = inputFile.BinaryFileTypeId,
                         FileName         = "Connection Card",
                         MimeType         = "image/png",
                         DatabaseData     = databaseData
                     };
                     BinaryFileService binaryFileService = new BinaryFileService(rockContext);
                     binaryFileService.Add(element);
                     output.Add(element);
                 }
             }
         }
         rockContext.SaveChanges();
         return(output);
     }
 }
        public override bool Execute(RockContext rockContext, WorkflowAction action, object entity, out List <string> errorMessages)
        {
            errorMessages = new List <string>();

            PersonAliasService personAliasService = new PersonAliasService(rockContext);
            Person             person             = personAliasService.Get(action.Activity.Workflow.GetAttributeValue("Person").AsGuid()).Person;

            LocationService locationService        = new LocationService(rockContext);
            Location        currentMailingAddress  = locationService.Get(action.Activity.Workflow.GetAttributeValue("CurrentMailingAddress").AsGuid());
            Location        previousMailingAddress = locationService.Get(action.Activity.Workflow.GetAttributeValue("PreviousMailingAddress").AsGuid());

            if (previousMailingAddress == null)
            {
                previousMailingAddress = new Location();
            }
            Location reference1Address = locationService.Get(action.Activity.Workflow.GetAttributeValue("Reference1Address").AsGuid());
            Location reference2Address = locationService.Get(action.Activity.Workflow.GetAttributeValue("Reference2Address").AsGuid());
            Location reference3Address = locationService.Get(action.Activity.Workflow.GetAttributeValue("Reference3Address").AsGuid());
            Location reference4Address = locationService.Get(action.Activity.Workflow.GetAttributeValue("Reference4Address").AsGuid());

            Dictionary <string, string> fields = new Dictionary <string, string>()
            {
                { "ministryOfInterest", action.Activity.Workflow.GetAttributeValue("MinistryOfInterest") },
                { "intPersonID", person.Id.ToString() },

                { "txtLastName", action.Activity.Workflow.GetAttributeValue("LastName") },
                { "txtFirstName", action.Activity.Workflow.GetAttributeValue("FirstName") },
                { "txtMiddleName", action.Activity.Workflow.GetAttributeValue("MiddleName") },
                { "txtMaidenOtherName", action.Activity.Workflow.GetAttributeValue("MaidenOtherNames") },
                { "txtParent", action.Activity.Workflow.GetAttributeValue("Parent") },
                { "txtParentEmail", action.Activity.Workflow.GetAttributeValue("ParentEmail") },
                { "txtParentHomePhone", action.Activity.Workflow.GetAttributeValue("ParentHomePhone") },
                { "txtParentCellPhone", action.Activity.Workflow.GetAttributeValue("ParentCellPhone") },

                { "txtDateOfBirth", action.Activity.Workflow.GetAttributeValue("DateofBirth").AsDateTime().Value.ToShortDateString() },
                //{"txtSSN", action.Activity.Workflow.GetAttributeValue("")},
                { "radGender", action.Activity.Workflow.GetAttributeValue("") },
                { "radMale", action.Activity.Workflow.GetAttributeValue("Gender") == "Male"?"Yes":"No" },
                { "radFemale", action.Activity.Workflow.GetAttributeValue("Gender") == "Female"?"Yes":"No" },
                { "txtSCCAttendanceDuration", action.Activity.Workflow.GetAttributeValue("HowLongAttended") },
                { "txtSCCMember", person.ConnectionStatusValue.Guid == Rock.SystemGuid.DefinedValue.PERSON_CONNECTION_STATUS_MEMBER.AsGuid()?"Yes":"No" },
                { "txtSCCMemberPDFNo", person.ConnectionStatusValue.Guid == Rock.SystemGuid.DefinedValue.PERSON_CONNECTION_STATUS_MEMBER.AsGuid()?"No":"Yes" },
                { "txtSCCInvolvement", action.Activity.Workflow.GetAttributeValue("CurrentParticipation") },
                { "txtChurch", action.Activity.Workflow.GetAttributeValue("ChurchAtttended") },

                { "txtStreet", currentMailingAddress.Street1 },
                { "txtCity", currentMailingAddress.City },
                { "txtState", currentMailingAddress.State },
                { "txtZip", currentMailingAddress.PostalCode },
                { "SaveUpToThisPoint", "" },
                { "txtPrevStreet", previousMailingAddress.Street1 },
                { "txtPrevCity", previousMailingAddress.City },
                { "txtPrevState", previousMailingAddress.State },
                { "txtPrevZip", previousMailingAddress.PostalCode },
                { "radOutOfState", action.Activity.Workflow.GetAttributeValue("OutsideKentuckyIndiana") },
                { "radOutOfStatePDFYes", action.Activity.Workflow.GetAttributeValue("OutsideKentuckyIndiana").AsBoolean()?"Yes":"No" },
                { "radOutOfStatePDFNo", action.Activity.Workflow.GetAttributeValue("OutsideKentuckyIndiana").AsBoolean()?"No":"Yes" },
                { "txtOutOfState_Dates", action.Activity.Workflow.GetAttributeValue("WhenOutsideKentuckyIndiana") },
                { "txtOutOfState_State", action.Activity.Workflow.GetAttributeValue("StatesOutsideKentuckyIndiana") },
                { "txtEmployer", action.Activity.Workflow.GetAttributeValue("CurrentEmployer") },
                { "txtPosition", action.Activity.Workflow.GetAttributeValue("PositionHeld") },
                { "txtWorkPhone", action.Activity.Workflow.GetAttributeValue("WorkPhone") },
                { "txtHomePhone", action.Activity.Workflow.GetAttributeValue("HomePhone") },
                { "txtCellPhone", action.Activity.Workflow.GetAttributeValue("CellPhone") },

                //{"txtWorkEmail", action.Activity.Workflow.GetAttributeValue("")},

                { "txtEmail", person.Email },

                { "txtRef1Name", action.Activity.Workflow.GetAttributeValue("Reference1Name") },
                //{"txtRef1Relationship", action.Activity.Workflow.GetAttributeValue("")},
                { "radRef1YearsKnow", action.Activity.Workflow.GetAttributeValue("Reference1Relationship")
                  + "/" + action.Activity.Workflow.GetAttributeValue("Reference1YearsKnown") },
                { "txtRef1Address", reference1Address.Street1 },
                { "txtRef1City", reference1Address.City },
                { "txtRef1State", reference1Address.State },
                { "txtRef1Zip", reference1Address.PostalCode },
                //{"txtRef1PersPhone", action.Activity.Workflow.GetAttributeValue("")},
                //{"txtRef1PersPhoneTime", action.Activity.Workflow.GetAttributeValue("")},
                { "txtRef1WorkPhone", action.Activity.Workflow.GetAttributeValue("Reference1WorkPhone") },
                //{"txtRef1WorkPhoneTime", action.Activity.Workflow.GetAttributeValue("")},
                { "txtRef1HomePhone", action.Activity.Workflow.GetAttributeValue("Reference1HomePhone") },
                { "txtRef1CellPhone", action.Activity.Workflow.GetAttributeValue("Reference1CellPhone") },
                { "txtRef1Email", action.Activity.Workflow.GetAttributeValue("Reference1Email") },

                { "txtRef2Name", action.Activity.Workflow.GetAttributeValue("Reference2Name") },
                //{"txtRef2Relationship", action.Activity.Workflow.GetAttributeValue("")},
                { "radRef2YearsKnow", action.Activity.Workflow.GetAttributeValue("Reference2Relationship")
                  + "/" + action.Activity.Workflow.GetAttributeValue("Reference2YearsKnown") },
                { "txtRef2Address", reference2Address.Street1 },
                { "txtRef2City", reference2Address.City },
                { "txtRef2State", reference2Address.State },
                { "txtRef2Zip", reference2Address.PostalCode },
                //{"txtRef2PersPhone", action.Activity.Workflow.GetAttributeValue("")},
                //{"txtRef2PersPhoneTime", action.Activity.Workflow.GetAttributeValue("")},
                { "txtRef2WorkPhone", action.Activity.Workflow.GetAttributeValue("Reference2WorkPhone") },
                //{"txtRef2WorkPhoneTime", action.Activity.Workflow.GetAttributeValue("")},
                { "txtRef2HomePhone", action.Activity.Workflow.GetAttributeValue("Reference2HomePhone") },
                { "txtRef2CellPhone", action.Activity.Workflow.GetAttributeValue("Reference2CellPhone") },
                { "txtRef2Email", action.Activity.Workflow.GetAttributeValue("Reference2Email") },

                { "txtRef3Name", action.Activity.Workflow.GetAttributeValue("Reference3Name") },
                //{"txtRef3Relationship", action.Activity.Workflow.GetAttributeValue("")},
                { "radRef3YearsKnow", action.Activity.Workflow.GetAttributeValue("Reference3Relationship")
                  + "/" + action.Activity.Workflow.GetAttributeValue("Reference3YearsKnown") },
                { "txtRef3Address", reference3Address.Street1 },
                { "txtRef3City", reference3Address.City },
                { "txtRef3State", reference3Address.State },
                { "txtRef3Zip", reference3Address.PostalCode },
                //{"txtRef3PersPhone", action.Activity.Workflow.GetAttributeValue("")},
                //{"txtRef3PersPhoneTime", action.Activity.Workflow.GetAttributeValue("")},
                { "txtRef3WorkPhone", action.Activity.Workflow.GetAttributeValue("Reference3WorkPhone") },
                //{"txtRef3WorkPhoneTime", action.Activity.Workflow.GetAttributeValue("")},
                { "txtRef3HomePhone", action.Activity.Workflow.GetAttributeValue("Reference3HomePhone") },
                { "txtRef3CellPhone", action.Activity.Workflow.GetAttributeValue("Reference3CellPhone") },
                { "txtRef3Email", action.Activity.Workflow.GetAttributeValue("Reference3Email") },

                { "txtRef4Name", action.Activity.Workflow.GetAttributeValue("Reference4Name") },
                //{"txtRef4Relationship", action.Activity.Workflow.GetAttributeValue("")},
                { "radRef4YearsKnow", action.Activity.Workflow.GetAttributeValue("Reference4Relationship")
                  + "/" + action.Activity.Workflow.GetAttributeValue("Reference4YearsKnown") },
                { "txtRef4Address", reference4Address?.Street1 },
                { "txtRef4City", reference4Address?.City },
                { "txtRef4State", reference4Address?.State },
                { "txtRef4Zip", reference4Address?.PostalCode },
                //{"txtRef4PersPhone", action.Activity.Workflow.GetAttributeValue("")},
                //{"txtRef4PersPhoneTime", action.Activity.Workflow.GetAttributeValue("")},
                { "txtRef4WorkPhone", action.Activity.Workflow.GetAttributeValue("Reference4WorkPhone") },
                //{"txtRef4WorkPhoneTime", action.Activity.Workflow.GetAttributeValue("")},
                { "txtRef4HomePhone", action.Activity.Workflow.GetAttributeValue("Reference4HomePhone") },
                { "txtRef4CellPhone", action.Activity.Workflow.GetAttributeValue("Reference4CellPhone") },
                { "txtRef4Email", action.Activity.Workflow.GetAttributeValue("Reference4Email") },

                //{"txtPhysLimitations", action.Activity.Workflow.GetAttributeValue("")},
                { "txtPhysLimitations", action.Activity.Workflow.GetAttributeValue("PhysicalLimitationsExplanation") },
                { "txtPhysLimitationsPDF", action.Activity.Workflow.GetAttributeValue("PhysicalLimitationsExplanation") },
                { "radPhysLimitationsPDFYes", action.Activity.Workflow.GetAttributeValue("PhysicalLimitations").AsBoolean()?"Yes":"No" },
                { "radPhysLimitationsPDFNo", action.Activity.Workflow.GetAttributeValue("PhysicalLimitations").AsBoolean()?"No":"Yes" },
                { "radCrimePersons", action.Activity.Workflow.GetAttributeValue("Crime").AsBoolean()?"Yes":"No" },
                { "radCrimePersonsPDFNo", action.Activity.Workflow.GetAttributeValue("Crime").AsBoolean()?"No":"Yes" },
                //{"radCrimeProperty", action.Activity.Workflow.GetAttributeValue("")},
                { "radThreatToMinors", action.Activity.Workflow.GetAttributeValue("Threat").AsBoolean()?"Yes":"No" },
                { "radThreatToMinorsPDFNo", action.Activity.Workflow.GetAttributeValue("Threat").AsBoolean()?"No":"Yes" },
                { "radCrimeCounseled", action.Activity.Workflow.GetAttributeValue("CrimeCounsel").AsBoolean()?"Yes":"No" },
                { "radCrimeCounseledPDFYes", action.Activity.Workflow.GetAttributeValue("CrimeCounsel").AsBoolean()?"Yes":"No" },
                { "radCrimeCounseledPDFNo", action.Activity.Workflow.GetAttributeValue("CrimeCounsel").AsBoolean()?"No":"Yes" },
                { "radNeedsStaffContact", action.Activity.Workflow.GetAttributeValue("Contact").AsBoolean()?"Yes":"No" },
                { "radNeedsStaffContactPDFNo", action.Activity.Workflow.GetAttributeValue("Contact").AsBoolean()?"No":"Yes" },
                { "personDetailPage", GlobalAttributesCache.Value("InternalApplicationRoot") + "/Person/" + person.Id },

                { "txtAppSigned", "{{t:s;r:y;o:\"Applicant\";}}" },
                { "txtAppDated", "{{t:d;r:y;o:\"Applicant\";l:\"Date\";dd:\"" + DateTime.Now.ToShortDateString() + "\";}}" },
                { "txtAppPrintedName", person.FullNameFormal },

                { "txtSOFSigned", "{{t:s;r:n;o:\"Applicant\";}}" },
                { "txtSOFDated", "{{t:d;r:n;o:\"Applicant\";l:\"Date\";dd:\"" + DateTime.Now.ToShortDateString() + "\";}}" },
                { "txtSOFPrintedName", person.FullNameFormal },

                { "txtParentSignature", "{{t:s;r:y;o:\"Parent\";}}" },
                { "txtDate1", "{{t:d;r:y;o:\"Parent\";l:\"Date\";dd:\"" + DateTime.Now.ToShortDateString() + "\";}}" },

                { "radReadSOFYes", action.Activity.Workflow.GetAttributeValue("ReadStatementOfFaith").AsBoolean()?"Yes":"No" },
                { "radReadSOFNo", action.Activity.Workflow.GetAttributeValue("ReadStatementOfFaith").AsBoolean()?"No":"Yes" },
                { "radAgreeSOFYes", action.Activity.Workflow.GetAttributeValue("AgreeStatementOfFaith").AsBoolean()?"Yes":"No" },
                { "radAgreeSOFNo", action.Activity.Workflow.GetAttributeValue("AgreeStatementOfFaith").AsBoolean()?"No":"Yes" },
                { "txtSOFCommentsAmendments", String.IsNullOrEmpty(action.Activity.Workflow.GetAttributeValue("CommentsStatementOfFaith"))?" ":action.Activity.Workflow.GetAttributeValue("CommentsStatementOfFaith") },
            };

            BinaryFileService binaryFileService = new BinaryFileService(rockContext);
            BinaryFile        PDF = null;
            var isMinorApplicant  = GetAttributeValue(action, "IsMinorApplication", true).AsBoolean();

            if (isMinorApplicant)
            {
                PDF = binaryFileService.Get(GetActionAttributeValue(action, "MinorVolunteerApplicationPDF").AsGuid());
            }
            else
            {
                PDF = binaryFileService.Get(GetActionAttributeValue(action, "AdultVolunteerApplicationPDF").AsGuid());
            }

            var pdfBytes = PDF.ContentStream.ReadBytesToEnd();

            using (MemoryStream ms = new MemoryStream())
            {
                PdfReader  pdfReader  = new PdfReader(pdfBytes);
                PdfStamper pdfStamper = new PdfStamper(pdfReader, ms);

                AcroFields pdfFormFields = pdfStamper.AcroFields;


                foreach (var field in fields)
                {
                    if (pdfFormFields.Fields.ContainsKey(field.Key))
                    {
                        pdfFormFields.SetField(field.Key, field.Value);
                    }
                }

                // flatten the form to remove editting options, set it to false
                // to leave the form open to subsequent manual edits
                pdfStamper.FormFlattening = true;

                // close the pdf
                pdfStamper.Close();
                //pdfReader.Close();
                pdfStamper.Dispose();
                pdfStamper = null;

                BinaryFile renderedPDF = new BinaryFile();
                renderedPDF.CopyPropertiesFrom(PDF);
                renderedPDF.Guid             = Guid.NewGuid();
                renderedPDF.FileName         = "VolunteerApplication_" + person.FirstName + person.LastName + ".pdf";
                renderedPDF.BinaryFileTypeId = new BinaryFileTypeService(rockContext).Get(new Guid(BACKGROUND_CHECK_BINARY_FILE_TYPE)).Id;

                BinaryFileData pdfData = new BinaryFileData();
                pdfData.Content = ms.ToArray();

                renderedPDF.DatabaseData = pdfData;

                binaryFileService.Add(renderedPDF);
                rockContext.SaveChanges();

                action.Activity.Workflow.SetAttributeValue("PDF", renderedPDF.Guid);
            }


            return(true);
        }
Ejemplo n.º 7
0
        /// <summary>
        /// Executes the action.
        /// </summary>
        /// <param name="rockContext">The rock context.</param>
        /// <param name="action">The action.</param>
        /// <param name="entity">The entity.</param>
        /// <param name="errorMessages">The error messages.</param>
        /// <returns></returns>
        public override bool Execute(RockContext rockContext, WorkflowAction action, object entity, out List <string> errorMessages)
        {
            errorMessages = new List <string>();

            PDFWorkflowObject pdfWorkflowObject = new PDFWorkflowObject();

            //A PDF merge can enter in two ways, kicked off with trigger or called from a block
            //If it is called from a block we will get our information from a PDFWorkflowObject
            //Otherwise we will need to get our information from the workflow attributes
            if (entity is PDFWorkflowObject)
            {
                pdfWorkflowObject = Utility.GetPDFFormMergeFromEntity(entity, out errorMessages);
            }
            else
            {
                pdfWorkflowObject = new PDFWorkflowObject(action, rockContext);
            }
            BinaryFile renderedPDF = new BinaryFile();

            //Merge PDF
            using (MemoryStream ms = new MemoryStream())
            {
                var pdfGuid = GetAttributeValue(action, "PDFTemplate");

                var pdf = new BinaryFileService(rockContext).Get(pdfGuid.AsGuid());

                var pdfBytes  = pdf.ContentStream.ReadBytesToEnd();
                var pdfReader = new PdfReader(pdfBytes);

                var stamper = new PdfStamper(pdfReader, ms);

                var form = stamper.AcroFields;

                form.GenerateAppearances = true;

                var fieldKeys = form.Fields.Keys;

                //Field keys are the names of form fields in a pdf form
                foreach (string fieldKey in fieldKeys)
                {
                    //If this is a key value pairing
                    if (pdfWorkflowObject.MergeObjects.ContainsKey(fieldKey))
                    {
                        if (pdfWorkflowObject.MergeObjects[fieldKey] is string)
                        {
                            form.SetField(fieldKey, pdfWorkflowObject.MergeObjects[fieldKey] as string);
                        }
                    }
                    //otherwise test for lava and use the form value as the lava input
                    else
                    {
                        string fieldValue = form.GetField(fieldKey);
                        if (!string.IsNullOrWhiteSpace(fieldValue) && fieldValue.HasMergeFields())
                        {
                            form.SetField(fieldKey, fieldValue.ResolveMergeFields(pdfWorkflowObject.MergeObjects));
                        }
                    }
                }

                //Should we flatten the form
                stamper.FormFlattening = GetActionAttributeValue(action, "Flatten").AsBoolean();

                stamper.Close();
                pdfReader.Close();

                //Generate New Object


                renderedPDF.CopyPropertiesFrom(pdf);
                renderedPDF.Guid             = Guid.NewGuid();
                renderedPDF.BinaryFileTypeId = new BinaryFileTypeService(rockContext).Get(new Guid(Rock.SystemGuid.BinaryFiletype.DEFAULT)).Id;

                BinaryFileData pdfData = new BinaryFileData();
                pdfData.Content = ms.ToArray();

                renderedPDF.DatabaseData = pdfData;

                pdfReader.Close();
            }

            if (entity is PDFWorkflowObject)
            {
                entity = pdfWorkflowObject;
            }
            else
            {
                BinaryFileService binaryFileService = new BinaryFileService(rockContext);
                binaryFileService.Add(renderedPDF);
                rockContext.SaveChanges();

                Guid guid = GetAttributeValue(action, "PDFOutput").AsGuid();
                if (!guid.IsEmpty())
                {
                    var attribute = AttributeCache.Read(guid, rockContext);
                    if (attribute != null)
                    {
                        SetWorkflowAttributeValue(action, guid, renderedPDF.Guid.ToString());
                    }
                }
            }
            return(true);
        }
Ejemplo n.º 8
0
    public static BinaryFileData ReadBinaryFileDaily(string fileName, DateTime startTime, DateTime endTime,
                                                     bool includeNA)
    {
        int SIZEOF_FLOAT = 4;
        int SIZEOF_LONG  = 8;

        try
        {
            using (FileStream stream = new FileStream(fileName, FileMode.Open, FileAccess.Read))
            {
                //read the startDate
                byte[] startDateBytes = new byte[SIZEOF_LONG];
                stream.Read(startDateBytes, 0, startDateBytes.Length);
                long[] startDateBinary = new long[1];
                Buffer.BlockCopy(startDateBytes, 0, startDateBinary, 0, SIZEOF_LONG);
                DateTime startDateFromFile = DateTime.FromBinary(startDateBinary[0]);

                //check start time
                if (startTime < startDateFromFile)
                {
                    startTime = startDateFromFile;
                }

                //find position of query start time
                int startTimePositionDays = (int)((startTime - startDateFromFile).TotalDays);
                if (startTimePositionDays < 0)
                {
                    return(null);
                }
                int      numDaysInFile   = (int)((stream.Length - SIZEOF_LONG) / SIZEOF_FLOAT);
                DateTime endDateFromFile = startDateFromFile.AddDays(numDaysInFile);

                if (endTime < startDateFromFile)
                {
                    return(null);
                }
                if (startTime > endDateFromFile)
                {
                    return(null);
                }

                long startTimePositionInBytes = SIZEOF_LONG + startTimePositionDays * SIZEOF_FLOAT;
                int  numDaysStartEnd          = (int)((endTime - startTime).TotalDays);
                long numBytesStartEnd         = numDaysStartEnd * SIZEOF_FLOAT;
                if (startTimePositionInBytes + numBytesStartEnd > stream.Length)
                {
                    numBytesStartEnd = stream.Length - startTimePositionInBytes;
                    numDaysStartEnd  = (int)(numBytesStartEnd / SIZEOF_FLOAT);
                }
                long endTimePositionInBytes = startTimePositionInBytes + numBytesStartEnd;

                byte[] resultBytes = new byte[numBytesStartEnd];


                stream.Seek(startTimePositionInBytes, SeekOrigin.Begin);
                stream.Read(resultBytes, 0, resultBytes.Length);

                float[] result = new float[numDaysStartEnd];
                Buffer.BlockCopy(resultBytes, 0, result, 0, resultBytes.Length);

                BinaryFileData res = new BinaryFileData();
                res.BeginDateTime = startDateFromFile;
                res.Data          = result;
                return(res);
            }
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.Message);
            return(null);
        }
    }
Ejemplo n.º 9
0
    public static BinaryFileData ReadBinaryFileHourly(string fileName, DateTime startTime, DateTime endTime,
        bool includeNA)
    {
        int SIZEOF_FLOAT = 4;
        int SIZEOF_LONG = 8;

        try
        {
            using (FileStream stream = new FileStream(fileName, FileMode.Open, FileAccess.Read))
            {
                //read the startDate
                byte[] startDateBytes = new byte[SIZEOF_LONG];
                stream.Read(startDateBytes, 0, startDateBytes.Length);
                long[] startDateBinary = new long[1];
                Buffer.BlockCopy(startDateBytes, 0, startDateBinary, 0, SIZEOF_LONG);
                DateTime startDateFromFile = DateTime.FromBinary(startDateBinary[0]);

                //check start time
                if (startTime < startDateFromFile)
                {
                    startTime = startDateFromFile;
                }

                //find position of query start time
                int startTimePositionHours = (int)((startTime - startDateFromFile).TotalHours);
                if (startTimePositionHours < 0)
                    return null;
                int numHoursInFile = (int)((stream.Length - SIZEOF_LONG) / SIZEOF_FLOAT);
                DateTime endDateFromFile = startDateFromFile.AddHours(numHoursInFile);

                if (endTime < startDateFromFile)
                    return null;
                if (startTime > endDateFromFile)
                    return null;

                long startTimePositionInBytes = SIZEOF_LONG + startTimePositionHours * SIZEOF_FLOAT;
                int numHoursStartEnd = (int)((endTime - startTime).TotalHours);
                long numBytesStartEnd = numHoursStartEnd * SIZEOF_FLOAT;
                if (startTimePositionInBytes + numBytesStartEnd > stream.Length)
                {
                    numBytesStartEnd = stream.Length - startTimePositionInBytes;
                    numHoursStartEnd = (int)(numBytesStartEnd / SIZEOF_FLOAT);
                }
                long endTimePositionInBytes = startTimePositionInBytes + numBytesStartEnd;

                byte[] resultBytes = new byte[numBytesStartEnd];

                stream.Seek(startTimePositionInBytes, SeekOrigin.Begin);
                stream.Read(resultBytes, 0, resultBytes.Length);

                float[] result = new float[numHoursStartEnd];
                Buffer.BlockCopy(resultBytes, 0, result, 0, resultBytes.Length);

                BinaryFileData res = new BinaryFileData();
                res.BeginDateTime = startTime;
                res.Data = result;
                return res;
            }
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.Message);
            return null;
        }
    }