public bool Invite(Person organiser, Person user, Event ev) { var message = new MailMessage(); message.To.Add(user.EmailAddress); message.From = new MailAddress("*****@*****.**"); message.Subject = string.Format("You have been invited to a Geeks Dilemma event by {0}", DisplayName(organiser)); message.Body = @"Your friend " + DisplayName(organiser) + @" is organising an event and you're invited. " + Environment.NewLine + Environment.NewLine + ev.Description + Environment.NewLine + Environment.NewLine + "To see the details including who else is invitee and to say whether or not you can go, click here:"+ Environment.NewLine + Environment.NewLine + "http://localhost/geeks/home/event/" + ev.Id + "/" + user.Id; var smtp = new SmtpClient(); smtp.Send(message); return true; }
private Person CreatePersonDocumentIfNecessary(string currentPersonId) { var person = Query(new PersonByEmail { Email = Email }); if (person == null) { person = new Person { Id = Guid.NewGuid().ToString(), EmailAddress = Email, Name = Name, Friends = new List<Friend> { new Friend { PersonId = currentPersonId, Rating = 0 } } }; Session.Store(person); } return person; }
public void EventIsOn(Event ev, Person organiser, List<Person> invitees) { var message = new MailMessage(); var score = ev.PercentageScore(); message.To.Add(organiser.EmailAddress); foreach (var invitee in invitees) { message.CC.Add(invitee.EmailAddress); } message.From = new MailAddress("*****@*****.**"); message.Subject = string.Format("Your Geek's Dilemma event has a green light with a score of {0}%", score); message.Body = @"The following event is looking good with a current score of "+ score +@"%." + Environment.NewLine + Environment.NewLine + ev.Description + Environment.NewLine + Environment.NewLine + "To look at the details of this event, rate friends or change your attendance, click the following link:" + Environment.NewLine + Environment.NewLine + "http://localhost/geeks/home/event/" + ev.Id; var smtp = new SmtpClient(); smtp.Send(message); }
private Friend GetFriendFromPerson(Person person, string friendPersonId) { if (person == null) return null; return person.Friends.SingleOrDefault(f => f.PersonId == friendPersonId); }
private EventModel EventModelFromEvent(Event ev, Person currentPerson = null) { var organiser = RavenSession.Load<User>(ev.CreatedBy); var myInvitation = ev.Invitations.FirstOrDefault(invitation => invitation.PersonId == currentPerson.Id); return new EventModel { Id = ev.Id, CreatedByUserName = organiser.Username, CreatedBy = organiser.Id, ReadOnly = organiser.Id != GetCurrentUserId(), Date = ev.Date, Time = ev.Time, Description = ev.Description, Latitude = ev.Latitude, Longitude = ev.Longitude, Venue = ev.Venue, Score = ev.PercentageScore(), Zoom = ev.Zoom, MyResponse = myInvitation == null ? InvitationResponse.No : myInvitation.Response, Invitations = (from i in ev.Invitations let person = RavenSession.Load<Person>(i.PersonId) let friend = GetFriendFromPerson(currentPerson, i.PersonId) select new InvitationModel { IsCurrentUser = person.Id == currentPerson.Id, Email = person.EmailAddress, PersonId = person.Id, Rating = friend == null ? 0 : friend.Rating, EmailSent = i.EmailSent, Response = i.Response, EventId = ev.Id }).ToList() }; }
private EventModel EventModelForNewEvent(Person me) { return new EventModel { CreatedBy = me.UserId, Invitations = new List<InvitationModel> { new InvitationModel { PersonId = me.Id, Email = me.EmailAddress, EmailSent = true, IsCurrentUser = true, Response = InvitationResponse.Yes } } }; }
private void ImportContacts(GoogleContact gc, List<ImportModel> contacts) { var person = Query(new PersonByUserId {UserId = GetCurrentUserId()}); var existingPeople = Query(new PeopleAlreadyImported { Emails = new HashSet<string>(from m in contacts.Distinct() select m.EmailAddress.ToLower()) }); using (var bulkInsert = Store.BulkInsert()) { foreach (var importModel in contacts) { //don't import yourself if (importModel.EmailAddress.ToLower() == User.Identity.Name) continue; //if we already have a person record for this address if (existingPeople.ContainsKey(importModel.EmailAddress.ToLower())) continue; var newPerson = new Person { EmailAddress = importModel.EmailAddress.ToLower(), Name = importModel.Name, Id = Guid.NewGuid().ToString(), Friends = new List<Friend> { new Friend { PersonId = person.Id, Rating = 0 } } }; bulkInsert.Store(newPerson); existingPeople.Add(newPerson.EmailAddress, newPerson); } person.Friends = person.Friends.Union(from i in contacts let email = i.EmailAddress.ToLower() where !person.Friends.Any(f => f.PersonId == existingPeople[email].Id) select new Friend { PersonId = existingPeople[email].Id }).ToList(); } RavenSession.Delete(gc); }
public bool UpdateInvitationResponse(Event ev, Person organiser, Person responder, InvitationResponse response) { var message = new MailMessage(); message.To.Add(organiser.EmailAddress); message.From = new MailAddress("*****@*****.**"); message.Subject = string.Format("{0} has responded to your event invitation", DisplayName(responder)); message.Body = @"Your friend " + DisplayName(responder) + @" has " + (response == InvitationResponse.Yes ? "accepted":"declined") + @" your invitation to the following event:" + Environment.NewLine + Environment.NewLine + ev.Description + Environment.NewLine + Environment.NewLine + "To see how this may have affected the score for this event click the following link:" + Environment.NewLine + Environment.NewLine + "http://localhost/geeks/home/event/" + ev.Id; var smtp = new SmtpClient(); smtp.Send(message); return true; }
private static string DisplayName(Person organiser) { return string.IsNullOrEmpty(organiser.Name) ? organiser.EmailAddress : organiser.Name; }