// GET: Territory/Update/id
 public ActionResult Update(int id)
 {
     try
     {
         using (var dataContext = new HuntingEntities())
         {
             var user = AclUserContext.GetDetail(dataContext, User.Identity.Name);
             if (user == null)
             {
                 ContextUtils.CreateActionStateCookie(Response, ActionTypeEnum.Warning, GlobalRes.ERROR_NOT_ALLOWED);
                 return(RedirectToAction("Index", "Home"));
             }
             var territory = TerritoryContext.GetDetail(dataContext, id);
             if (user.CanUpdateTerritory(territory) == false)
             {
                 ContextUtils.CreateActionStateCookie(Response, ActionTypeEnum.Warning, GlobalRes.ERROR_NOT_ALLOWED);
                 return(RedirectToAction("Index", "Territory", new { id = id }));
             }
             var model = new TerritoryUpdateModel(territory);
             return(View(model));
         }
     }
     catch (Exception exception)
     {
         logger.Error(exception, "TerritoryController");
         ContextUtils.CreateActionStateCookie(Response, ActionTypeEnum.Danger, GlobalRes.ERROR_EXCEPTION);
         return(RedirectToAction("Index", "Territory", new { id = id }));
     }
 }
        public static int?Update(HuntingEntities dataContext, Territory updateItem, TerritoryUpdateModel model, AclUser user)
        {
            try
            {
                if (model.IsCreate)
                {
                    updateItem = new Territory()
                    {
                        SysCreated = DateTime.Now,
                        SysCreator = user.Id,
                        StewardId  = user.Id,
                    };

                    var mapItemTypeFeeding = new MapItemType()
                    {
                        Name       = TerritoryRes.MAP_ITEM_TYPE_FEEDING,
                        SysCreated = DateTime.Now,
                        SysCreator = user.Id,
                    };
                    updateItem.MapItemTypes.Add(mapItemTypeFeeding);

                    var mapItemTypePool = new MapItemType()
                    {
                        Name       = TerritoryRes.MAP_ITEM_TYPE_POOL,
                        SysCreated = DateTime.Now,
                        SysCreator = user.Id,
                    };
                    updateItem.MapItemTypes.Add(mapItemTypePool);

                    dataContext.Territories.Add(updateItem);
                }

                updateItem.Name        = model.Name;
                updateItem.Description = model.Description;
                updateItem.IsPublic    = model.IsPublic;
                updateItem.SysEditor   = user.Id;
                updateItem.SysUpdated  = DateTime.Now;

                dataContext.SaveChanges();
                return(updateItem.Id);
            }
            catch (Exception exception)
            {
                logger.Error(exception, "Update");
                return(null);
            }
        }
        public ActionResult Update(TerritoryUpdateModel model)
        {
            try
            {
                using (var dataContext = new HuntingEntities())
                {
                    var user = AclUserContext.GetDetail(dataContext, User.Identity.Name);
                    if (user == null)
                    {
                        ContextUtils.CreateActionStateCookie(Response, ActionTypeEnum.Warning, GlobalRes.ERROR_NOT_ALLOWED);
                        return(RedirectToAction("Index", "Home"));
                    }
                    var territory = TerritoryContext.GetDetail(dataContext, model.Id);
                    if (user.CanUpdateTerritory(territory) == false)
                    {
                        ContextUtils.CreateActionStateCookie(Response, ActionTypeEnum.Warning, GlobalRes.ERROR_NOT_ALLOWED);
                        return(RedirectToAction("Index", "Territory", new { id = model.Id }));
                    }

                    if (ModelState.IsValid)
                    {
                        var newItemId = TerritoryContext.Update(dataContext, territory, model, user);
                        if (newItemId.HasValue)
                        {
                            ContextUtils.CreateActionStateCookie(Response, ActionTypeEnum.Success, TerritoryRes.SUCCESS_UPDATE);
                            return(RedirectToAction("Index", "Territory", new { id = model.Id }));
                        }
                        else
                        {
                            ContextUtils.CreateActionStateCookie(Response, ActionTypeEnum.Warning, TerritoryRes.ERROR_UPDATE);
                        }
                    }
                    return(View(model));
                }
            }
            catch (Exception exception)
            {
                logger.Error(exception, "TerritoryController");
                ContextUtils.CreateActionStateCookie(Response, ActionTypeEnum.Danger, GlobalRes.ERROR_EXCEPTION);
                return(RedirectToAction("Index", "Home"));
            }
        }