コード例 #1
0
        protected void SaveRecord(bool newRecord)
        {
            // new record / exiting record //

            object oldEntity  = null;
            object oldAddress = null;


            if (newRecord)
            {
                Entity = new CRM_Fundraising();
                db.CRM_Fundraisings.InsertOnSubmit(Entity);
            }
            else
            {
                oldEntity  = Entity.ShallowCopy();
                oldAddress = Entity.CRM_Address.ShallowCopy();
            }


            int recurring = 0;

            Int32.TryParse(txtRecurringWeeks.Text, out recurring);

            Entity.IsInKind                = chkIsInKind.Checked;
            Entity.PledgedAmount           = Convert.ToDecimal(txtAmount.Text);
            Entity.IsGiftAid               = chkIsGiftAid.Checked;
            Entity.GiftAidFirstname        = txtGiftaidFirstname.Text;
            Entity.GiftAidLastname         = txtGiftaidLastname.Text;
            Entity.IsRecurring             = chkIsRecurring.Checked;
            Entity.RecurringEveryWeeks     = recurring;
            Entity.Duration                = Convert.ToInt32(txtDuration.Text);
            Entity.CRM_PaymentTypeID       = Convert.ToInt32(ddlPaymentType.SelectedValue);
            Entity.CRM_FundraisingReasonID = Convert.ToInt32(ddlFundReason.SelectedValue);
            Entity.PrimaryContactReference = ucACPrimaryContact.SelectedID;

            using (ContactManager manager = new ContactManager())
            {
                IContact selectedContact = new ContactManager().Contacts.Single(c => c.Reference == ucACPrimaryContact.SelectedID);

                Entity.ContactName = selectedContact.Fullname;
                Entity.ContactType = selectedContact.DisplayName;
                manager.Dispose();
            }

            if (newRecord)
            {
                CRM_Address address = new CRM_Address();
                Entity.CRM_Address = (CRM_Address)((Address)ucGiftAidAddress).Save(address);
            }
            else
            {
                Entity.CRM_Address = (CRM_Address)((Address)ucGiftAidAddress).Save(Entity.CRM_Address);
            }

            db.SubmitChanges();

            db.CRM_FundraisingSplits.DeleteAllOnSubmit(Entity.CRM_FundraisingSplits);
            db.SubmitChanges();

            foreach (CRM_FundraisingSplit serialSplit in GetSplitsFromRepeater())
            {
                CRM_FundraisingSplit split = new CRM_FundraisingSplit()
                {
                    Amount            = serialSplit.Amount,
                    CRM_FundID        = serialSplit.CRM_FundID,
                    DateGiven         = serialSplit.DateGiven,
                    GiftAidRate       = serialSplit.GiftAidRate,
                    CRM_FundRaisingID = Entity.ID
                };

                db.CRM_FundraisingSplits.InsertOnSubmit(split);
                db.SubmitChanges();
            }

            if (oldEntity != null)
            {
                CRM.Code.History.History.RecordLinqUpdate(AdminUser, oldEntity, Entity);
                CRM.Code.History.History.RecordLinqUpdate(AdminUser, oldAddress, Entity.CRM_Address);
                db.SubmitChanges();
            }
            else
            {
                CRM.Code.History.History.RecordLinqInsert(AdminUser, Entity);
                CRM.Code.History.History.RecordLinqInsert(AdminUser, Entity.CRM_Address);
            }

            ucCustomFields.Save(Entity.Reference);

            Session.Remove(SplitListConst);
        }