public ActionResult Index(InviteCommand command)
        {
            //TODO: validate
            try
            {
                var loggedInMember = _members.FindLoggedInMember();

                var invite = new Invitation();
                invite.FullName = command.FullName;
                invite.Email = command.Email;
                invite.LinkedIn = command.LinkedIn;
                invite.GitHub = command.GitHub;
                invite.Testimonial = command.Testimonial;
                invite.VouchedBy = loggedInMember.Id;

                _session.Store(invite);

                loggedInMember.AddInvitation(invite.Id);

                _session.SaveChanges();

                //TODO: publish event
                _email.SendInvitationToGroup(invite, loggedInMember.UserName);
                invite.Pending();
             				_session.SaveChanges(); //in the short run, this will give us a heads up if the mandril send is failing

                return RedirectToAction("Ok");
            }
            catch (Exception)
            {
                ModelState.AddModelError("", "error");
                return View(command);
            }
        }
Esempio n. 2
0
        public void WehnPendingIsCalledStatusIsSetToPending()
        {
            var sut = new Invitation();

            sut.Pending();

            Assert.AreEqual(Invitation.Statuses.Pending, sut.Status);
        }
Esempio n. 3
0
        public void CannotSetToPendingTwice()
        {
            var sut = new Invitation();

            sut.Pending();

            Assert.Throws<ApplicationException>(sut.Pending, "pending twice");
        }
Esempio n. 4
0
        public void WhenAcceptIsCalledStatusIsSetToAccepted()
        {
            var sut = new Invitation();

            sut.Pending();
            sut.Accept();

            Assert.AreEqual(Invitation.Statuses.Accepted, sut.Status);
        }