private void Populate()
{
if (dopopulate)
{
dopopulate = false;
if (!OrgId.HasValue || !PeopleId.HasValue)
return;
}
var i = (from mm in DbUtil.Db.OrganizationMembers
where mm.OrganizationId == OrgId && mm.PeopleId == PeopleId
select new
{
mm,
mm.Person.Name,
mm.Organization.OrganizationName,
mm.Organization,
mm.OrgMemMemTags,
mm.Organization.IsMissionTrip,
ts = DbUtil.Db.ViewTransactionSummaries.SingleOrDefault(tt => tt.RegId == mm.TranId && tt.PeopleId == PeopleId && tt.OrganizationId == OrgId)
}).SingleOrDefault();
if (i == null)
throw new Exception($"missing OrgMember at oid={OrgId}, pid={PeopleId}");
OrgMember = i.mm;
TransactionSummary = i.ts;
this.CopyPropertiesFrom(OrgMember);
Name = i.Name;
IsMissionTrip = i.IsMissionTrip ?? false;
AmtFee = i.ts?.IndPaid + i.ts?.IndDue;
AmtDonation = i.ts?.IndAmt - AmtFee;
AmtCoupon = i.ts?.TotCoupon;
AmtPaid = OrgMember.AmountPaidTransactions(DbUtil.Db);
AmtDue = OrgMember.AmountDueTransactions(DbUtil.Db);
OrgName = i.OrganizationName;
Organization = i.Organization;
OrgMemMemTags = i.OrgMemMemTags.ToList();
Setting = DbUtil.Db.CreateRegistrationSettings(OrgId ?? 0);
}