// add Store for Reason
        public ActionResult AddStore(int currentOffset, string StoreID, string StoreName)
        {
            StoreReasonDTO model = new StoreReasonDTO();

            model.OffSet    = currentOffset;
            model.StoreID   = StoreID;
            model.StoreName = StoreName;
            return(PartialView("_ReasonOnStore", model));
        }
        public ActionResult Edit(ReasonModels model)
        {
            try
            {
                model.ListStore = model.ListStore.Where(x => x.Status != (byte)Commons.EStatus.Deleted).ToList();

                if (model.ListStore == null || !model.ListStore.Any())
                {
                    ModelState.AddModelError("ListStoreOnComp", _AttributeForLanguage.CurrentUser.GetLanguageTextFromKey("Please Choose Store"));
                }
                if (string.IsNullOrEmpty(model.Name))
                {
                    ModelState.AddModelError("Name", _AttributeForLanguage.CurrentUser.GetLanguageTextFromKey("Reason field is required"));
                }
                if (model.Code != (byte)Commons.EReasonCode.Deposit && model.Code != (byte)Commons.EReasonCode.Payout)
                {
                    model.GLAccountCode = "";
                }
                if (!ModelState.IsValid)
                {
                    var lstchoose = model.ListStore;

                    Response.StatusCode = (int)HttpStatusCode.BadRequest;
                    model = GetDetail(model.ID);
                    //////var offset = model.ListStore.Count();
                    if (lstchoose != null && lstchoose.Any())
                    {
                        foreach (var item in model.ListStoreOnComp)
                        {
                            var exits = lstchoose.Where(x => x.StoreID == item.Id).FirstOrDefault();
                            if (exits != null && !item.Disabled)
                            {
                                item.Selected = true;
                                item.Disabled = false;

                                StoreReasonDTO store = new StoreReasonDTO();
                                //////store.OffSet = offset++;
                                store.StoreID   = item.Id;
                                store.StoreName = item.Name;
                                model.ListStore.Add(store);
                            }
                        }
                    }
                    int offSet = 0;
                    foreach (var store in model.ListStore)
                    {
                        store.OffSet = offSet;
                        offSet++;
                    }
                    //////model.ListStore = model.ListStore.OrderBy(x => x.StoreName).ToList();
                    return(PartialView("_Edit", model));
                }

                //====================
                string msg    = "";
                var    result = _factory.InsertOrUpdateReason(model, ref msg);

                if (result)
                {
                    return(RedirectToAction("Index"));
                }
                else
                {
                    var lstchoose = model.ListStore;

                    ModelState.AddModelError("Height", _AttributeForLanguage.CurrentUser.GetLanguageTextFromKey(msg));
                    Response.StatusCode = (int)HttpStatusCode.BadRequest;
                    model = GetDetail(model.ID);
                    //////var offset = model.ListStore.Count();
                    if (lstchoose != null && lstchoose.Any())
                    {
                        foreach (var item in model.ListStoreOnComp)
                        {
                            var exits = lstchoose.Where(x => x.StoreID == item.Id).FirstOrDefault();
                            if (exits != null && !item.Disabled)
                            {
                                item.Selected = true;
                                item.Disabled = false;

                                StoreReasonDTO store = new StoreReasonDTO();
                                //////store.OffSet = offset++;
                                store.StoreID   = item.Id;
                                store.StoreName = item.Name;
                                model.ListStore.Add(store);
                            }
                        }
                    }
                    int offSet = 0;
                    foreach (var store in model.ListStore)
                    {
                        store.OffSet = offSet;
                        offSet++;
                    }
                    //////model.ListStore = model.ListStore.OrderBy(x => x.StoreName).ToList();
                    return(PartialView("_Edit", model));
                }
            }
            catch (Exception ex)
            {
                _logger.Error("Reason_Edit: " + ex);
                return(new HttpStatusCodeResult(400, ex.Message));
            }
        }