public ActionResult Edit(RespondentCreationModel model)
 {
     if (ModelState.IsValid)
     {
         TipstaffRecord tr = db.TipstaffRecord.Find(model.tipstaffRecordID);
         if (tr is Warrant)
         {
             Warrant w = (Warrant)tr;
             w.RespondentName  = model.respondent.PoliceDisplayName;
             db.Entry(w).State = EntityState.Modified;
         }
         db.Entry(model.respondent).State = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("Details", genericFunctions.TypeOfTipstaffRecord(model.respondent.tipstaffRecordID), new { id = model.respondent.tipstaffRecordID }));
     }
     return(View(model));
 }
        //
        // GET: /Respondent/Create

        public ActionResult Create(int id, bool initial = false)
        {
            RespondentCreationModel model = new RespondentCreationModel(id);

            if (model.tipstaffRecord.caseStatus.sequence > 3)
            {
                TempData["UID"] = model.tipstaffRecord.UniqueRecordID;
                return(RedirectToAction("ClosedFile", "Error"));
            }
            if (genericFunctions.TypeOfTipstaffRecord(model.tipstaffRecord) == "Warrant" && model.tipstaffRecord.Respondents.Count() == 1)
            {
                //redirect to error
                ErrorModel errModel = new ErrorModel(2);
                errModel.ErrorMessage  = string.Format("Record {0} already has a contemnor linked, please check your records", model.tipstaffRecord.UniqueRecordID);
                TempData["ErrorModel"] = errModel;
                return(RedirectToAction("IndexByModel", "Error", errModel ?? null));
            }
            model.initial = initial;
            return(View(model));
        }
        //
        // GET: /Respondent/Edit/5

        public ActionResult Edit(int id)
        {
            RespondentCreationModel model = new RespondentCreationModel();

            model.respondent       = db.Respondents.Find(id);
            model.tipstaffRecordID = model.respondent.tipstaffRecordID;
            if (model.respondent == null)
            {
                ErrorModel errModel = new ErrorModel();
                errModel.ErrorMessage  = "No respondent with that ID can be found";
                TempData["ErrorModel"] = errModel;
                return(RedirectToAction("IndexByModel", "Error", errModel ?? null));
            }
            if (model.respondent.tipstaffRecord.caseStatus.sequence > 3)
            {
                TempData["UID"] = model.respondent.tipstaffRecord.UniqueRecordID;
                return(RedirectToAction("ClosedFile", "Error"));
            }
            return(View(model));
        }
        public ActionResult Create(RespondentCreationModel model, string submitButton)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }
            try
            {
                TipstaffRecord tr = db.TipstaffRecord.Find(model.tipstaffRecordID);
                //if (genericFunctions.TypeOfTipstaffRecord(tr) == "Warrant")
                if (tr is Warrant)
                {
                    Warrant w = (Warrant)tr;
                    w.RespondentName = model.respondent.PoliceDisplayName;
                    w.Respondents.Add(model.respondent);
                    db.Entry(w).State = EntityState.Modified;
                    db.SaveChanges();
                }
                else
                {
                    tr.Respondents.Add(model.respondent);
                }
                db.SaveChanges();
                if (Request.IsAjaxRequest())
                {
                    string url = string.Format("window.location='{0}';", Url.Action("Details", genericFunctions.TypeOfTipstaffRecord(tr), new { id = model.tipstaffRecordID }));
                    return(JavaScript(url));
                }
                else
                {
                    switch (submitButton)
                    {
                    case "Save,add new Respondent":
                        return(RedirectToAction("Create", "Respondent", new { id = model.tipstaffRecordID, initial = model.initial }));

                    case null:
                    default:
                        return(RedirectToAction("Details", genericFunctions.TypeOfTipstaffRecord(tr), new { id = model.tipstaffRecordID }));
                    }
                }
            }
            catch (DbUpdateException ex)
            {
                _logger.LogError(ex, $"DbUpdateException in RespondentController in Create method, for user {((CPrincipal)User).UserID}");

                if (Request.IsAjaxRequest())
                {
                    return(PartialView("_createRespondentForRecord", model));
                }
                else
                {
                    return(View(model));
                }
            }
            catch (Exception ex)
            {
                _logger.LogError(ex, $"Exception in RespondentController in Create method, for user {((CPrincipal)User).UserID}");

                ErrorModel errModel = new ErrorModel(2);
                errModel.ErrorMessage  = genericFunctions.GetLowestError(ex);
                TempData["ErrorModel"] = errModel;
                return(RedirectToAction("IndexByModel", "Error", errModel ?? null));
            }
        }