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()); } }