protected void rptSplits_ItemDataBound(object sender, RepeaterItemEventArgs e)
        {
            CRM_FundraisingSplit split = (CRM_FundraisingSplit)e.Item.DataItem;

            DropDownList            ddlFund        = (DropDownList)e.Item.FindControl("ddlFund");
            TextBox                 txtPrice       = (TextBox)e.Item.FindControl("txtPrice");
            TextBox                 txtGiftAidRate = (TextBox)e.Item.FindControl("txtGiftAidRate");
            UserControlDateCalendar txtDateGiven   = (UserControlDateCalendar)e.Item.FindControl("txtDateGiven");
            LinkButton              lnkRemove      = (LinkButton)e.Item.FindControl("lnkRemove");

            BindFundDDL(ddlFund);

            ddlFund.SelectedValue           = split.CRM_FundID.ToString();
            lnkRemove.Attributes[DataIndex] = e.Item.ItemIndex.ToString();
            txtPrice.Text       = split.Amount.ToString("N2");
            txtDateGiven.Value  = split.DateGiven;
            txtGiftAidRate.Text = split.GiftAidRate.ToString("N0");
        }
        protected List <CRM_FundraisingSplit> GetSplitsFromRepeater()
        {
            List <CRM_FundraisingSplit> splitList = new List <CRM_FundraisingSplit>();

            foreach (RepeaterItem item in rptSplits.Items)
            {
                DropDownList            ddlFund        = (DropDownList)item.FindControl("ddlFund");
                TextBox                 txtPrice       = (TextBox)item.FindControl("txtPrice");
                TextBox                 txtGiftAidRate = (TextBox)item.FindControl("txtGiftAidRate");
                UserControlDateCalendar txtDateGiven   = (UserControlDateCalendar)item.FindControl("txtDateGiven");

                CRM_FundraisingSplit split = new CRM_FundraisingSplit()
                {
                    Amount      = Convert.ToDecimal(txtPrice.Text),
                    CRM_FundID  = Convert.ToInt32(ddlFund.SelectedValue),
                    DateGiven   = txtDateGiven.Value,
                    GiftAidRate = Convert.ToDecimal(txtGiftAidRate.Text)
                };

                splitList.Add(split);
            }

            return(splitList);
        }
        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);
        }