protected void ProcessInviteeRelationship(Invitation invitation) { ApplicationUser recipient = UserManager.FindByEmail(invitation.RecipientEmail); if (recipient == null) { return; } ApplicationUser sender = UserManager.FindByEmail(invitation.Sender.Email); if (invitation.Status == InvitationStatus.Pending) { recipient.Inviters.Add(sender); sender.Invitees.Add(recipient); invitation.Status = InvitationStatus.Active; } else if (invitation.Status == InvitationStatus.Active) { recipient.Inviters.Remove(sender); sender.Invitees.Remove(recipient); invitation.Status = InvitationStatus.Inactive; } UserManager.Update(recipient); UserManager.Update(sender); }
public IHttpActionResult PostInvitation(NewInvitationBindingModel model) { if (!ModelState.IsValid) { return BadRequest(ModelState); } ApplicationUser currentUser = UserManager.FindById(User.Identity.GetUserId()); Invitation invitation = new Invitation { RecipientEmail = model.RecipientEmail, Sender = currentUser, Status = InvitationStatus.Pending, CreationDate = DateTime.Now }; ProcessInviteeRelationship(invitation); NotifyRecipientByEmail(model.RecipientEmail, currentUser.FirstName + ' ' + currentUser.LastName); db.Invitations.Add(invitation); db.SaveChanges(); return CreatedAtRoute("DefaultApi", new { id = invitation.Id }, new { id = invitation.Id }); }
private bool OwnInvitationExists(Invitation invitation) { return (invitation != null && invitation.Sender.Id == User.Identity.GetUserId()); }