public ActionResult EditCPR(int id)
        {
            var query = (from mcpr in _context.MemberCpr
                         where mcpr.MemberCprid == id
                         select mcpr).FirstOrDefault();

            //Explicit loading because EF Core isn't lazy
            _context.MemberCpr.Include(x => x.Member).Load();
            _context.MemberCpr.Include(x => x.Cpr).Load();

            //converting from data models to the view model (dto), the conversions happen in the view model / dto's constructor
            Models.Training.CPRSummaryItem model = new Models.Training.CPRSummaryItem(query);

            return(View(model));
        }
        public ActionResult DeleteCPR(Models.Training.CPRSummaryItem viewModel)
        {
            try
            {
                var del = new Models.DB.MemberCpr {
                    MemberCprid = viewModel.ID
                };
                _context.MemberCpr.Attach(del);
                _context.Remove(del);
                _context.SaveChanges();

                return(RedirectToAction(nameof(CPRList)));
            }
            catch (Exception exc)
            {
                throw exc;
            }
        }
        public ActionResult EditCPR(Models.Training.CPRSummaryItem viewModel)
        {
            // only updating the issued and expiration

            try
            {
                var query = (from mcpr in _context.MemberCpr
                             where mcpr.MemberCprid == viewModel.ID
                             select mcpr).FirstOrDefault();

                query.Issued     = viewModel.Issued;
                query.Expiration = viewModel.Expiration;

                _context.SaveChanges();

                return(RedirectToAction(nameof(CPRList)));
            }
            catch (Exception exc)
            {
                throw exc;
            }
        }