public ActionResult Audit(string auditType, int id, int?page)
        {
            if (page == null || page < 1)
            {
                page = 1;
            }

            AuditEventViewModel model = new AuditEventViewModel();

            string stringID     = id.ToString();
            string AuditName    = string.Format("{0}", auditType);
            var    AuditMatches = db.AuditDescriptions.Where(a => a.AuditDescription.StartsWith(AuditName));
            IQueryable <AuditEvent> auditEvents = null;

            if (AuditName == "Warrant" || AuditName == "ChildAbduction")
            {
                auditEvents = db.AuditEvents.Where(s => s.RecordAddedTo == id).Union(db.AuditEvents.Where(s => s.auditEventDescription.AuditDescription.StartsWith(AuditName) && s.RecordChanged == stringID));
            }
            else
            {
                auditEvents = db.AuditEvents.Where(s => s.RecordChanged == stringID && AuditMatches.Select(d => d.idAuditEventDescription).Contains(s.idAuditEventDescription));
            }
            model.auditType   = auditType;
            model.itemID      = stringID;
            model.AuditEvents = auditEvents.OrderByDescending(s => s.EventDate).ToPagedList(page ?? 1, 20);
            return(View(model));
        }
        public async Task <IActionResult> Post([FromBody] AuditEventViewModel auditEvent)
        {
            try
            {
                if (!ModelState.IsValid)
                {
                    NotifyModelStateErrors();
                    return(Response(auditEvent));
                }

                await _appService.Add(auditEvent);

                return(Response(auditEvent));
            }
            catch (Exception)
            {
                // TODO: log error
                return(BadRequest(new
                {
                    success = false,
                    errors = new string[] { "Audit Event not inserted" }
                }));
            }
        }
 public async Task Add(AuditEventViewModel auditEvent)
 {
     var registerCommand = _mapper.Map <RegisterAuditEventCommand>(auditEvent);
     await _bus.SendCommand(registerCommand);
 }