public ActionResult Edit(int ID)
        {
            try
            {
                var facilityEditViewModel = new FacilityEditViewModel();
                if (ID > 0)
                {
                    REF_FACILITY_TB facility = _uow.Repository <REF_FACILITY_TB>().GetById(ID);
                    facilityEditViewModel.ID               = facility.N_FACILITY_SYSID;
                    facilityEditViewModel.Title            = facility.SZ_TITLE;
                    facilityEditViewModel.ShowMessageTitle = false;
                    facilityEditViewModel.MessageTitle     = "";
                }
                else
                {
                    facilityEditViewModel.ID               = 0;
                    facilityEditViewModel.Title            = "";
                    facilityEditViewModel.ShowMessageTitle = false;
                    facilityEditViewModel.MessageTitle     = "";
                }

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

            do
            {
                saveFailed = false;
                try
                {
                    if (_facilityRepo.IsFacilityTitleDuplicate(Model.Title))
                    {
                        Model.ShowMessageTitle = true;
                        Model.MessageTitle     = "The Facility Title already exists. Please enter a different one.";

                        return(View(Model));
                    }
                    else
                    {
                        if (ModelState.IsValid)
                        {
                            int id = 0;
                            if (Model.ID == 0) //new
                            {
                                REF_FACILITY_TB facility = new REF_FACILITY_TB()
                                {
                                    B_INACTIVE     = false,
                                    DT_ENTERED     = DateTime.UtcNow,
                                    DT_MODIFIED    = DateTime.UtcNow,
                                    SZ_ENTERED_BY  = _modifiedBy,
                                    SZ_MODIFIED_BY = _modifiedBy,
                                    SZ_TITLE       = Model.Title
                                };
                                _uow.Repository <REF_FACILITY_TB>().Add(facility);
                                _uow.SaveChanges();
                                REF_FACILITY_TB facilityFound = _uow.Repository <REF_FACILITY_TB>().Find(u => u.SZ_ENTERED_BY == _modifiedBy &&
                                                                                                         u.SZ_MODIFIED_BY == _modifiedBy && u.SZ_TITLE == Model.Title).FirstOrDefault();
                                id = facilityFound.N_FACILITY_SYSID;
                            }
                            else //edit
                            {
                                REF_FACILITY_TB facility = _uow.Repository <REF_FACILITY_TB>().GetById(Model.ID);
                                facility.DT_MODIFIED    = DateTime.UtcNow;
                                facility.SZ_MODIFIED_BY = _modifiedBy;
                                facility.SZ_TITLE       = Model.Title;
                                _uow.Repository <REF_FACILITY_TB>().Update(facility);
                                _uow.SaveChanges();
                                id = Model.ID;
                            }

                            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: FacilityController.Edit_POST\n\nError: " + ex.Message + "\n\n" + sb;
                    }
                    else
                    {
                        ViewBag.Message = "Function: FacilityController.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: FacilityController.Edit_POST\n\nError: " + ex.Message + "\n\nBaseException: " + ex.GetBaseException().Message;
                    }
                    else
                    {
                        ViewBag.Message = "Function: FacilityController.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: FacilityController.Edit_POST\n\nError: " + ex.Message;
                    }
                    else
                    {
                        ViewBag.Message = "Function: FacilityController.Edit_POST\n\nError: " + ex.Message + "\n\nBaseException: " + ex.InnerException.Message;
                    };
                };
            } while (saveFailed);

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