public ActionResult PledgePrayers(String loginId, int prayerId)
        {
            try
            {
                //Instantiate variables
                IContentService contentService  = Services.ContentService;
                IContent        icPrayerRequest = contentService.GetById(prayerId);
                var             CmPrayerList    = new ContentModels.PrayerRequest(Umbraco.TypedContent(prayerId));


                //Update prayer request
                icPrayerRequest.SetValue(Common.NodeProperties.totalPrayersOffered, CmPrayerList.TotalPrayersOffered + 1);


                //Determine and update current percentage and base date
                int      currentPercentage   = CmPrayerList.CurrentPercentage;
                DateTime baseCalculationDate = CmPrayerList.BaseCalculationDate;
                int      daysSinceBaseDate   = (DateTime.Now - baseCalculationDate).Days;

                if (daysSinceBaseDate > currentPercentage)
                {
                    //Set new values for prayer request
                    currentPercentage   = 2; //[given an extra day]
                    baseCalculationDate = DateTime.Today;
                }
                else
                {
                    //Recalculate current percentage
                    currentPercentage = (currentPercentage - daysSinceBaseDate) + 1;
                }
                icPrayerRequest.SetValue(Common.NodeProperties.currentPercentage, currentPercentage);
                icPrayerRequest.SetValue(Common.NodeProperties.baseCalculationDate, baseCalculationDate);


                //Save updates to prayer
                var result = contentService.SaveAndPublishWithStatus(icPrayerRequest);
                if (!result.Success)
                {
                    //Save error message to umbraco
                    StringBuilder sb = new StringBuilder();
                    sb.AppendLine(@"Controllers/PrayerController.cs : PledgePrayers()");
                    sb.AppendLine("loginId: " + loginId);
                    sb.AppendLine("prayerId: " + prayerId);
                    sb.AppendLine("result: " + Newtonsoft.Json.JsonConvert.SerializeObject(result));
                    Exception ex = new Exception();
                    Common.SaveErrorMessage(ex, sb, typeof(PrayerController));

                    //Return with error
                    ModelState.AddModelError(string.Empty, "An error occured while submitting your pledge.");
                    return(CurrentUmbracoPage());
                }

                //Update member requests
                IMember member = Services.MemberService.GetByEmail(loginId);
                if (member == null)
                {
                    //Save error message to umbraco
                    StringBuilder sb = new StringBuilder();
                    sb.AppendLine(@"Controllers/PrayerController.cs : PledgePrayers()");
                    sb.AppendLine(@"Cannot add prayer pledge to member.");
                    sb.AppendLine("loginId: " + loginId);
                    sb.AppendLine("prayerId: " + prayerId);
                    Exception ex = new Exception();
                    Common.SaveErrorMessage(ex, sb, typeof(PrayerController));
                }
                else
                {
                    //Instantiate list
                    List <Models._prayerRequest> lstPrayerRequests = new List <Models._prayerRequest>();

                    //Populate list with any existing data
                    if (member.HasProperty(NodeProperties.prayersOfferedFor) && member.GetValue(NodeProperties.prayersOfferedFor) != null)
                    {
                        lstPrayerRequests = JsonConvert.DeserializeObject <List <Models._prayerRequest> >(member.GetValue(NodeProperties.prayersOfferedFor).ToString());
                    }

                    //Add latest prayer request to
                    Models._prayerRequest newRequest = new Models._prayerRequest();
                    newRequest.prayer = prayerId.ToString();
                    newRequest.date   = DateTime.Now.ToString("yyyy-MM-dd");
                    lstPrayerRequests.Add(newRequest);

                    //Add data to member and save
                    member.SetValue(NodeProperties.prayersOfferedFor, JsonConvert.SerializeObject(lstPrayerRequests));
                    Services.MemberService.Save(member);
                }

                //Return to page
                TempData["PrayerPledgedSuccessfully"] = true;
                return(RedirectToCurrentUmbracoPage());
            }
            catch (Exception ex)
            {
                //Save error message to umbraco
                StringBuilder sb = new StringBuilder();
                sb.AppendLine(@"PrayerController.cs : PledgePrayers()");
                Common.SaveErrorMessage(ex, sb, typeof(PrayerController));

                ModelState.AddModelError(string.Empty, "An error occured while submitting your prayer pledge.");
                return(CurrentUmbracoPage());
            }
        }
        public ActionResult SubmitNewPrayerRequest(PrayerRequestModel model)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    //Instantiate variables
                    IContentService contentService = Services.ContentService;
                    IContent        content        = contentService.CreateContent(name: model.PrayerTitle, parentId: (int)Common.siteNode.ThePrayerCorner, contentTypeAlias: docType.PrayerRequest);

                    content.SetValue(PrayerRequest.GetModelPropertyType(x => x.PrayerTitle).PropertyTypeAlias, model.PrayerTitle);
                    content.SetValue(PrayerRequest.GetModelPropertyType(x => x.Prayer).PropertyTypeAlias, model.Prayer);
                    content.SetValue(PrayerRequest.GetModelPropertyType(x => x.PrayerRequestMember).PropertyTypeAlias, model.UserId);
                    content.SetValue(PrayerRequest.GetModelPropertyType(x => x.RequestDate).PropertyTypeAlias, DateTime.Now);
                    content.SetValue(PrayerRequest.GetModelPropertyType(x => x.BaseCalculationDate).PropertyTypeAlias, DateTime.Now);

                    content.SetValue(PrayerRequest.GetModelPropertyType(x => x.TotalPrayersOffered).PropertyTypeAlias, 0);
                    content.SetValue(PrayerRequest.GetModelPropertyType(x => x.CurrentPercentage).PropertyTypeAlias, 0);

                    var result = contentService.SaveAndPublishWithStatus(content);
                    //contentService.RePublishAll(model.UserId);


                    if (result.Success)
                    {
                        //Add Prayer Request to member's records
                        IMember member = Services.MemberService.GetById(model.UserId);
                        if (member == null)
                        {
                            //Save error message to umbraco
                            StringBuilder sb = new StringBuilder();
                            sb.AppendLine(@"Controllers/PrayerController.cs : SubmitNewPrayerRequest()");
                            sb.AppendLine(@"Member Id returned nothing.  Cannot add prayer request to member.");
                            sb.AppendLine("model:" + Newtonsoft.Json.JsonConvert.SerializeObject(model));
                            Exception ex = new Exception();
                            Common.SaveErrorMessage(ex, sb, typeof(PrayerController));
                        }
                        else
                        {
                            //Instantiate list
                            List <Models._prayerRequest> lstPrayerRequests = new List <Models._prayerRequest>();

                            //Populate list with any existing data
                            if (member.HasProperty(NodeProperties.prayerRequests) && member.GetValue(NodeProperties.prayerRequests) != null)
                            {
                                lstPrayerRequests = JsonConvert.DeserializeObject <List <Models._prayerRequest> >(member.GetValue(NodeProperties.prayerRequests).ToString());
                            }

                            //Add latest prayer request to
                            Models._prayerRequest newRequest = new Models._prayerRequest();
                            newRequest.prayer = content.Id.ToString();
                            newRequest.date   = DateTime.Now.ToString("yyyy-MM-dd");
                            lstPrayerRequests.Add(newRequest);

                            //Add data to member and save
                            member.SetValue(NodeProperties.prayerRequests, JsonConvert.SerializeObject(lstPrayerRequests));
                            Services.MemberService.Save(member);
                        }

                        //Return to page
                        TempData["NewPrayerCreatedSuccessfully"] = true;
                        return(RedirectToUmbracoPage((int)(Models.Common.siteNode.PrayerRequests)));
                    }
                    else
                    {
                        //Save error message to umbraco
                        StringBuilder sb = new StringBuilder();
                        sb.AppendLine(@"Controllers/PrayerController.cs : SubmitNewPrayerRequest()");
                        sb.AppendLine("model:" + Newtonsoft.Json.JsonConvert.SerializeObject(model));
                        sb.AppendLine("result:" + Newtonsoft.Json.JsonConvert.SerializeObject(result));
                        Exception ex = new Exception();
                        Common.SaveErrorMessage(ex, sb, typeof(PrayerController));

                        //Return with error
                        ModelState.AddModelError(string.Empty, "An error occured while creating your prayer request.");
                        return(CurrentUmbracoPage());
                    }
                }
                else
                {
                    return(CurrentUmbracoPage());
                }
            }
            catch (Exception ex)
            {
                //Save error message to umbraco
                StringBuilder sb = new StringBuilder();
                sb.AppendLine(@"PrayerController.cs : SubmitNewPrayerRequest()");
                sb.AppendLine("model:" + Newtonsoft.Json.JsonConvert.SerializeObject(model));
                Common.SaveErrorMessage(ex, sb, typeof(PrayerController));

                ModelState.AddModelError(string.Empty, "An error occured while submitting your prayer request.");
                return(CurrentUmbracoPage());
            }
        }