private void InitializeLoanShares() { decimal num = _group.GetNumberOfMembers; if (!_credit.Amount.HasValue) _credit.Amount = nudLoanAmount.Value; decimal share = _credit.Amount.Value / num; decimal amt = _credit.Product.UseCents ? Math.Round(share, 2, MidpointRounding.AwayFromZero) : Math.Floor(share); OCurrency amtForLeader = _credit.Amount - (num - 1) * amt; _loanShares.Clear(); Member leader = null; Member last = null; foreach (Member member in _group.Members) { leader = member.IsLeader ? member : null; last = member; } leader = leader ?? last; foreach (Member m in _group.Members) { LoanShare ls = new LoanShare { Amount = m.Equals(leader) ? amtForLeader : amt , PersonId = m.Tiers.Id , PersonName = m.Tiers.Name }; _loanShares.Add(ls); } }
public void UpdateLoanShare(LoanShare pLoanShare, int pLoanId, int pGroupId, SqlTransaction pSqlTransac) { // Check if share exists const string q = @"SELECT COUNT(*) FROM dbo.LoanShareAmounts WHERE person_id = @person_id AND group_id = @group_id AND contract_id = @contract_id"; bool exists; using (OpenCbsCommand c = new OpenCbsCommand(q, pSqlTransac.Connection, pSqlTransac)) { c.AddParam("@person_id", pLoanShare.PersonId); c.AddParam("@group_id", pGroupId); c.AddParam("@contract_id", pLoanId); c.AddParam("@amount", pLoanShare.Amount); exists = Convert.ToInt32(c.ExecuteScalar()) > 0; } string query; if (exists) { query = @"UPDATE LoanShareAmounts SET amount = @amount WHERE person_id = @person_id AND group_id = @group_id AND contract_id = @contract_id"; } else { query = @"INSERT INTO LoanShareAmounts (person_id, group_id, contract_id, amount) VALUES (@person_id, @group_id, @contract_id, @amount)"; } using(OpenCbsCommand c = new OpenCbsCommand(query, pSqlTransac.Connection, pSqlTransac)) { c.AddParam("@person_id", pLoanShare.PersonId); c.AddParam("@group_id", pGroupId); c.AddParam("@contract_id", pLoanId); c.AddParam("@amount", pLoanShare.Amount); c.ExecuteNonQuery(); } }