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); } }
private void LookupReference(string reference) { OutboundInvoice invoice = null; try { invoice = OutboundInvoice.FromReference(reference); } catch (Exception) { this.PanelInvoice.Visible = false; this.LabelReferenceNotFound.Text = "Invoice not found or already paid."; return; } if (!invoice.Open) { this.PanelInvoice.Visible = false; this.LabelReferenceNotFound.Text = "Invoice not found or already paid."; return; } this.LabelReferenceNotFound.Text = string.Empty; this.PanelInvoice.Visible = true; this.LabelInvoiceReference.Text = invoice.Reference; this.LabelAmount.Text = invoice.Amount.ToString("N2", new CultureInfo("sv-SE")) + " " + invoice.Currency.Code + " (+5% Credit Card / Paypal surcharge)"; this.LabelIssuer.Text = invoice.Organization.Name; this.LabelRecipient.Text = invoice.CustomerName; this.LinkInvoiceImage.NavigateUrl = "http://data.piratpartiet.se/Forms/DisplayOutboundInvoice.aspx?Reference=" + invoice.Reference + "&Culture=" + (invoice.Domestic ? invoice.Organization.DefaultCountry.Culture.Replace("-", "").ToLower() : "enus"); OutboundInvoiceItems items = invoice.Items; items.Add(OutboundInvoiceItem.FromBasic(new BasicOutboundInvoiceItem(0, 0, "PayPal/Credit Card surcharge", (Int64)(invoice.AmountCents * 0.05)))); items.Add(OutboundInvoiceItem.FromBasic(new BasicOutboundInvoiceItem(0, 0, "INVOICE TOTAL", (Int64)(invoice.AmountCents * 1.05)))); this.RepeaterItems.DataSource = items; this.RepeaterItems.DataBind(); this.LiteralPaypalButton.Text = String.Format( "<input type=\"hidden\" name=\"cmd\" value=\"_xclick\">" + "<input type=\"hidden\" name=\"business\" value=\"FM8HU676ABYMA\">" + "<input type=\"hidden\" name=\"lc\" value=\"{2}\">" + "<input type=\"hidden\" name=\"item_name\" value=\"Invoice #{0}\">" + "<input type=\"hidden\" name=\"amount\" value=\"{1}\">" + "<input type=\"hidden\" name=\"currency_code\" value=\"SEK\">" + "<input type=\"hidden\" name=\"button_subtype\" value=\"services\">" + "<input type=\"hidden\" name=\"no_note\" value=\"1\">" + "<input type=\"hidden\" name=\"no_shipping\" value=\"1\">" + "<input type=\"hidden\" name=\"rm\" value=\"1\">" + "<input type=\"hidden\" name=\"return\" value=\"https://pirateweb.net/Pages/Public/PayInvoice.aspx\">" + "<input type=\"hidden\" name=\"cancel_return\" value=\"https://pirateweb.net/Pages/Public/PayInvoice.aspx\">" + "<input type=\"hidden\" name=\"bn\" value=\"PP-BuyNowBF:btn_paynowCC_LG.gif:NonHosted\">" + "<input type=\"hidden\" name=\"invoice\" value=\"{0}\">" + "<a href=\"javascript:theForm.__VIEWSTATE.value='';theForm.encoding='application/x-www-form-urlencoded';theForm.action='https://www.paypal.com/cgi-bin/webscr';theForm.submit();\"><img src=\"https://www.paypal.com/en_US/i/btn/btn_paynowCC_LG.gif\" border=\"0\"></a>" + // Asp.Net hack for PayPal "<img alt=\"\" border=\"0\" src=\"https://www.paypal.com/en_US/i/scr/pixel.gif\" width=\"1\" height=\"1\">", invoice.Reference, (invoice.Amount * 1.05m).ToString("N2", CultureInfo.InvariantCulture), (invoice.Domestic?invoice.Organization.DefaultCountry.Code:"US")); }