private System.Drawing.Image GetScaledPhoto(int activismId, int ySize, int pWidth, int pNoOverlay) { ExternalActivity activity = ExternalActivity.FromIdentity(activismId); Documents docs = Documents.ForObject(activity); if (docs.Count == 0) { return(null); } using (System.Drawing.Image unscaledImage = System.Drawing.Image.FromFile(@"C:\Data\Uploads\PirateWeb\" + docs[0].ServerFileName)) { // Generate image float factor = 1; int xSize = 600; if (pWidth > 0 && pWidth < 1000) { factor = ((float)pWidth) / ((float)xSize); xSize = pWidth; ySize = (int)(xSize * ((float)unscaledImage.Height) / ((float)unscaledImage.Width)); } string label = activity.DateTime.ToString("yyyy-MM-dd") + ": " + activity.Description; System.Drawing.Image newImage = GetResizedImage(xSize, label, unscaledImage, pNoOverlay); return(newImage); } }
protected void ButtonLogActivity_Click(object sender, EventArgs e) { // First, if there's an upload that the user hasn't processed, process it first. if (this.Upload.UploadedFiles.Count > 0) { ProcessUpload(); } // If args were invalid, abort if (!Page.IsValid) { return; } // Read the form data int temporaryId = Int32.Parse(this.TemporaryDocumentIdentity.Text); int organizationId = Int32.Parse(this.DropOrganizations.SelectedValue); Geography geography = this.DropGeographies.SelectedGeography; DateTime created = DateTime.Now; DateTime activityDate = (DateTime)this.DatePicker.SelectedDate; string description = this.TextDescription.Text; ExternalActivityType type = (ExternalActivityType)Enum.Parse(typeof(ExternalActivityType), this.DropActivityType.SelectedValue); // Create the activism record ExternalActivity activity = ExternalActivity.Create(Organization.FromIdentity(organizationId), geography, type, activityDate, description, _currentUser); // Move documents to the new activism Documents.ForObject(new TemporaryIdentity(temporaryId)).SetForeignObjectForAll(activity); // Create the event for PirateBot-Mono to send off mails Activizr.Logic.Support.PWEvents.CreateEvent(EventSource.PirateWeb, EventType.ActivismLogged, _currentUser.Identity, organizationId, geography.Identity, _currentUser.Identity, activity.Identity, string.Empty); Page.ClientScript.RegisterStartupScript(typeof(Page), "OkMessage", @"alert ('The activism has been logged.');", true); // Clear the text fields this.TextDescription.Text = string.Empty; this.TemporaryDocumentIdentity.Text = "0"; }
protected void Page_Load(object sender, EventArgs e) { int activismId = 0; string idString = Request.QueryString["Id"]; if (idString == "latest") { ExternalActivities activities = ExternalActivities.ForOrganization(Organization.PPSE, ExternalActivities.SortOrder.CreationDateDescending, 1); activismId = activities[0].Identity; } else { activismId = Int32.Parse(idString); } int ySize = 450; int pWidth = Int32.Parse("0" + Request.QueryString["Width"]); int pNoOverlay = Int32.Parse("0" + Request.QueryString["NoOverlay"]); int cacheLength = (activismId % 10) * 100 + 500; Response.Cache.SetExpires(DateTime.Now.AddSeconds(cacheLength)); string photoPath = @"C:\Data\Uploads\PirateWeb\ActivismImgCache\"; string fileName = "a" + activismId + "w" + pWidth + "o" + pNoOverlay + ".jpg"; Response.ContentType = "image/jpeg"; try { FileInfo cachedFile = new FileInfo(photoPath + fileName); ExternalActivity act = ExternalActivity.FromIdentity(activismId); if (cachedFile.LastWriteTime < act.CreatedDateTime) { cachedFile.Delete(); throw new FileNotFoundException("Cached File Invalid"); } Response.WriteFile(photoPath + fileName, false); } catch (FileNotFoundException) { // Call garbage collector to prevent Out Of Memory GC.Collect(); GC.WaitForPendingFinalizers(); using (System.Drawing.Image photo = GetScaledPhoto(activismId, ySize, pWidth, pNoOverlay)) { if (photo != null) { try { photo.Save(photoPath + fileName, ImageFormat.Jpeg); } catch (Exception) { } using (Stream outputstream = Response.OutputStream) { photo.Save(outputstream, ImageFormat.Jpeg); } } } } }
static public object FromBasic(IHasIdentity basic) { string argumentType = basic.GetType().ToString(); switch (argumentType) { // ----- Is there any way to make self-writing code here through replication or similar, so // ----- that every case doesn't need to be listed? // ------------ COMMUNICATION CLASSES ------------ case "Swarmops.Basic.Types.BasicCommunicationTurnaround": return(CommunicationTurnaround.FromBasic((BasicCommunicationTurnaround)basic)); case "Swarmops.Basic.Types.Communications.BasicOutboundComm": return(OutboundComm.FromBasic((BasicOutboundComm)basic)); case "Swarmops.Basic.Types.Communications.BasicOutboundCommRecipient": return(OutboundCommRecipient.FromBasic((BasicOutboundCommRecipient)basic)); // ----------- FINANCIAL CLASSES ---------- case "Swarmops.Basic.Types.BasicExpenseClaim": return(ExpenseClaim.FromBasic((BasicExpenseClaim)basic)); case "Swarmops.Basic.Types.Financial.BasicCashAdvance": return(CashAdvance.FromBasic((BasicCashAdvance)basic)); case "Swarmops.Basic.Types.BasicInboundInvoice": return(InboundInvoice.FromBasic((BasicInboundInvoice)basic)); case "Swarmops.Basic.Types.Financial.BasicFinancialAccount": return(FinancialAccount.FromBasic((BasicFinancialAccount)basic)); case "Swarmops.Basic.Types.Financial.BasicFinancialTransaction": return(FinancialTransaction.FromBasic((BasicFinancialTransaction)basic)); case "Swarmops.Basic.Types.BasicFinancialValidation": return(FinancialValidation.FromBasic((BasicFinancialValidation)basic)); case "Swarmops.Basic.Types.BasicOutboundInvoice": return(OutboundInvoice.FromBasic((BasicOutboundInvoice)basic)); case "Swarmops.Basic.Types.BasicOutboundInvoiceItem": return(OutboundInvoiceItem.FromBasic((BasicOutboundInvoiceItem)basic)); case "Swarmops.Basic.Types.BasicPayment": return(Payment.FromBasic((BasicPayment)basic)); case "Swarmops.Basic.Types.BasicPaymentGroup": return(PaymentGroup.FromBasic((BasicPaymentGroup)basic)); case "Swarmops.Basic.Types.BasicPayout": return(Payout.FromBasic((BasicPayout)basic)); case "Swarmops.Basic.Types.BasicPayrollAdjustment": return(PayrollAdjustment.FromBasic((BasicPayrollAdjustment)basic)); case "Swarmops.Basic.Types.BasicPayrollItem": return(PayrollItem.FromBasic((BasicPayrollItem)basic)); case "Swarmops.Basic.Types.BasicSalary": return(Salary.FromBasic((BasicSalary)basic)); case "Swarmops.Basic.Types.Financial.BasicFinancialTransactionTagSet": return(FinancialTransactionTagSet.FromBasic((BasicFinancialTransactionTagSet)basic)); case "Swarmops.Basic.Types.Financial.BasicFinancialTransactionTagType": return(FinancialTransactionTagType.FromBasic((BasicFinancialTransactionTagType)basic)); // ------------ GOVERNANCE CLASSES ------------ case "Swarmops.Basic.Types.BasicBallot": return(Ballot.FromBasic((BasicBallot)basic)); case "Swarmops.Basic.Types.BasicMeetingElectionCandidate": return(MeetingElectionCandidate.FromBasic((BasicInternalPollCandidate)basic)); case "Swarmops.Basic.Types.BasicMeetingElection": return(MeetingElection.FromBasic((BasicInternalPoll)basic)); case "Swarmops.Basic.Types.BasicMeetingElectionVote": return(MeetingElectionVote.FromBasic((BasicInternalPollVote)basic)); case "Swarmops.Basic.Types.Governance.BasicMotion": return(Motion.FromBasic((BasicMotion)basic)); case "Swarmops.Basic.Types.Governance.BasicMotionAmendment": return(MotionAmendment.FromBasic((BasicMotionAmendment)basic)); // ------------ PARLEY/ACTIVISM CLASSES ------------ case "Swarmops.Basic.Types.BasicExternalActivity": return(ExternalActivity.FromBasic((BasicExternalActivity)basic)); case "Swarmops.Basic.Types.BasicParley": return(Parley.FromBasic((BasicParley)basic)); case "Swarmops.Basic.Types.BasicParleyAttendee": return(ParleyAttendee.FromBasic((BasicParleyAttendee)basic)); case "Swarmops.Basic.Types.BasicParleyOption": return(ParleyOption.FromBasic((BasicParleyOption)basic)); case "Swarmops.Basic.Types.BasicPerson": return(Person.FromBasic((BasicPerson)basic)); // ------------------ FAIL ---------------- default: throw new NotImplementedException("Unimplemented argument type: " + argumentType); } }