예제 #1
0
        public Task CreateAsync(Submitter invitee, Submission submission, UnconfirmedSubmissionOwner invitation)
        {
            using (var db = new WebGalleryDbContext())
            {
                // remove invitation
                db.UnconfirmedSubmissionOwners.RemoveRange(from u in db.UnconfirmedSubmissionOwners
                                                           where u.RequestID == invitation.RequestID
                                                           select u);

                // if the invitee has no ownership for this app, add one
                var alreadyHasOwnership = db.SubmissionOwners.Any(o =>
                                                                  o.SubmissionID == submission.SubmissionID &&
                                                                  o.SubmitterID == invitee.SubmitterID);
                if (!alreadyHasOwnership)
                {
                    db.SubmissionOwners.Add(new SubmissionOwner
                    {
                        SubmissionID = submission.SubmissionID,
                        SubmitterID  = invitee.SubmitterID
                    });
                }
                db.SaveChanges();

                return(Task.FromResult(0));
            }
        }
예제 #2
0
        public Task SendOwnershipInvitation(string emailAddressOfInvitee, UnconfirmedSubmissionOwner unconfirmedSubmissionOwner, string urlAuthority, Func <string, string> htmlEncode)
        {
            using (var db = new WebGalleryDbContext())
            {
                var submission = (from s in db.Submissions
                                  where s.SubmissionID == unconfirmedSubmissionOwner.SubmissionID
                                  select s).FirstOrDefault();

                if (submission == null)
                {
                    return(Task.FromResult(0));
                }

                // html encode some strings
                submission.Nickname = htmlEncode(submission.Nickname);
                submission.Version  = htmlEncode(submission.Version);
                unconfirmedSubmissionOwner.FirstName = htmlEncode(unconfirmedSubmissionOwner.FirstName);
                unconfirmedSubmissionOwner.LastName  = htmlEncode(unconfirmedSubmissionOwner.LastName);
                var invitationGuid = htmlEncode(unconfirmedSubmissionOwner.RequestID.ToString());

                // build the body of the email
                var bodyBuilder = new StringBuilder();
                bodyBuilder.Append($"<p>{unconfirmedSubmissionOwner.FirstName} {unconfirmedSubmissionOwner.LastName}:</p>");
                bodyBuilder.Append($"<p>You have been invited to take co-ownership of an application intended for inclusion in Microsoft's <a href='https://{urlAuthority}' title='Web App Gallery'>Web App Gallery</a>.</p>");
                bodyBuilder.Append("<p>");
                bodyBuilder.Append($"The ID of the application is {submission.Nickname}.<br />");
                bodyBuilder.Append($"The version is {submission.Version}.");
                bodyBuilder.Append("</p>");
                bodyBuilder.Append("<p>");
                bodyBuilder.Append($"To accept this invitation please visit <a href='https://{urlAuthority}/ownership/invitations/{invitationGuid}' title='go here to accept this invitation'>this Web page</a> and follow these steps:");
                bodyBuilder.Append("</p>");
                bodyBuilder.Append("<ol>");
                bodyBuilder.Append("<li>Log into Live ID. If you do not yet have a Live ID account you will be able to create one from the log-in page.</li>");
                bodyBuilder.Append("<li>Provide us with your contact information (unless you have done so in the past).</li>");
                bodyBuilder.Append("<li>Click the appropriate button to accept or decline this invitation.</li>");
                bodyBuilder.Append("</ol>");
                bodyBuilder.Append("<p>");
                bodyBuilder.Append("Best regards,<br />");
                bodyBuilder.Append("Web Application Gallery Team");
                bodyBuilder.Append("</p>");

                var subject = "You are invited to be a co-owner of an Web App Gallery application";
                var from    = GetFromMailAddress();

                SendGridEmailHelper.SendAsync(subject, bodyBuilder.ToString(), from.Address, from.DisplayName, emailAddressOfInvitee);

                return(Task.FromResult(0));
            }
        }
예제 #3
0
        public Task <UnconfirmedSubmissionOwner> CreateInvitationAsync(string firstName, string lastName, Submission submission)
        {
            using (var db = new WebGalleryDbContext())
            {
                var unconfirmedSubmissionOwner = new UnconfirmedSubmissionOwner
                {
                    SubmissionID            = submission.SubmissionID,
                    RequestID               = Guid.NewGuid(),
                    RequestDate             = DateTime.Now,
                    FirstName               = firstName,
                    LastName                = lastName,
                    IsSuperSubmitterRequest = false
                };

                db.UnconfirmedSubmissionOwners.Add(unconfirmedSubmissionOwner);
                db.SaveChanges();

                return(Task.FromResult(unconfirmedSubmissionOwner));
            }
        }