private void GenerateCampaignDonationsForMember(Donations donationsRepo, Campaign campaign, Member member) { int numberOfDonations = random.NextInt(0, 3); for (int i = 0; i < numberOfDonations; i++) { // don't generate donations each time to simulate a miss if (this.random.Percent(donationRate)) { decimal amount = GenerateAmount(); Donation donation = new Donation { CampaignId = campaign.Id, MemberId = member.Id, Amount = amount, Date = random.NextDateTime(), }; donationsRepo.Insert(donation); } } }
internal void Generate() { logAction("Generating donations..."); //TODO: output percentage completion like the other generators // only want to generate donations for committed campaigns var committedCampaigns = campaigns.Where(c => c.IsCommitted).ToList(); var members = new Members(); var donations = new Donations(); foreach (var campaign in committedCampaigns) { var membersForCampaign = members.GetByCampaignId(campaign.Id); foreach (var member in membersForCampaign) { GenerateCampaignDonationsForMember(donations, campaign, member); } } logAction("Donations generated successfully"); }