@*using statement required for access to Constituencies object type when making REST call to CRM/Constituencies*@ @using System.Linq; @using System; @using System.Web; @using System.Collections.Generic; @using System.Linq; @using Tessitura.Service.Client.Templates; @using Tessitura.Service.Client.Web; @using Tessitura.Service.Client.CRM; @using Tessitura.Service.Client.Txn; @using System.Globalization; @{ var hasConstituent = Model.OrderProductView.Constituent != null; var hasAddress = Model.Address != null; var hasElectronicAddress = Model.ElectronicAddress != null; var hasBooking = Model.Booking != null; var isInSpecialConstituency = false; var constituencyMessage = Model.GetPropertyValue("ConstituencyMessage") ?? "Thank you for being a part of Friend's Circle!"; var constituency = Model.GetPropertyValue("Constituency") ?? "FRC"; var hasState = hasAddress && Model.Address.State != null; var hasProducts = Model.OrderProductView.Products != null && Model.OrderProductView.Products.Count > 0; var hasPaymentPlans = Model.OrderProductView.PaymentPlans != null && Model.OrderProductView.PaymentPlans.Count > 0; var hasPayments = Model.OrderProductView.Payments != null && Model.OrderProductView.Payments.Count > 0; var PaymentPlans = "No"; } @if (hasConstituent) { var url = "CRM/Constituencies?constituentId=" + Model.OrderProductView.Constituent.Id + "&includeAffiliations=true"; var constituencies = Model.RestClient.AtUrl(url).Get().ResponseObject; isInSpecialConstituency = constituencies != null && (constituencies as Constituencies).Count(x => x.ConstituencyType.ShortDescription == constituency) > 0; } @if (hasProducts) { var perfs = (Model.OrderProductView.Products as OrderProductViewProducts).Where(x => x.ProductClass.Description == "Performance"); var packages = (Model.OrderProductView.Products as OrderProductViewProducts).Where(x => x.ProductClass.Description == "Package"); var contributions = (Model.OrderProductView.Products as OrderProductViewProducts).Where(x => x.ProductClass.Description == "Contribution"); var contributionTotal = contributions.Sum(x => x.Contribution.Amount); var memberships = (Model.OrderProductView.Products as OrderProductViewProducts).Where(x => x.ProductClass.Description == "Membership"); var membershipTotal = memberships.Sum(x => x.Membership.Amount); var giftCertificates = (Model.OrderProductView.Products as OrderProductViewProducts).Where(x => x.ProductClass.Description == "Gift Certificate"); var giftCertificateTotal = giftCertificates.Sum(x => -x.GiftCertificate.Amount); var subTotal = string.Format("{0:C}", Model.OrderProductView.TotalPurchaseAmount + Model.OrderProductView.TotalContributionAmount); /* PERFORMANCES */ // If the order has performances, loop through them and display them in a table if (perfs != null && perfs.Count() > 0) { } /* PACKAGES */ // If the order has packages, loop through them and display them in a table if (packages != null && packages.Count() > 0) { } /* CONTRIBUTIONS */ // If the order has contributions, loop through them and display them in a table if (contributions != null && contributions.Count() > 0) { } if (memberships != null && memberships.Count() > 0) { } if (giftCertificates != null && giftCertificates.Count() > 0) { } } @if (hasBooking) { }
@{ var state = hasState ? ", " + Model.Address.State.StateCode : ""; var electronicAddress = hasElectronicAddress ? Model.ElectronicAddress.Address : ""; }

Thank you for your purchase!

Order Date: @Model.OrderProductView.OrderDateTime
Order Number: @Model.OrderProductView.Id
@if (hasConstituent) { Customer Number: @Model.OrderProductView.Constituent.Id

}

Please retain this receipt for your reference.

Your Account Information:
@if (isInSpecialConstituency) { @constituencyMessage
} @if (hasConstituent) { @Model.OrderProductView.Constituent.DisplayName
} @if (hasAddress) { @Model.Address.Street1
@Model.Address.City@state @: @Model.Address.PostalCode
} @electronicAddress
@if (hasProducts) { var giftCertificatesDeliveryMethod = (Model.OrderProductView.Products as OrderProductViewProducts).Where(x => x.ProductClass.Description == "Gift Certificate"); /* Delivery method - suppress for Gift certs */ if (giftCertificatesDeliveryMethod != null && giftCertificatesDeliveryMethod.Count() > 0) { @* show nothing in delivery info area *@ } else { @if (Model.OrderProductView.DeliveryMethod.Id == -1) { @* DM: Hold at Box Office *@ Hold at Box Office

} else if (Model.OrderProductView.DeliveryMethod.Id == 2) { @* DM: Print at Home *@ You chose Print-at-Home tickets
You will receive an email when your tickets are ready.
} else if (Model.OrderProductView.DeliveryMethod.Id == 3) { @* DM: Tickets in Hand *@ Your tickets have been printed at the NAC Box Office
} else if (Model.OrderProductView.DeliveryMethod.Id == 5) { @* DM: Digital Tickets *@ You chose digital tickets
Thank you for considering the environment!
} else if (Model.OrderProductView.DeliveryMethod.Id == 1 && hasAddress) { @* DM: Standard Mail *@ Order shipping information
@Model.Address.Street1
@Model.Address.City@state  @Model.Address.PostalCode
} } }
Performances
@{ var performanceTotal = @perfs.Sum(x => x.Performance.LineItem.TotalDue); } @foreach (var product in perfs) { var performance = product.Performance.LineItem.Performance; var performanceType = performance.Type.Id; var isTimedEntryPerf = performanceType != null && performanceType.ToString() == "7"; var priceZoneDescription = ""; foreach (var subLineItem in product.Performance.LineItem.SubLineItems){ priceZoneDescription = subLineItem.Zone.Description; } }
Description Section Row Seat Price Total
@performance.Description
@performance.Facility.Description
@if(@isTimedEntryPerf){ Entry time: @priceZoneDescription } else{ @performance.PerformanceDateTime }
@foreach (var subLineItem in product.Performance.LineItem.SubLineItems) { var seatSection = string.IsNullOrEmpty(subLineItem.Seat.Section.ShortDescription) ? "TBD" : subLineItem.Seat.Section.ShortDescription; @seatSection
}
@foreach (var subLineItem in product.Performance.LineItem.SubLineItems) { var seatRow = string.IsNullOrEmpty(subLineItem.Seat.Row) ? "TBD" : subLineItem.Seat.Row; var seatSection = string.IsNullOrEmpty(subLineItem.Seat.Section.ShortDescription) ? "TBD" : subLineItem.Seat.Section.ShortDescription; @if(@seatSection != "GA - AG"){ @seatRow
} }
@foreach (var subLineItem in product.Performance.LineItem.SubLineItems) { var seatNumber = string.IsNullOrEmpty(subLineItem.Seat.Number) ? "TBD" : subLineItem.Seat.Number; var seatSection = string.IsNullOrEmpty(subLineItem.Seat.Section.ShortDescription) ? "TBD" : subLineItem.Seat.Section.ShortDescription; @if(@seatSection != "GA - AG"){ @seatNumber
} }
@foreach (var subLineItem in product.Performance.LineItem.SubLineItems) { var amount = string.Format("{0:C}", subLineItem.DueAmount); @amount
}
@string.Format("{0:C}", product.Performance.LineItem.TotalDue)
Total Single Tickets Cost: @string.Format("{0:C}", performanceTotal)
Packages
@{ var packageTotal = packages.Sum(x => x.Package.LineItems.Sum(y => y.TotalDue)); } @foreach (var product in packages) { foreach (var lineItem in product.Package.LineItems) { if (lineItem.Performance == null) { } else { var performance = lineItem.Performance; var performanceType = performance.Type.Id; var isTimedEntryPerf = performanceType != null && performanceType.ToString() == "7"; var priceZoneDescription = ""; foreach (var subLineItem in lineItem.SubLineItems){ priceZoneDescription = subLineItem.Zone.Description; } } } }
Description Section Row Seat Price Total
@lineItem.Package.Description
@performance.Description
@performance.Facility.Description
@if(@isTimedEntryPerf){ Entry time: @priceZoneDescription } else{ @performance.PerformanceDateTime }
@foreach (var subLineItem in lineItem.SubLineItems) { var seatSection = string.IsNullOrEmpty(subLineItem.Seat.Section.ShortDescription) ? "TBD" : subLineItem.Seat.Section.ShortDescription; @seatSection
}
@foreach (var subLineItem in lineItem.SubLineItems) { var seatRow = string.IsNullOrEmpty(subLineItem.Seat.Number) ? "TBD" : subLineItem.Seat.Row; var seatSection = string.IsNullOrEmpty(subLineItem.Seat.Section.ShortDescription) ? "TBD" : subLineItem.Seat.Section.ShortDescription; @if(@seatSection != "GA - AG"){ @seatRow
} }
@foreach (var subLineItem in lineItem.SubLineItems) { var seatNumber = string.IsNullOrEmpty(subLineItem.Seat.Number) ? "TBD" : subLineItem.Seat.Number; var seatSection = string.IsNullOrEmpty(subLineItem.Seat.Section.ShortDescription) ? "TBD" : subLineItem.Seat.Section.ShortDescription; @if(@seatSection != "GA - AG"){ @seatNumber
} }
@foreach (var subLineItem in lineItem.SubLineItems) { var amount = string.Format("{0:C}", subLineItem.DueAmount); @amount
}
@string.Format("{0:C}", lineItem.TotalDue)
Total Packages Cost: @string.Format("{0:C}", packageTotal)
Total Subscription Tickets: @string.Format("{0:C}", packageTotal)
Total Additional Ticket(s): @string.Format("{0:C}", Model.OrderProductView.TotalPurchaseAmount - packageTotal)
Contributions
@foreach (var contribution in contributions) { }
Description Total
@contribution.Contribution.Fund.Description @string.Format("{0:C}", contribution.Contribution.Amount)
Total Contribution Cost: @string.Format("{0:C}", contributionTotal)
Memberships
@foreach (var membership in memberships) { }
Description Total
@membership.Membership.MembershipLevel.Description @string.Format("{0:C}", membership.Membership.Amount)
Total Membership Cost: @string.Format("{0:C}", membershipTotal)
Digital Gift Cards
@foreach (var giftCertificate in giftCertificates) { var amount = -giftCertificate.GiftCertificate.Amount; }
Description Total
Digital Gift Card Code: @giftCertificate.GiftCertificate.GiftCertificateNumber @string.Format("{0:C}", amount)
Total Digital Gift Card Cost: @string.Format("{0:C}", giftCertificateTotal)
@if (hasPayments) { decimal paymentMethodCount = Model.OrderProductView.Payments.Count; decimal paymentMethodIndex = 0; string sum = ""; string paymentMethod = ""; string last4 = ""; }
Order Subtotal: @subTotal
Handling Fee: @string.Format("{0:C}", Model.OrderProductView.TotalFeeAmount)
Total: @string.Format("{0:C}", Model.OrderProductView.TotalDueAmount)
Total Paid: @string.Format("{0:C}", Model.OrderProductView.TotalPaidAmount)
Balance Due: @string.Format("{0:C}", Model.OrderProductView.TotalDueAmount - Model.OrderProductView.TotalPaidAmount)
Method(s) of Payment: @foreach (var paymentsByMethod in (Model.OrderProductView.Payments as OrderProductViewPayments).GroupBy(item => item.PaymentMethod.AliasDescription)) { paymentMethodIndex = paymentMethodIndex + 1; @foreach (var item in paymentsByMethod) { } }
@{ sum = string.Format("{0:C}", item.Amount); paymentMethod = item.PaymentMethod.AliasDescription; if(item.LastFourCreditCardNumber != null){ last4 = item.LastFourCreditCardNumber; } if (@paymentMethod == "Gift Certificate"){ Digital Gift Card } else { @paymentMethod } if (@last4 != "") { (@last4) ; } @sum }
Payment Plan? @if (hasPaymentPlans) { PaymentPlans = "Yes"; } @PaymentPlans
@if (Model.Booking.Assignments != null && Model.Booking.Assignments.Count > 0) { }
Booking

@Model.Booking.Description

Confirmation: @Model.Booking.ConfirmationText

Resources
@foreach (var assignment in @Model.Booking.Assignments) { var description = @assignment.Resource != null ? @assignment.Resource.Description : "TBD"; if (assignment.ConfirmationText != null) { } }
Type Description Count Start End
@assignment.ResourceType.Description @description @assignment.Schedule.Count @assignment.Schedule.StartDateTime @assignment.Schedule.EndDateTime
@assignment.ConfirmationText