Add Campaign Creator email to campaign export report
This commit is contained in:
parent
449380f612
commit
73be70b872
2 changed files with 37 additions and 8 deletions
|
@ -26,7 +26,8 @@ module QueryDonations
|
|||
"#{QueryPayments.get_dedication_or_empty('contact', "phone")}::text AS \"Dedicated To: Phone\"",
|
||||
"#{QueryPayments.get_dedication_or_empty( "contact", "address")}::text AS \"Dedicated To: Address\"",
|
||||
"#{QueryPayments.get_dedication_or_empty( "note")}::text AS \"Dedicated To: Note\"",
|
||||
"donations.campaign_id AS \"Campaign Id\""
|
||||
"donations.campaign_id AS \"Campaign Id\"",
|
||||
"users.email AS \"Campaign Creator Email\""
|
||||
])
|
||||
>>>>>>> 5c0d16c0b... Add campaign_id to export
|
||||
).from(:donations)
|
||||
|
@ -36,10 +37,16 @@ module QueryDonations
|
|||
.left_outer_join(:recurring_donations, "recurring_donations.donation_id = donations.id")
|
||||
.join_lateral(:payments,
|
||||
get_first_payment_for_donation.parse, true)
|
||||
.where("donations.campaign_id IN (#{QueryCampaigns
|
||||
.get_campaign_and_children(campaign_id)
|
||||
.parse})")
|
||||
.group_by("donations.id", "supporters.id", "payments.id", "payments.gross_amount")
|
||||
.join(Qx.select('id, profile_id').from('campaigns')
|
||||
.where("id IN (#{QueryCampaigns
|
||||
.get_campaign_and_children(campaign_id)
|
||||
.parse})").as('campaigns').parse,
|
||||
'donations.campaign_id=campaigns.id')
|
||||
.join(Qx.select('users.id, profiles.id AS profiles_id, users.email')
|
||||
.from('users')
|
||||
.add_join('profiles', 'profiles.user_id = users.id')
|
||||
.as("users").parse, "users.profiles_id=campaigns.profile_id")
|
||||
.group_by("donations.id", "supporters.id", "payments.id", "payments.gross_amount", "users.email")
|
||||
.order_by("donations.date")
|
||||
)
|
||||
end
|
||||
|
|
|
@ -6,10 +6,27 @@ describe QueryDonations do
|
|||
describe :campaign_export do
|
||||
let(:nonprofit) {force_create(:nonprofit)}
|
||||
let(:supporter) {force_create(:supporter)}
|
||||
let(:campaign) {force_create(:campaign, nonprofit:nonprofit, show_total_count:false, show_total_raised: false, goal_amount: 16000)}
|
||||
let(:campaign_child) {force_create(:campaign, nonprofit:nonprofit, parent_campaign:campaign, show_total_count:true, show_total_raised: true, goal_amount: 8000)}
|
||||
|
||||
let(:campaign_child_2) {force_create(:campaign, nonprofit:nonprofit, parent_campaign:campaign, show_total_count:true, show_total_raised: true, goal_amount: 4000 )}
|
||||
let(:profile_email) { 'something@profile_email.com'}
|
||||
let(:profile) do
|
||||
u = force_create(:user, email: profile_email)
|
||||
profile = force_create(:profile, user: u)
|
||||
end
|
||||
let(:campaign) {force_create(:campaign, nonprofit:nonprofit, show_total_count:false, show_total_raised: false, goal_amount: 16000, profile: profile)}
|
||||
|
||||
let(:profile_email1) { 'something1@profile_email.com'}
|
||||
let(:profile1) {
|
||||
u = force_create(:user, email: profile_email1)
|
||||
profile = force_create(:profile, user: u)
|
||||
}
|
||||
let(:campaign_child) {force_create(:campaign, nonprofit:nonprofit, parent_campaign:campaign, show_total_count:true, show_total_raised: true, goal_amount: 8000, profile: profile1)}
|
||||
|
||||
let(:profile_email2) { 'something2@profile_email.com'}
|
||||
let(:profile2) {
|
||||
u = force_create(:user, email: profile_email2)
|
||||
profile = force_create(:profile, user: u)
|
||||
}
|
||||
let(:campaign_child_2) {force_create(:campaign, nonprofit:nonprofit, parent_campaign:campaign, show_total_count:true, show_total_raised: true, goal_amount: 4000, profile: profile2 )}
|
||||
|
||||
let(:donation) { force_create(:donation, campaign: campaign, amount: 1000, supporter:supporter)}
|
||||
let(:payment) { force_create(:payment, donation: donation, gross_amount:1000, supporter:supporter)}
|
||||
|
@ -50,6 +67,11 @@ describe QueryDonations do
|
|||
export = vector_to_hash(campaign_export)
|
||||
expect(export.map{|i| i['Campaign Id']}).to match_array([campaign.id, campaign.id, campaign_child.id, campaign_child_2.id])
|
||||
end
|
||||
|
||||
it 'includes user email' do
|
||||
export = vector_to_hash(campaign_export)
|
||||
expect(export.map{|i| i['Campaign Creator Email']}).to match_array([profile_email, profile_email, profile_email1, profile_email2])
|
||||
end
|
||||
end
|
||||
|
||||
## move to common area
|
||||
|
|
Loading…
Reference in a new issue