CmsData.OrganizationMember.AddTransaction C# (CSharp) Method

AddTransaction() public method

public AddTransaction ( CmsData.CMSDataContext db, string reason, decimal payment, string description, decimal amount = null, bool adjustFee = false, string pmtDescription = null ) : CmsData.Transaction
db CmsData.CMSDataContext
reason string
payment decimal
description string
amount decimal
adjustFee bool
pmtDescription string
return CmsData.Transaction
        public Transaction AddTransaction(CMSDataContext db, string reason, decimal payment, string description, decimal? amount = null, bool? adjustFee = false, string pmtDescription = null)
        {
            var ts = TransactionSummary(db);
            var ti = db.Transactions.SingleOrDefault(tt => tt.Id == TranId);
            if (ti == null)
            {
                ti = (from t in db.Transactions
                      where t.OriginalTransaction.TransactionPeople.Any(pp => pp.PeopleId == PeopleId)
                      where t.OriginalTransaction.OrgId == OrganizationId
                      orderby t.Id descending
                      select t).FirstOrDefault();
                if (ti != null)
                    TranId = ti.Id;
            }

            var ti2 = new Transaction
            {
                TransactionId = $"{reason} ({Util.UserPeopleId ?? Util.UserId1})",
                Description = Util.PickFirst(pmtDescription, Organization.OrganizationName),
                TransactionDate = DateTime.Now,
                OrgId = OrganizationId,
                Name = Person.Name,
                First = Person.PreferredName,
                Last = Person.LastName,
                MiddleInitial = Person.MiddleName.Truncate(1),
                Suffix = Person.SuffixCode,
                Address = Person.PrimaryAddress,
                City = Person.PrimaryCity,
                Emails = Person.EmailAddress,
                State = Person.PrimaryState,
                Zip = Person.PrimaryZip,
                LoginPeopleId = Util.UserPeopleId,
                Approved = true,
                Amt = payment,
                //Amtdue = (amount ?? payment) - payment,
                Amtdue = (amount ?? 0) - payment,
                AdjustFee = adjustFee,
                Message = description,
            };

            db.Transactions.InsertOnSubmit(ti2);
            db.SubmitChanges();
            if (ts == null)
            {
                TranId = ti2.Id;
                ti2.TransactionPeople.Add(new TransactionPerson { PeopleId = PeopleId, OrgId = OrganizationId, Amt = amount ?? payment });
                if (ti != null)
                    ti.OriginalId = ti.Id;
            }
            ti2.OriginalId = TranId;
            db.SubmitChanges();

            //            if (Organization.IsMissionTrip == true)
            //            {
            //                var settings = Settings.CreateSettings(Organization.RegSetting, db, OrganizationId);
            //            }

            return ti2;
        }