Esempio n. 1
0
 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;
 }
Esempio n. 2
0
        private static DonationRequest FindOrCreateDonationRequest(DonationRecipient recipient)
        {
            var request = new DonationRequest {
                Amount = DefaultDonationAmount, RecipientId = recipient.Id
            };

            _donationsCommand.CreateRequest(request);
            return(request);
        }
Esempio n. 3
0
        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);
                }
            }
        }
Esempio n. 4
0
        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;
            }
        }
Esempio n. 5
0
        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;
            }
        }
Esempio n. 6
0
        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());
        }