public override object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
        {
            if (bindingContext == null)
            {
                throw new ArgumentNullException(nameof(bindingContext));
            }

            var valores = controllerContext.HttpContext.Request.Form;
            var ret     = new EntradaSaidaProdutoViewModel()
            {
                Produtos = new Dictionary <int, int>()
            };

            try
            {
                ret.Data = DateTime.ParseExact(valores.Get("data"), "yyyy-MM-dd", null);

                if (!string.IsNullOrEmpty(valores.Get("produtos")))
                {
                    var produtos = JsonConvert.DeserializeObject <List <dynamic> >(valores.Get("produtos"));

                    foreach (var produto in produtos)
                    {
                        ret.Produtos.Add((int)produto.IdProduto, (int)produto.Quantidade);
                    }
                }
                ;
            }
            catch
            {
            }

            return(ret);
        }
コード例 #2
0
        public override object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
        {
            if (bindingContext == null)
            {
                throw new ArgumentNullException(nameof(bindingContext));
            }

            var valores = controllerContext.HttpContext.Request.Form;

            var ret = new EntradaSaidaProdutoViewModel()
            {
                Produtos = new Dictionary <int, int>()
            };

            try
            {
                ret.Data = DateTime.ParseExact(valores.Get("data"), "yyyy-MM-dd", null);

                if (!string.IsNullOrEmpty(valores.Get("produtos")))
                {
                    var produtos = JsonConvert.DeserializeObject <List <dynamic> >(valores.Get("produtos"));

                    foreach (var produto in produtos)
                    {
                        /*Tentando adicionar os produtos
                         * Apenas um produto com o mesmo IdProduto será adicionado, caso
                         * tenha outra entrada ou saída com o mesmo IdProduto (Key), a lista de produtos será
                         * zerada, recebendo null e assim cancelando a entrada.
                         * */
                        try
                        {
                            ret.Produtos.Add((int)produto.IdProduto, (int)produto.Quantidade);
                        }
                        catch (ArgumentException)
                        {
                            ret.Produtos = null;
                        }
                    }
                }
                ;
            }
            #pragma warning disable 0168
            catch (System.Exception ex)
            {
                throw;
            }

            return(ret);
        }