// POST: api/Reception public bool Post([FromBody]EventDTO request) { using (var dbContext = new WeddingSiteBuilderEntities()) { var wedding = dbContext.Weddings.FirstOrDefault(w => w.WeddingID == request.WeddingId); if (wedding != null) { if (wedding.Receptions.Any()) { var reception = wedding.Receptions.FirstOrDefault(); if (!string.IsNullOrWhiteSpace(request.LocationName)) reception.LocationName = request.LocationName; if (!string.IsNullOrWhiteSpace(request.Address1)) reception.Address1 = request.Address1; if (!string.IsNullOrWhiteSpace(request.City)) reception.City = request.City; if (!string.IsNullOrWhiteSpace(request.State)) reception.StateProv = request.State; if (!string.IsNullOrWhiteSpace(request.Zip)) reception.ZipCode = request.Zip; if (request.Date != null) reception.ReceptionDateTime = request.Date.Value; dbContext.SaveChanges(); return true; } wedding.Receptions.Add(new Reception() { LocationName = request.LocationName, Address1 = request.Address1, City = request.City, StateProv = request.State, ZipCode = request.Zip, ReceptionDateTime = request.Date.HasValue ? request.Date.Value : DateTime.Now }); var changesSaved = dbContext.SaveChanges(); return changesSaved == 1; } return false; } }
// GET: api/RSVP/5 public List<AttendeeWithRSVP> Get(long WeddingId) { if (WeddingId != 0) { using (var dbContext = new WeddingSiteBuilderEntities()) { var attendees = new List<AttendeeWithRSVP>(); dbContext.Attendees .Where(a => a.WeddingID == WeddingId && !(a.WeddingRole == "Bride" || a.WeddingRole == "Groom" || a.PartyMember == true)) .ToList() .ForEach(a => { var rsvp = dbContext.RSVPLinks.FirstOrDefault(r => r.AttendeeID == a.AttendeeID); if (rsvp != null) { var attendee = new AttendeeWithRSVP { Attendee = new AttendeeModel(a), RSVP = new RSVPLinkModel(rsvp) }; attendees.Add(attendee); } }); return attendees; } } else { return new List<AttendeeWithRSVP>(); } }
// GET: api/Attendee/5 public List<Attendee> Get(long WeddingId, string option) { var attendees = new List<Attendee>(); using(var dbContext = new WeddingSiteBuilderEntities()) { var retrievedAttendees = dbContext.Attendees.Include("Person").Where(a => a.WeddingID == WeddingId).ToList(); if(option == "couple") { retrievedAttendees = retrievedAttendees.Where(a => a.WeddingRole == "Bride" || a.WeddingRole == "Groom").ToList(); } else if(option == "party") { retrievedAttendees = retrievedAttendees.Where(a => a.PartyMember == true).ToList(); } else { retrievedAttendees = retrievedAttendees.Where(a => !(a.WeddingRole == "Bride" || a.WeddingRole == "Groom" || a.PartyMember == true)).ToList(); } attendees.AddRange(retrievedAttendees); } return attendees; }
// GET: api/Ceremony/5 public Ceremony Get(long WeddingId) { using (var dbContext = new WeddingSiteBuilderEntities()) { if(WeddingId != 0) { return dbContext.Ceremonies.FirstOrDefault(c => c.WeddingID == WeddingId); } return null; } }
// GET: api/Reception/5 public Reception Get(int WeddingId) { using(var dbContext = new WeddingSiteBuilderEntities()) { var wedding = dbContext.Weddings.FirstOrDefault(w => w.WeddingID == WeddingId); if(wedding != null) { return wedding.Receptions.FirstOrDefault(); } return null; } }
// POST: api/Registration public long Post([FromBody]RegistrationDTO request) { int changesSaved = 0; try { using (var dbContext = new WeddingSiteBuilderEntities()) { var person = new Person() { Email = request.Email, Password = request.Password, FirstName = request.FirstName, LastName = request.LastName }; dbContext.People.Add(person); var wedding = new Wedding(); dbContext.Weddings.Add(wedding); changesSaved = dbContext.SaveChanges(); var attendee = new Attendee() { WeddingID = wedding.WeddingID, PersonID = person.PersonID, WeddingRole = request.BrideOrGroom == "Bride" ? "Bride" : "Groom", Side = request.BrideOrGroom == "Bride" ? "Bride" : "Groom" }; dbContext.Attendees.Add(attendee); changesSaved += dbContext.SaveChanges(); if(changesSaved == 3) { return wedding.WeddingID; } else { return 0; } } } catch(Exception) { return 0; } }
// Post: api/RSVP?RSVPLinkId=3&Count=2&Accepted=false public bool Post(long RSVPLinkId, int Count, bool Accepted) { using (var dbContext = new WeddingSiteBuilderEntities()) { var rsvp = dbContext.RSVPLinks.FirstOrDefault(r => r.RSVPLinkID == RSVPLinkId); if (rsvp == null) return false; var attendee = dbContext.Attendees.FirstOrDefault(a => a.AttendeeID == rsvp.AttendeeID); attendee.NumberofRSVPs = Count; attendee.Attending = Accepted; rsvp.IsAnswered = true; dbContext.SaveChanges(); return true; } }
// GET: api/RSVP/1652c050-6c56-48be-98f1-a899e387078f public AttendeeWithRSVP Get(Guid Id) { using(var dbContext = new WeddingSiteBuilderEntities()) { var rsvp = dbContext.RSVPLinks.FirstOrDefault(r => r.GuidToken == Id); var att = dbContext.Attendees.FirstOrDefault(a => a.AttendeeID == rsvp.AttendeeID); if (rsvp == null || att == null) return null; var attendee = new AttendeeWithRSVP { Attendee = new AttendeeModel(att), RSVP = new RSVPLinkModel(rsvp) }; return attendee; } }
// GET: api/WeddingCouple/5 public bool Get(int id) { int changesSaved = 0; using (var dbContext = new WeddingSiteBuilderEntities()) { var wedding = new Wedding() { WeddingID = id, CoupleStory = "Oh My So, romantic", CreateDate = DateTime.Now, LastUpdated = DateTime.Now }; dbContext.Weddings.Add(wedding); changesSaved = dbContext.SaveChanges(); } return changesSaved > 0; }
// GET: api/Login?userName=dummy&password=pword public long Get(string Email, string Password) { using (var dbContext = new WeddingSiteBuilderEntities()) { var existingLogin = dbContext.People.Where(p => p.Email == Email && p.Password == Password).FirstOrDefault(); if(existingLogin != null) { var attendee = dbContext.Attendees.Where(a => a.PersonID == existingLogin.PersonID).FirstOrDefault(); if(attendee != null) { return attendee.WeddingID; } return 0; } return 0; } }
// POST: api/RSVP public AttendeeWithRSVP Post([FromBody]AttendeeDTO request) { using(var dbContext = new WeddingSiteBuilderEntities()) { var attendee = new Attendee() { Side = request.Side, WeddingID = request.WeddingId, Person = new Person() { FirstName = request.FirstName, LastName = request.LastName, Email = request.Email } }; dbContext.Attendees.Add(attendee); var changesSaved = dbContext.SaveChanges(); var rsvp = new RSVPLink() { AttendeeID = attendee.AttendeeID, GuidToken = new Guid() }; dbContext.RSVPLinks.Add(rsvp); changesSaved += dbContext.SaveChanges(); var attendeeWithRSVP = (AttendeeWithRSVP)attendee; attendeeWithRSVP.RSVP = rsvp; SendRSVPEmail(attendeeWithRSVP, dbContext); return attendeeWithRSVP; } }
// POST: api/Attendee public bool Post([FromBody]AttendeeDTO request) { using(var dbContext = new WeddingSiteBuilderEntities()) { var wedding = dbContext.Weddings.FirstOrDefault(w => w.WeddingID == request.WeddingId); if (wedding != null) { if (request.AttendeeId.HasValue) { var existingAttendee = dbContext.Attendees.FirstOrDefault(a => a.AttendeeID == request.AttendeeId.Value); if (existingAttendee != null) { if (!string.IsNullOrWhiteSpace(request.FirstName)) existingAttendee.Person.FirstName = request.FirstName; if (!string.IsNullOrWhiteSpace(request.LastName)) existingAttendee.Person.LastName = request.LastName; if (!string.IsNullOrWhiteSpace(request.Email)) existingAttendee.Person.Email = request.Email; if (!string.IsNullOrWhiteSpace(request.Relationship)) existingAttendee.Relationship = request.Relationship; if (!string.IsNullOrWhiteSpace(request.Role)) existingAttendee.WeddingRole = request.Role; if (request.Role.ToLower() == "bride" || request.Role.ToLower() == "groom") { existingAttendee.Side = request.Role; } else if (request.Side.ToLower() == "bride" || request.Side.ToLower() == "groom") { existingAttendee.Side = request.Side; } if (!string.IsNullOrWhiteSpace(request.Blurb)) existingAttendee.PartyMemberBlurb = request.Blurb; existingAttendee.PartyMember = request.PartyMember; try { var changesSaved = dbContext.SaveChanges(); return true; } catch (Exception) { return false; } } } else if (!(string.IsNullOrWhiteSpace(request.FirstName) || string.IsNullOrWhiteSpace(request.LastName))) { if (request.Role.ToLower() == "bride" || request.Role.ToLower() == "groom") { request.Side = request.Role; } else if (!(request.Side.ToLower() == "bride" || request.Side.ToLower() == "groom")) { request.Side = "Bride"; } var attendee = new Attendee() { Side = request.Side, WeddingRole = request.Role, Relationship = request.Relationship, PartyMemberBlurb = request.Blurb, PartyMember = request.PartyMember, WeddingID = request.WeddingId, Person = new Person() { FirstName = request.FirstName, LastName = request.LastName, Email = request.Email } }; dbContext.Attendees.Add(attendee); var changesSaved = dbContext.SaveChanges(); return (changesSaved == 2); } } return false; } }
// POST: api/RSVP public AttendeeWithRSVP Post([FromBody]AttendeeDTO request) { using(var dbContext = new WeddingSiteBuilderEntities()) { var attendee = new Attendee() { Side = request.Side, WeddingID = request.WeddingId, Person = new Person() { FirstName = request.FirstName, LastName = request.LastName, Email = request.Email } }; try { dbContext.Attendees.Add(attendee); var changesSaved = dbContext.SaveChanges(); var rsvp = new RSVPLink() { AttendeeID = attendee.AttendeeID, GuidToken = Guid.NewGuid(), RSVPNameBlub = string.Empty, IsAnswered = false }; dbContext.RSVPLinks.Add(rsvp); changesSaved += dbContext.SaveChanges(); var attendeeWithRSVP = new AttendeeWithRSVP { Attendee = new AttendeeModel(attendee), RSVP = new RSVPLinkModel(rsvp) }; SendRSVPEmail(attendee, rsvp, dbContext); return attendeeWithRSVP; } catch(Exception) { return null; } } }
private void SendRSVPEmail(Attendee attendee, RSVPLink rsvp, WeddingSiteBuilderEntities dbContext) { var couple = dbContext.Attendees.Where(a => a.WeddingID == attendee.WeddingID && (a.WeddingRole == "Bride" || a.WeddingRole == "Groom")).ToList(); string subject; if(couple.Count() == 1) { var herOrHis = couple.FirstOrDefault().WeddingRole == "Bride" ? "her" : "his"; subject = "Hey " + attendee.Person.FirstName + ", let {0} know if you'll be coming to " + herOrHis + " wedding"; } else { subject = "Hey " + attendee.Person.FirstName + ", let {0} and {1} know if you'll be coming to their wedding"; } var message = new StringBuilder(); message.AppendLine("RSVP for the wedding by clicking on the link below."); message.AppendLine(string.Format("http://localhost:59998/Views/respondtorsvp.html?token={0}", rsvp.GuidToken)); EmailService.Instance.SendEmail( attendee.Person.Email, couple.Count() == 1 ? string.Format(subject, couple.FirstOrDefault().Person.FirstName) : string.Format(subject, couple.FirstOrDefault().Person.FirstName, couple.LastOrDefault().Person.FirstName), message.ToString()); }
// PUT: api/RSVP/5 public bool Put(int id) { try { using (var dbContext = new WeddingSiteBuilderEntities()) { var rsvp = dbContext.RSVPLinks.FirstOrDefault(r => r.RSVPLinkID == id); var att = dbContext.Attendees.FirstOrDefault(a => a.AttendeeID == rsvp.AttendeeID); if (rsvp == null || att == null) return false; SendRSVPEmail(att, rsvp, dbContext); return true; } } catch (Exception) { return false; } }