public ActionResult Edit(int ID)
        {
            try
            {
                var testGroupEditViewModel = new TestGroupEditViewModel();
                if (ID > 0)
                {
                    REF_TEST_GROUP_TB testGroup = _uow.Repository <REF_TEST_GROUP_TB>().GetById(ID);
                    testGroupEditViewModel.TestGroupDescription   = testGroup.SZ_DESCRIPTION;
                    testGroupEditViewModel.TestGroupID            = testGroup.N_TEST_GROUP_SYSID;
                    testGroupEditViewModel.ShowMessageDescription = false;
                    testGroupEditViewModel.MessageDescription     = "";
                }
                else
                {
                    testGroupEditViewModel.TestGroupDescription   = "";
                    testGroupEditViewModel.TestGroupID            = ID;
                    testGroupEditViewModel.ShowMessageDescription = false;
                    testGroupEditViewModel.MessageDescription     = "";
                }

                return(View("Edit", testGroupEditViewModel));
            }
            catch (Exception ex)
            {
                if (ex.InnerException == null)
                {
                    ViewBag.Message = "Function: TestGroupController.Edit_GET\n\nError: " + ex.Message;
                }
                else
                {
                    ViewBag.Message = "Function: TestGroupController.Edit_GET\n\nError: " + (ex.Message + "\n\nInnerException: " + ex.InnerException.Message);
                };
                Session["ErrorMessage"] = ViewBag.Message;
                return(RedirectToAction("InternalServerError", "Error"));
            };
        }
        public ActionResult Edit(TestGroupEditViewModel Model)
        {
            bool saveFailed;

            do
            {
                saveFailed = false;
                try
                {
                    if (_testRepo.IsTestGroupDescriptionDuplicate(Model.TestGroupDescription))
                    {
                        Model.ShowMessageDescription = true;
                        Model.MessageDescription     = "The Test Group Description already exists. Please enter a different one.";

                        return(View(Model));
                    }
                    else
                    {
                        if (ModelState.IsValid)
                        {
                            int id = 0;
                            if (Model.TestGroupID == 0) //new
                            {
                                REF_TEST_GROUP_TB testGroup = new REF_TEST_GROUP_TB()
                                {
                                    B_INACTIVE     = false,
                                    DT_ENTERED     = DateTime.UtcNow,
                                    DT_MODIFIED    = DateTime.UtcNow,
                                    SZ_DESCRIPTION = Model.TestGroupDescription,
                                    SZ_ENTERED_BY  = _modifiedBy,
                                    SZ_MODIFIED_BY = _modifiedBy
                                };
                                _uow.Repository <REF_TEST_GROUP_TB>().Add(testGroup);
                                _uow.SaveChanges();
                                REF_TEST_GROUP_TB testGroupFound = _uow.Repository <REF_TEST_GROUP_TB>().Find(u => u.SZ_ENTERED_BY == _modifiedBy &&
                                                                                                              u.SZ_MODIFIED_BY == _modifiedBy && u.SZ_DESCRIPTION == Model.TestGroupDescription).FirstOrDefault();
                                id = testGroupFound.N_TEST_GROUP_SYSID;
                            }
                            else //edit
                            {
                                REF_TEST_GROUP_TB testGroup = _uow.Repository <REF_TEST_GROUP_TB>().GetById(Model.TestGroupID);
                                testGroup.DT_MODIFIED    = DateTime.UtcNow;
                                testGroup.SZ_DESCRIPTION = Model.TestGroupDescription;
                                testGroup.SZ_MODIFIED_BY = _modifiedBy;
                                _uow.Repository <REF_TEST_GROUP_TB>().Update(testGroup);
                                _uow.SaveChanges();
                                id = Model.TestGroupID;
                            }

                            return(RedirectToAction("Index", new { ID = id }));
                        }

                        return(View(Model));
                    }
                }
                catch (DbEntityValidationException ex)
                {
                    StringBuilder sb = new StringBuilder();

                    foreach (var failure in ex.EntityValidationErrors)
                    {
                        sb.AppendFormat("{0} failed validation:\n\n", failure.Entry.Entity.GetType());
                        foreach (var error in failure.ValidationErrors)
                        {
                            sb.AppendFormat("- {0} : {1}", error.PropertyName, error.ErrorMessage);
                            sb.AppendLine();
                        }
                    }
                    if (ex.InnerException == null)
                    {
                        ViewBag.Message = "Function: TestGroupController.Edit_POST\n\nError: " + ex.Message + "\n\n" + sb;
                    }
                    else
                    {
                        ViewBag.Message = "Function: TestGroupController.Edit_POST\n\nError: " + ex.Message + "\n\n" + sb + "\n\n" + ex.InnerException.Message;
                    };
                }
                catch (DbUpdateConcurrencyException ex)
                {
                    saveFailed = true;

                    var entry = ex.Entries.Single();
                    entry.OriginalValues.SetValues(entry.GetDatabaseValues());
                }
                catch (DataException ex)
                {
                    if (ex.InnerException == null)
                    {
                        ViewBag.Message = "Function: TestGroupController.Edit_POST\n\nError: " + ex.Message + "\n\nBaseException: " + ex.GetBaseException().Message;
                    }
                    else
                    {
                        ViewBag.Message = "Function: TestGroupController.Edit_POST\n\nError: " + ex.Message + "\n\nBaseException: " + ex.GetBaseException().Message + "\n\nInnerException: " + ex.InnerException.Message;
                    };
                }
                catch (Exception ex)
                {
                    if (ex.InnerException == null)
                    {
                        ViewBag.Message = "Function: TestGroupController.Edit_POST\n\nError: " + ex.Message;
                    }
                    else
                    {
                        ViewBag.Message = "Function: TestGroupController.Edit_POST\n\nError: " + ex.Message + "\n\nBaseException: " + ex.InnerException.Message;
                    };
                };
            } while (saveFailed);

            Session["ErrorMessage"] = ViewBag.Message;
            return(RedirectToAction("InternalServerError", "Error"));
        }