public ContactInvitationEmail(ICommunicationUser inviter, NetworkingInvitation invitation, DonationRequest donationRequest, DonationRecipient donationRecipient, IList <Job> currentJobs, int contactCount) : base(GetUnregisteredMember(invitation.InviteeEmailAddress), inviter) { _invitation = invitation; _donationRequest = donationRequest; _donationRecipient = donationRecipient; _currentJobs = currentJobs; _contactCount = contactCount; }
private static DonationRequest FindOrCreateDonationRequest(DonationRecipient recipient) { var request = new DonationRequest { Amount = DefaultDonationAmount, RecipientId = recipient.Id }; _donationsCommand.CreateRequest(request); return(request); }
private void OnFriendInvitationSent(Member inviter, FriendInvitation invitation) { // Extra information. var view = new PersonalView(inviter, PersonalContactDegree.FirstDegree, PersonalContactDegree.Public); IList <Job> currentJobs = null; if (view.CanAccess(PersonalVisibility.CurrentJobs)) { var candidate = _candidatesQuery.GetCandidate(view.Id); var resume = candidate.ResumeId == null ? null : _resumesQuery.GetResume(candidate.ResumeId.Value); currentJobs = resume == null ? null : resume.CurrentJobs; } var contactCount = view.CanAccess(PersonalVisibility.FriendsList) ? _memberContactsQuery.GetFirstDegreeContacts(inviter.Id).Count : 0; if (invitation.InviteeId == null) { // Non-member. DonationRequest donationRequest = null; DonationRecipient donationRecipient = null; if (invitation.DonationRequestId != null) { donationRequest = _donationsQuery.GetRequest(invitation.DonationRequestId.Value); if (donationRequest != null) { donationRecipient = _donationsQuery.GetRecipient(donationRequest.RecipientId); } } var email = new ContactInvitationEmail(inviter, invitation, donationRequest, donationRecipient, currentJobs, contactCount); _emailsCommand.TrySend(email); } else { // Existing member. var to = _membersQuery.GetMember(invitation.InviteeId.Value); if (to != null) { var activation = GetEmailVerification(to, invitation); var email = new FriendInvitationEmail(to, inviter, invitation, activation, currentJobs, contactCount); _emailsCommand.TrySend(email); } } }
private void CreateDonationRequest(out DonationRequest donationRequest, out DonationRecipient donationRecipient) { var recipients = _donationsQuery.GetRecipients(); if (recipients.Count > 0) { donationRecipient = _donationsQuery.GetRecipients()[0]; donationRequest = new DonationRequest { Amount = DonationAmount, RecipientId = donationRecipient.Id }; _donationsCommand.CreateRequest(donationRequest); } else { donationRequest = null; donationRecipient = null; } }
private void SetUpDonationRecipients() { var recipients = _donationsQuery.GetRecipients(); if (recipients.Count == 0) { phDonation.Visible = false; } else { phDonation.Visible = true; // Assumed that there is only one donation recipient so use it. // If there are ever more than this then the use of checkboxes / radio buttons etc // needs to be revisited. The main problem is once a reciepient has been chosen // how do you unchoose all recipients. Debug.Assert(recipients.Count == 1); DonationRecipient recipient = recipients[0]; chkDonationRecipient.Text = recipient.Name; chkDonationRecipient.Checked = false; } }
private string GetContent(TemplateEmail templateEmail, Member inviter, Request invitation, DonationRequest donationRequest, DonationRecipient donationRecipient) { var friendCount = Resolve <IMemberContactsQuery>().GetFirstDegreeContacts(inviter.Id).Count; var sb = new StringBuilder(); sb.AppendLine("<p>Hi</p>"); sb.AppendLine("<p>"); sb.AppendLine(" " + inviter.FullName + " has sent you a request to join their personal network."); sb.AppendLine("</p>"); // Show details if set. var currentJobs = GetCurrentJobs(inviter.Id); var view = new PersonalView(inviter, PersonalContactDegree.FirstDegree, PersonalContactDegree.FirstDegree); bool currentJobsVisible = view.CanAccess(PersonalVisibility.CurrentJobs) && !currentJobs.IsNullOrEmpty() && currentJobs.Count > 0; bool contactCountVisible = view.CanAccess(PersonalVisibility.FriendsList) && friendCount > 0; sb.AppendLine(); if (currentJobsVisible || contactCountVisible) { sb.AppendLine("<div style=\"padding-left: 30px; font-family: Arial, Helvetica, sans-serif;\">"); sb.AppendLine(" <p>"); sb.AppendLine(" " + inviter.FullName); sb.AppendLine(); } if (currentJobsVisible) { sb.AppendLine(" <br />"); var currentJob = (from j in currentJobs where !string.IsNullOrEmpty(j.Title) && j.Dates.Start != null orderby j.Dates.Start.Value descending select j.Title).FirstOrDefault(); sb.AppendLine(" " + currentJob); sb.AppendLine(); } if (contactCountVisible) { sb.AppendLine(); sb.AppendLine(" <br />"); sb.AppendLine(" already has " + friendCount + " friend" + (friendCount > 1 ? "s" : "")); sb.AppendLine(" in their network who may be able to help you in your career."); } if (currentJobsVisible || contactCountVisible) { sb.AppendLine(); sb.AppendLine(" </p>"); sb.AppendLine("</div>"); sb.AppendLine(); } sb.AppendLine("<p>"); sb.AppendLine(" A profile on our network will help position your career for success."); sb.AppendLine(" 1000s of employers are searching for talent like you."); sb.AppendLine("</p>"); sb.AppendLine(); if (donationRequest != null) { sb.AppendLine("<p>We'll also donate " + donationRequest.Amount.ToString("C") + " to the " + donationRecipient.Name + " when you join.</p>"); sb.AppendLine(); } sb.AppendLine(); if (!string.IsNullOrEmpty(invitation.Text)) { sb.AppendLine("<p>"); sb.AppendLine(" " + inviter.FirstName.MakeNamePossessive() + " personal message:"); sb.AppendLine(" <br />"); sb.AppendLine(" " + HtmlUtil.LineBreaksToHtml(HttpUtility.HtmlEncode(invitation.Text))); sb.AppendLine("</p>"); sb.AppendLine(); } sb.AppendLine("<p>"); sb.AppendLine(" <a href=\"" + GetTinyUrl(templateEmail, false, "~/Join.aspx", "inviteId", invitation.Id.ToString("N")) + "\">Join " + inviter.FirstName.MakeNamePossessive() + " network</a>"); sb.AppendLine("</p>"); return(sb.ToString()); }