示例#1
0
        public string ApproveGuestBookEntry(GuestBookEntry req)
        {
            try
            {
                if (Request.IsAuthenticated)
                {
                    using (WeddingEntities context = new WeddingEntities())
                    {
                        var entryToApprove = context.GuestBookEntries.Where(q => q.Id == req.Id).ToList();
                        entryToApprove[0].Approved   = true;
                        entryToApprove[0].ApprovedOn = DateTime.Now.ToUniversalTime();
                        context.GuestBookEntries.AddOrUpdate(entryToApprove[0]);
                        context.SaveChanges();

                        return("true");
                    }
                }
                else
                {
                    throw new Exception();
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
示例#2
0
        public string PostEmailLog(EmailLogReq req)
        {
            try
            {
                if (req.RsvpConfimationEmail || Request.IsAuthenticated)
                {
                    using (WeddingEntities context = new WeddingEntities())
                    {
                        var logReq = new EmailLog
                        {
                            EmailId       = req.EmailId,
                            GuestDetailId = req.GuestDetailId,
                            SentDate      = DateTime.UtcNow.ToUniversalTime(),
                            SentBy        = createdBy
                        };

                        context.EmailLogs.AddOrUpdate(logReq);
                        context.SaveChanges();
                        return("true");
                    }
                }
                else
                {
                    throw new Exception();
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
示例#3
0
 public string GetWeddingInitData()
 {
     try
     {
         using (WeddingEntities context = new WeddingEntities())
         {
             var descData         = context.WeddingDescriptions.Where(q => q.Id == 1).FirstOrDefault();
             var emailData        = context.Emails.Where(q => q.Id == 11 || q.Id == 12).ToList();
             var guestBookEntries = context.GuestBookEntries.Where(q => q.Approved == true).ToList();
             var ret = new WeddingInitData {
                 WeddingDescriptionData = descData, EmailData = emailData, GuestBookEntries = guestBookEntries
             };
             //return JsonConvert.SerializeObject(ret, Formatting.None);
             return(JsonConvert.SerializeObject(ret, Formatting.None,
                                                new JsonSerializerSettings()
             {
                 ReferenceLoopHandling = ReferenceLoopHandling.Ignore
             }));
         }
     }
     catch (Exception ex)
     {
         throw ex;
     }
 }
示例#4
0
        public string GetGuests()
        {
            try
            {
                if (Request.IsAuthenticated)
                {
                    using (WeddingEntities context = new WeddingEntities())
                    {
                        var guestHdr = context.GuestHeaders.Where(q => q.Active == true).ToList();
                        if (guestHdr.Count() > 0)
                        {
                            foreach (var hdr in guestHdr)
                            {
                                var activeGuests = hdr.GuestDetails.Where(q => q.Active == true).ToList();
                                hdr.GuestDetails = activeGuests;
                            }
                        }

                        return(JsonConvert.SerializeObject(guestHdr, Formatting.None,
                                                           new JsonSerializerSettings()
                        {
                            ReferenceLoopHandling = ReferenceLoopHandling.Ignore
                        }));
                    }
                }
                else
                {
                    throw new Exception();
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
示例#5
0
        public string RSVP(RsvpRequest req)
        {
            var ret = false;

            try
            {
                using (WeddingEntities context = new WeddingEntities())
                {
                    var guest = context.GuestHeaders.Where(q => q.GuestHeaderId == req.GuestHeaderId).FirstOrDefault();

                    var sendEmailReq = new List <SendEmail>();
                    var emailId      = req.Attending == true ? 11 : 12;
                    var email        = context.Emails.Where(q => q.Id == emailId).FirstOrDefault();

                    //set up email data
                    foreach (var gd in guest.GuestDetails)
                    {
                        //only add guests with email addresses to list
                        if (gd.Email != null && gd.Email != "")
                        {
                            sendEmailReq.Add(new SendEmail
                            {
                                EmailId              = email.Id,
                                GuestDetailId        = gd.GuestDetailId,
                                IsTestEmail          = false,
                                EmailAddress         = gd.Email,
                                EmailSubject         = email.Subject,
                                EmailBody            = req.EmailBody,
                                RsvpConfimationEmail = true
                            });
                        }
                    }

                    guest.GuestCount = req.GuestCount;
                    guest.Attending  = req.Attending;
                    guest.CheckedIn  = true;
                    guest.UpdatedOn  = DateTime.UtcNow.ToUniversalTime();;
                    context.GuestHeaders.AddOrUpdate(guest);
                    context.SaveChanges();
                    ret = true;

                    AdminController ac = new AdminController();

                    foreach (var emailReq in sendEmailReq)
                    {
                        ac.SendEmail(emailReq);
                    }
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }

            return(JsonConvert.SerializeObject(ret));
        }
示例#6
0
        public string PostGuest(GuestHeader req)
        {
            try
            {
                if (Request.IsAuthenticated)
                {
                    using (WeddingEntities context = new WeddingEntities())
                    {
                        if (req.GuestHeaderId != 0)
                        {
                            //update
                            req.UpdatedBy = createdBy;
                            req.UpdatedOn = DateTime.Now.ToUniversalTime();

                            foreach (var guest in req.GuestDetails)
                            {
                                guest.UpdatedBy = createdBy;
                                guest.UpdatedOn = DateTime.Now.ToUniversalTime();
                                context.GuestDetails.AddOrUpdate(guest);
                            }
                        }
                        else
                        {
                            //insert
                            req.CreatedBy = createdBy;
                            req.UpdatedBy = createdBy;
                            req.CreatedOn = DateTime.Now.ToUniversalTime();
                            req.UpdatedOn = DateTime.Now.ToUniversalTime();

                            foreach (var guest in req.GuestDetails)
                            {
                                guest.CreatedBy = createdBy;
                                guest.UpdatedBy = createdBy;
                                guest.CreatedOn = DateTime.Now.ToUniversalTime();
                                guest.UpdatedOn = DateTime.Now.ToUniversalTime();
                            }
                        }

                        context.GuestHeaders.AddOrUpdate(req);
                        context.SaveChanges();
                        return("true");
                    }
                }
                else
                {
                    throw new Exception();
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
示例#7
0
 private void LogConfirmationAttempt(ConfirmationCodeLog req)
 {
     try
     {
         using (WeddingEntities context = new WeddingEntities())
         {
             req.AttemptDateTime = DateTime.UtcNow.ToUniversalTime();
             context.ConfirmationCodeLogs.AddOrUpdate(req);
             context.SaveChanges();
         }
     }
     catch (Exception ex)
     {
         throw ex;
     }
 }
示例#8
0
        public string AttachGuestToHeader(GuestHeader req)
        {
            try
            {
                if (Request.IsAuthenticated)
                {
                    using (WeddingEntities context = new WeddingEntities())
                    {
                        //delete Guest Header / Detail records
                        req.Active = false;

                        foreach (var guest in req.GuestDetails)
                        {
                            if (guest.GuestHeaderId != 0 && guest.GuestDetailId != 0)
                            {
                                guest.Active = false;
                                this.DeleteGuest(guest);
                            }

                            //get data ready for post
                            guest.GuestHeaderId = 0;
                            guest.GuestDetailId = 0;
                            guest.Active        = true;
                        }

                        //clear Guest Header / Detail Id's and set data to active to post
                        req.Active        = true;
                        req.GuestHeaderId = 0;
                        req.GuestCount    = req.GuestDetails.Count;

                        this.PostGuest(req);
                    }
                }
                else
                {
                    throw new Exception();
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }

            return("true");
        }
示例#9
0
        public ActionResult ApproveGuestBookEntryFromEmail(GuestBookEntry req)
        {
            try
            {
                using (WeddingEntities context = new WeddingEntities())
                {
                    var entryToApprove = context.GuestBookEntries.Where(q => q.Id == req.Id).ToList();
                    entryToApprove[0].Approved   = true;
                    entryToApprove[0].ApprovedOn = DateTime.Now.ToUniversalTime();
                    context.GuestBookEntries.AddOrUpdate(entryToApprove[0]);
                    context.SaveChanges();

                    return(View("GuestBookApprovalResult"));
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
示例#10
0
        public string PostGuestBookEntry(GuestBookEntry req)
        {
            try
            {
                using (WeddingEntities context = new WeddingEntities())
                {
                    req.Approved  = false;
                    req.CreatedOn = DateTime.Now.ToUniversalTime();
                    context.GuestBookEntries.AddOrUpdate(req);
                    context.SaveChanges();

                    AdminController ac = new AdminController();
                    ac.SendGuestBookApproveEmail(req);
                    return("true");
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
示例#11
0
 public string GetAddressDataByZip(ZipCodeSearchReq req)
 {
     try
     {
         if (Request.IsAuthenticated)
         {
             using (WeddingEntities context = new WeddingEntities())
             {
                 return(JsonConvert.SerializeObject(context.UsaZipCodes.Where(q => q.Zip == req.ZipCode).ToList(), Formatting.None));
             }
         }
         else
         {
             throw new Exception();
         }
     }
     catch (Exception ex)
     {
         throw ex;
     }
 }
示例#12
0
 public string GetUsStates()
 {
     try
     {
         if (Request.IsAuthenticated)
         {
             using (WeddingEntities context = new WeddingEntities())
             {
                 return(JsonConvert.SerializeObject(context.UsaStates.ToList(), Formatting.None));
             }
         }
         else
         {
             throw new Exception();
         }
     }
     catch (Exception ex)
     {
         throw ex;
     }
 }
示例#13
0
 public string GetWeddingDescriptionData()
 {
     try
     {
         if (Request.IsAuthenticated)
         {
             using (WeddingEntities context = new WeddingEntities())
             {
                 var descData = context.WeddingDescriptions.Where(q => q.Id == 1).ToList();
                 return(JsonConvert.SerializeObject(descData, Formatting.None));
             }
         }
         else
         {
             throw new Exception();
         }
     }
     catch (Exception ex)
     {
         throw ex;
     }
 }
示例#14
0
 public string PostEmailData(Email req)
 {
     try
     {
         if (Request.IsAuthenticated)
         {
             using (WeddingEntities context = new WeddingEntities())
             {
                 context.Emails.AddOrUpdate(req);
                 context.SaveChanges();
                 return("true");
             }
         }
         else
         {
             throw new Exception();
         }
     }
     catch (Exception ex)
     {
         throw ex;
     }
 }
示例#15
0
        public string ValidateConfirmationCode(ConfirmCode req)
        {
            try
            {
                using (WeddingEntities context = new WeddingEntities())
                {
                    var guest = context.GuestHeaders.Where(q => q.ConfirmationCode == req.ConfirmationCode && q.Active == true).FirstOrDefault();

                    this.LogConfirmationAttempt(new ConfirmationCodeLog {
                        ConfirmationCode = req.ConfirmationCode
                    });
                    return(JsonConvert.SerializeObject(guest, Formatting.None,
                                                       new JsonSerializerSettings()
                    {
                        ReferenceLoopHandling = ReferenceLoopHandling.Ignore
                    }));
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
示例#16
0
 public string PostWeddingDescriptionData(WeddingDescription req)
 {
     try
     {
         if (Request.IsAuthenticated)
         {
             using (WeddingEntities context = new WeddingEntities())
             {
                 req.Id = 1;
                 context.WeddingDescriptions.AddOrUpdate(req);
                 context.SaveChanges();
                 return("true");
             }
         }
         else
         {
             throw new Exception();
         }
     }
     catch (Exception ex)
     {
         throw ex;
     }
 }
示例#17
0
 public string DeleteGuestBookEntry(GuestBookEntry req)
 {
     try
     {
         if (Request.IsAuthenticated)
         {
             using (WeddingEntities context = new WeddingEntities())
             {
                 context.GuestBookEntries.Attach(req);
                 context.GuestBookEntries.Remove(req);
                 context.SaveChanges();
                 return("true");
             }
         }
         else
         {
             throw new Exception();
         }
     }
     catch (Exception ex)
     {
         throw ex;
     }
 }
示例#18
0
        public string DeleteGuest(GuestDetail req)
        {
            try
            {
                if (Request.IsAuthenticated)
                {
                    using (WeddingEntities context = new WeddingEntities())
                    {
                        //check if the guest detail record is the only record related to the header
                        var guestHdr     = context.GuestHeaders.Where(q => q.GuestHeaderId == req.GuestHeaderId).ToList();
                        var guestDetails = guestHdr[0].GuestDetails.Where(q => q.Active == true).ToList();

                        if (guestDetails.Count > 0)
                        {
                            //only one guest attached to hdr, set hdr to inactive
                            if (guestDetails.Count == 1)
                            {
                                guestHdr[0].Active = false;
                            }
                            else
                            {
                                int count = 0;
                                foreach (var guest in guestDetails)
                                {
                                    if (guest.Active && guest.GuestDetailId != req.GuestDetailId)
                                    {
                                        count += 1;
                                    }
                                }

                                //guestHdr[0].GuestDetails = guestDetails;

                                if (count == 0)
                                {
                                    guestHdr[0].Active    = false;
                                    guestHdr[0].UpdatedBy = createdBy;
                                    guestHdr[0].UpdatedOn = DateTime.Now.ToUniversalTime();
                                    context.GuestHeaders.AddOrUpdate(guestHdr[0]);
                                }
                            }
                        }

                        req.Active    = false;
                        req.UpdatedBy = createdBy;
                        req.UpdatedOn = DateTime.Now.ToUniversalTime();

                        context.GuestDetails.AddOrUpdate(req);
                        context.SaveChanges();
                        return("true");
                    }
                }
                else
                {
                    throw new Exception();
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
示例#19
0
        public string GetEmailLog(EmailLog req)
        {
            try
            {
                if (Request.IsAuthenticated)
                {
                    using (WeddingEntities context = new WeddingEntities())
                    {
                        List <EmailLog>    emailLogData;
                        List <GuestDetail> guestDetailData;

                        if (req.GuestDetailId == 0)
                        {
                            //entire email log
                            emailLogData    = context.EmailLogs.ToList();
                            guestDetailData = context.GuestDetails.Where(q => q.Active == true).ToList();
                        }
                        else
                        {
                            //email log for specific guest
                            emailLogData    = context.EmailLogs.Where(q => q.GuestDetailId == req.GuestDetailId).ToList();
                            guestDetailData = context.GuestDetails.Where(q => q.Active == true && q.GuestDetailId == req.GuestDetailId).ToList();
                        }

                        var ret = new List <EmailLogData>();

                        if (emailLogData.Count() > 0)
                        {
                            var emailData = context.Emails.ToList();

                            foreach (var log in emailLogData)
                            {
                                log.SentDate = log.SentDate.ToLocalTime();

                                var email       = emailData.Where(q => q.Id == log.EmailId).FirstOrDefault();
                                var guestDetail = guestDetailData.Where(q => q.GuestDetailId == log.GuestDetailId).ToList();

                                if (guestDetail.Count > 0)
                                {
                                    ret.Add(new EmailLogData
                                    {
                                        GuestName         = guestDetail[0].FirstName + " " + guestDetail[0].LastName,
                                        GuestEmailAddress = guestDetail[0].Email,
                                        EmailDescription  = email.Description,
                                        EmailSubject      = email.Subject,
                                        EmailBody         = email.Body,
                                        SentDate          = log.SentDate,
                                        GuestDetailId     = log.GuestDetailId,
                                        EmailId           = log.EmailId,
                                        Id = log.Id
                                    });
                                }
                            }
                        }

                        return(JsonConvert.SerializeObject(ret, Formatting.None));
                    }
                }
                else
                {
                    throw new Exception();
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }