Пример #1
0
        public JsonResult OnGetItemStateChange()
        {
            var rawQS = Uri.UnescapeDataString(Request.QueryString.ToString());
            var idx   = rawQS.IndexOf('{');

            if (idx == -1)
            {
                return(new JsonResult("ERROR~:No Parameters"));
            }
            var          jsonQS = rawQS.Substring(idx);
            InvItemState invIS  = JsonConvert.DeserializeObject <InvItemState>(jsonQS);

            if (invIS != null)
            {
                InventoryItem invItem = (invIS.state == NEEDED_STATE) ?
                                        _context.InventoryItem.Include(i => i.Item).FirstOrDefault(m => m.ItemId == invIS.invItemId) :
                                        _context.InventoryItem.FirstOrDefault(m => m.ItemId == invIS.invItemId);

                if (invItem != null)
                {
                    if (invIS.pid > 0)
                    {
                        invItem.PersonId = invIS.pid;
                    }

                    invItem.State = invIS.state;
                    _context.Attach(invItem).State = EntityState.Modified;
                }

                try
                {
                    _context.SaveChanges();
                }
                catch (DbUpdateConcurrencyException)
                {
                    return(new JsonResult("ERROR~:Update DB Failed")); // TBD
                }

                if ((invItem.State == NEEDED_STATE) && (invItem?.Item != null))
                {
                    // Notify Item is needed
                    var Item = _context.Item.FirstOrDefault(m => m.Id == invIS.invItemId); // TBD optimize with a single
                    if (Item != null)
                    {
                        Task.Run(() => NotifyNeedAsync(_hostEnv, _configuration, _userManager, "CStat:Stock> Needed : " + Item.Name, false)); // no cleaning even async while user is active
                    }
                }

                CurState cs = new CurState
                {
                    invItemState = GetInvItemState(invItem),
                    allState     = GetAllState()
                };
                return(new JsonResult(JsonConvert.SerializeObject(cs)));
            }
            return(new JsonResult("ERROR~:Incorrect Parameters"));
        }
Пример #2
0
        public InvItemState GetInvItemState(InventoryItem invItem)
        {
            InvItemState invIS = new InvItemState();

            // Get item DisplayName
            invIS.pid         = -1;
            invIS.displayName = "Need?";
            invIS.state       = (int)InventoryItem.States.InStock;
            invIS.btnClass    = "InStockBtn";

            if (invItem.PersonId.HasValue)
            {
                invIS.pid         = invItem.PersonId.Value;
                invIS.displayName = GetDisplayNameByPid(invIS.pid);
            }

            if (invItem.State.HasValue)
            {
                invIS.state = invItem.State.Value;
                switch (invIS.state)
                {
                case (int)InventoryItem.States.InStock:
                case (int)InventoryItem.States.InInv:
                    invIS.btnClass    = "InStockBtn";
                    invIS.displayName = "Need?";
                    break;

                case (int)InventoryItem.States.OpenNeed:
                    invIS.btnClass    = "OpenNeedBtn";
                    invIS.displayName = "Take";
                    break;

                case (int)InventoryItem.States.TakenNeed:
                    invIS.btnClass = "TakenNeedBtn";
                    break;
                }
            }
            return(invIS);
        }