public ActionResult Edit(PrayerRequestViewModel viewModel)
        {
            // Sanitize data input with AntiXssEncoder
            viewModel = _service.SanitizePrayerRequestViewModel(viewModel);

            if (ModelState.IsValid)
            {
                var contactRecord = unitOfWork.ContactRecordRepository.FindById(viewModel.Id);

                // Only the user who made the contact can edit it
                var user = unitOfWork.AppUserRepository.FindUserByEmail(User.Identity.Name);
                if (user.Id != contactRecord.AppUserId)
                {
                    return(View("EditDenied"));
                }

                // update properties
                contactRecord.ContactDate = viewModel.ContactDate;
                contactRecord.Private     = viewModel.Private;
                contactRecord.Subject     = viewModel.Subject;
                contactRecord.Comments    = viewModel.Comments;

                unitOfWork.ContactRecordRepository.Update(contactRecord);

                return(Redirect(viewModel.ReturnUrl));
            }

            return(View(viewModel));
        }
        public ActionResult DeleteConfirmed(PrayerRequestViewModel viewModel)
        {
            var prayerRequest = unitOfWork.ContactRecordRepository.FindById(viewModel.Id);

            unitOfWork.ContactRecordRepository.Delete(prayerRequest);

            return(Redirect(viewModel.ReturnUrl));
        }
예제 #3
0
 public PrayerRequestViewModel SanitizePrayerRequestViewModel(PrayerRequestViewModel viewModel)
 {
     viewModel.Comments          = AntiXssEncoder.HtmlEncode(viewModel.Comments, false);
     viewModel.PassAlongComments = AntiXssEncoder.HtmlEncode(viewModel.PassAlongComments, false);
     viewModel.Subject           = AntiXssEncoder.HtmlEncode(viewModel.Subject, false);
     viewModel.PassAlongComments = AntiXssEncoder.HtmlEncode(viewModel.PassAlongFollowUpComments, false);
     return(viewModel);
 }
        public IActionResult PrayerRequest()
        {
            var context = HttpContext;
            var model   = new PrayerRequestViewModel(context)
            {
                ReCaptchaSiteKey = "6LdO2OQUAAAAADb3Nim540MD-o81QEZ5UxTGkgDe"
            };

            model.Title         = "Submit a Prayer Request";
            model.PrayerRequest = new PrayerRequest();
            return(View(model));
        }
예제 #5
0
 public PrayerRequests(PrayerRequestViewModel vm)
 {
     BindingContext = vm;
     ToolbarItems.Add(new ToolbarItem("New", null, async() => await NewPrayerRequest()));
     Content = new StackLayout
     {
         Children =
         {
             new Label {
                 Text = "Prayer Requests"
             },
             GetRepeaterView()
         }
     };
     ViewModel.GetPrayerRequests.Execute(null);
 }
        // GET: PrayerRequestViewModels/Create
        public ActionResult Create(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }

            var member    = unitOfWork.MemberRepository.FindMemberById(id);
            var viewModel = new PrayerRequestViewModel
            {
                CCGMemberId    = (int)id,
                ContactDate    = DateTime.Now,
                MemberFullName = $"{member.FirstName} {member.LastName}"
            };

            return(View(viewModel));
        }
        public ActionResult Create(PrayerRequestViewModel prayerRequestViewModel)
        {
            if (!ModelState.IsValid)
            {
                return(View(prayerRequestViewModel));
            }

            // Ensures records displayed even if subject/comments are empty.
            // The search query searches for "" if none is given by user.
            if (prayerRequestViewModel.Subject == null)
            {
                prayerRequestViewModel.Subject = "";
            }
            if (prayerRequestViewModel.Comments == null)
            {
                prayerRequestViewModel.Comments = "";
            }

            // Sanitize data input with AntiXssEncoder
            prayerRequestViewModel = _service.SanitizePrayerRequestViewModel(prayerRequestViewModel);

            var contactRecord = Mapper.Map <ContactRecord>(prayerRequestViewModel);

            // Used to find contact type object
            string contacTypePR = "Prayer Request";

            // Get contact type object that matches 'Prayer Request'
            var contactType = unitOfWork.ContactTypeRepository
                              .Find(t => t.Name.Equals(contacTypePR, StringComparison.CurrentCultureIgnoreCase));

            contactRecord.ContactTypeId = contactType.Id;
            contactRecord.Timestamp     = DateTime.Now;

            // Assign user id to contact record property
            var user = unitOfWork.AppUserRepository.FindUserByEmail(User.Identity.Name);

            contactRecord.AppUserId = user.Id;

            unitOfWork.ContactRecordRepository.Add(contactRecord);

            // Send pastor/leadership a notification about prayer request
            NotifyOfPrayerRequest(contactRecord.DeaconFullName);

            return(Redirect(prayerRequestViewModel.ReturnUrl));
        }
        public async Task <IActionResult> PrayerRequest(PrayerRequestViewModel requestModel)
        {
            requestModel.Title = "Submit a Prayer Request";
            SiteVerifyResult reCaptchaVerifyResult = null;

            if (requestModel == null)
            {
                ModelState.AddModelError("", "requestModel was Null");
            }
            else if (requestModel.ReCaptchaResponse == null)
            {
                ModelState.AddModelError("", "requestModel.ReCaptchaResponse was Null");
            }
            else
            {
                try
                {
                    reCaptchaVerifyResult = await _ReCaptchaService.VerifyReCaptchaAsync(requestModel.ReCaptchaResponse);
                }
                catch (Exception)
                {
                }
            }


            if (reCaptchaVerifyResult != null)
            {
                if (reCaptchaVerifyResult.ResultStatus != ReCaptcha.enums.ResultStatus.Ok || reCaptchaVerifyResult.IsVerified == false)
                {
                    var resultCd = reCaptchaVerifyResult.ResultStatus switch
                    {
                        ResultStatus.Ok => "Ok",
                        ResultStatus.BadRequest => "Bad Request",
                        ResultStatus.Conflict => "Conflict",
                        ResultStatus.Error => "Error",
                        ResultStatus.NotFound => "Not Found",
                        ResultStatus.Unauthorized => "Unauthorized",
                        _ => "Unknown"
                    };

                    ModelState.AddModelError(string.Empty, resultCd + " " + reCaptchaVerifyResult.ResultStatusMessages[0].Message);
                }
            }

            if (!ModelState.IsValid)
            {
                return(View(requestModel));
            }

            await _RequestsService.InsertAPrayerRequestAsync(requestModel.PrayerRequest);

            var msg = "Thank you for your prayer request.  Your request will be reviewed by a knight and included in our group prayer at our council meeting. ";

            msg += "If your request was marked urgent, your request may be forwarded to brother knights to include with their individual prayer intentions.";

            var postSavePopup = new PopupModel()
            {
                Title   = "Prayer Request Submitted",
                Body    = msg,
                Buttons = new PopupButtonModel[]
                {
                    new PopupButtonModel(Core.Enums.ButtonType.Close)
                }
            };

            var _popupJson = JsonSerializer.Serialize(postSavePopup);

            return(RedirectToAction("Index", new RouteValueDictionary(
                                        new { controller = "Home", action = "Index", popupJson = _popupJson })));
        }
    }