public virtual ActionResult Edit(int autoApprovalId, string docTypeCode)
        {
            AutoApproval         autoApproval  = new AutoApproval();
            IList <AutoApproval> autoApprovals = new List <AutoApproval>();

            if (autoApprovalId > 0)
            {
                autoApproval = this._autoApprovalService.GetAutoApproval(autoApprovalId);
            }
            else
            {
                autoApprovals = this._autoApprovalService.GetAutoApprovals(docTypeCode);
            }

            var docTypes    = _docTypeService.GetDocTypes();
            var subDocTypes = this._subDocTypeService.GetSubDocTypes();
            var manCos      = _manCoService.GetManCos();

            var model = new EditAutoApprovalViewModel();

            if (autoApprovalId > 0)
            {
                model.ManCoId      = autoApproval.ManCoId;
                model.DocTypeId    = autoApproval.DocTypeId;
                model.SubDocTypeId = autoApproval.SubDocTypeId;
            }
            else
            {
                model.ManCoId      = autoApprovals.First().ManCoId;
                model.DocTypeId    = autoApprovals.First().DocTypeId;
                model.SubDocTypeId = -1;
            }

            model.DocTypeCode = docTypeCode;
            model.AddManCos(manCos);
            model.AddDocTypes(docTypes);
            model.AddSubDocTypes(subDocTypes);

            model.SubDocTypes = model.SubDocTypes.FindAll(x => x.DocTypeViewModel.Id == model.DocTypeId);

            model.SubDocTypes.Insert(0, new SubDocTypeViewModel()
            {
                Code = "All",
                Id   = -1
            });

            return(this.View(model));
        }
        public virtual ActionResult Update(EditAutoApprovalViewModel model)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    if (model.AutoApprovalId == -1)
                    {
                        _autoApprovalService.Delete(model.DocTypeCode);
                        this.AutoApproveSingleDocType(model.ManCoId, model.DocTypeId, model.SubDocTypeId);
                        TempData["SelectedManCoId"] = model.ManCoId;
                        return(RedirectToAction("Index", "AutoApproval"));
                    }
                    else
                    {
                        if (model.SubDocTypeId == -1)
                        {
                            this.AutoApproveAllSubTypes(model.DocTypeId, model.ManCoId);
                        }
                        else
                        {
                            this._autoApprovalService.Update(model.AutoApprovalId, model.ManCoId, model.DocTypeId, model.SubDocTypeId);
                        }

                        TempData["SelectedManCoId"] = model.ManCoId;
                        return(RedirectToAction("Index", "AutoApproval"));
                    }
                }
                catch (UnityAutoApprovalAlreadyExistsException)
                {
                    this.TempData["comment"] = "Auto approval already exists";
                    return(RedirectToAction("Edit", "AutoApproval", new { autoApprovalId = model.AutoApprovalId, docTypeCode = model.DocTypeCode }));
                }
            }
            else
            {
                TempData["comment"] = "Please correct the errors and try again";
                return(RedirectToAction("Edit", "AutoApproval", new { autoApprovalId = model.AutoApprovalId, docTypeCode = model.DocTypeCode }));
            }
        }