public ActionResult DeleteLocGr(string ID)
        {
            try
            {
                REF_LOCATION_GROUP_TB        locationGroup = _uow.Repository <REF_LOCATION_GROUP_TB>().GetById(Convert.ToInt32(ID));
                LocationGroupDeleteViewModel locationGroupDeleteViewModel = new LocationGroupDeleteViewModel()
                {
                    Description            = locationGroup.SZ_DESCRIPTION,
                    ID                     = locationGroup.N_LOCATION_GROUP_SYSID,
                    MessageDescription     = "",
                    ShowMessageDescription = false
                };

                return(View(locationGroupDeleteViewModel));
            }
            catch (Exception ex)
            {
                if (ex.InnerException == null)
                {
                    ViewBag.Message = "Function: LocationGroupController.DeleteLocGr_GET\n\nError: " + ex.Message;
                }
                else
                {
                    ViewBag.Message = "Function: LocationGroupController.DeleteLocGr_GET\n\nError: " + (ex.Message + "\n\nInnerException: " + ex.InnerException.Message);
                };
                Session["ErrorMessage"] = ViewBag.Message;
                return(RedirectToAction("InternalServerError", "Error"));
            };
        }
        public ActionResult Create(int ID, int?LocationGroupID)
        {
            try
            {
                REF_LOCATION_GROUP_TB locationGroup = _uow.Repository <REF_LOCATION_GROUP_TB>().GetById(Convert.ToInt32(LocationGroupID));

                LocationGroupCreateLocationViewModel model = new LocationGroupCreateLocationViewModel()
                {
                    LocationGroupDescription = locationGroup.SZ_DESCRIPTION,
                    LocationGroupID          = locationGroup.N_LOCATION_GROUP_SYSID,
                    Locations        = (List <SelectListItem>)_locationRepo.GetLocationsSelectListByLocationGroupID(Convert.ToInt32(LocationGroupID)),
                    SelectedLocation = 0
                };

                return(View(model));
            }
            catch (Exception ex)
            {
                if (ex.InnerException == null)
                {
                    ViewBag.Message = "Function: LocationGroupController.Create_GET\n\nError: " + ex.Message;
                }
                else
                {
                    ViewBag.Message = "Function: LocationGroupController.Create_GET\n\nError: " + (ex.Message + "\n\nInnerException: " + ex.InnerException.Message);
                };
                Session["ErrorMessage"] = ViewBag.Message;
                return(RedirectToAction("InternalServerError", "Error"));
            };
        }
        public ActionResult Details(int ID)
        {
            try
            {
                REF_LOCATION_GROUP_TB locationGroup = _uow.Repository <REF_LOCATION_GROUP_TB>().GetById(ID);

                LocationGroupDetailsViewModel model = new LocationGroupDetailsViewModel()
                {
                    Description     = locationGroup.SZ_DESCRIPTION,
                    LocationGroupID = locationGroup.N_LOCATION_GROUP_SYSID
                };

                return(View(model));
            }
            catch (Exception ex)
            {
                if (ex.InnerException == null)
                {
                    ViewBag.Message = "Function: LocationGroupController.Details_GET\n\nError: " + ex.Message;
                }
                else
                {
                    ViewBag.Message = "Function: LocationGroupController.Details_GET\n\nError: " + (ex.Message + "\n\nInnerException: " + ex.InnerException.Message);
                };
                Session["ErrorMessage"] = ViewBag.Message;
                return(RedirectToAction("InternalServerError", "Error"));
            };
        }
        public ActionResult Edit(int ID)
        {
            try
            {
                var locationGroupEditViewModel = new LocationGroupEditViewModel();
                if (ID > 0)
                {
                    REF_LOCATION_GROUP_TB locationGroup = _uow.Repository <REF_LOCATION_GROUP_TB>().GetById(ID);
                    locationGroupEditViewModel.Description            = locationGroup.SZ_DESCRIPTION;
                    locationGroupEditViewModel.ID                     = locationGroup.N_LOCATION_GROUP_SYSID;
                    locationGroupEditViewModel.ShowMessageDescription = false;
                    locationGroupEditViewModel.MessageDescription     = "";
                }
                else
                {
                    locationGroupEditViewModel.Description            = "";
                    locationGroupEditViewModel.ID                     = 0;
                    locationGroupEditViewModel.ShowMessageDescription = false;
                    locationGroupEditViewModel.MessageDescription     = "";
                }

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

            do
            {
                saveFailed = false;
                try
                {
                    if (_locationRepo.IsLocationGroupDescriptionDuplicate(Model.Description))
                    {
                        Model.ShowMessageDescription = true;
                        Model.MessageDescription     = "The Location Group Description already exists. Please enter a different one.";

                        return(View(Model));
                    }
                    else
                    {
                        if (ModelState.IsValid)
                        {
                            int id = 0;
                            if (Model.ID == 0) //new
                            {
                                REF_LOCATION_GROUP_TB locationGroup = new REF_LOCATION_GROUP_TB()
                                {
                                    B_INACTIVE     = false,
                                    DT_ENTERED     = DateTime.UtcNow,
                                    DT_MODIFIED    = DateTime.UtcNow,
                                    SZ_DESCRIPTION = Model.Description,
                                    SZ_ENTERED_BY  = _modifiedBy,
                                    SZ_MODIFIED_BY = _modifiedBy
                                };
                                _uow.Repository <REF_LOCATION_GROUP_TB>().Add(locationGroup);
                                _uow.SaveChanges();
                                REF_LOCATION_GROUP_TB locationGroupFound = _uow.Repository <REF_LOCATION_GROUP_TB>().Find(u => u.SZ_ENTERED_BY == _modifiedBy &&
                                                                                                                          u.SZ_MODIFIED_BY == _modifiedBy && u.SZ_DESCRIPTION == Model.Description).FirstOrDefault();
                                id = locationGroupFound.N_LOCATION_GROUP_SYSID;
                            }
                            else //edit
                            {
                                REF_LOCATION_GROUP_TB locationGroup = _uow.Repository <REF_LOCATION_GROUP_TB>().GetById(Model.ID);
                                locationGroup.DT_MODIFIED    = DateTime.UtcNow;
                                locationGroup.SZ_DESCRIPTION = Model.Description;
                                locationGroup.SZ_MODIFIED_BY = _modifiedBy;
                                _uow.Repository <REF_LOCATION_GROUP_TB>().Update(locationGroup);
                                _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: LocationGroupController.Edit_POST\n\nError: " + ex.Message + "\n\n" + sb;
                    }
                    else
                    {
                        ViewBag.Message = "Function: LocationGroupController.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: LocationGroupController.Edit_POST\n\nError: " + ex.Message + "\n\nBaseException: " + ex.GetBaseException().Message;
                    }
                    else
                    {
                        ViewBag.Message = "Function: LocationGroupController.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: LocationGroupController.Edit_POST\n\nError: " + ex.Message;
                    }
                    else
                    {
                        ViewBag.Message = "Function: LocationGroupController.Edit_POST\n\nError: " + ex.Message + "\n\nBaseException: " + ex.InnerException.Message;
                    };
                };
            } while (saveFailed);

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