public ActionResult Search(string filter, string saldo, int? page, int? pagesize)
        {
            try
            {
                LogBLL.Insert(new LogDado("Search", "Material", _idUsuario));
                using (var db = new Context())
                {
                    var _bll = new BLL.MaterialBLL(db, _idUsuario);
                    ViewBag.saldo = saldo;

                    var result = _bll.Search(filter, saldo, page, pagesize);

                    return View("Index", result);
				}
            }
            catch (Exception ex)
            {
                Util.Entity.ErroLog.Add(ex, Session.SessionID, _idUsuario);
                return RedirectToAction("Index", "Erro", new { area = string.Empty });
            }
        }		
        public ActionResult Create(MaterialVM model)
        {
            if (string.IsNullOrEmpty(model.UnidadeMedida.nome))
            {
                ModelState.AddModelError("UnidadeMedida.nome", "Selecione uma unid. de med.");
            }
            //if (string.IsNullOrEmpty(model.Fabricante.nome))
            //{
            //    ModelState.AddModelError("Fabricante.nome", "Selecione um fabricante");
            //}
            if (ModelState.IsValid)
            {
                try
                {
                    LogBLL.Insert(new LogDado("Create", "Material", _idUsuario));
                    using (var db = new Context())
                    {
                        using (var trans = new RP.DataAccess.RPTransactionScope(db))
                        {
                            var _material = model.GetMaterial();

                            var _bll = new BLL.MaterialBLL(db, _idUsuario);

                            _bll.Insert(_material);
                            _bll.SaveChanges();

                            trans.Complete();

                            this.AddFlashMessage(RP.Util.Resource.Message.INSERT_SUCCESS, FlashMessage.SUCCESS);
                            return RedirectToAction("Index");
                        }
                    }
                }
                catch (Exception ex)
                {
                    this.AddFlashMessage(RP.Util.Exception.Message.Get(ex), FlashMessage.ERROR); RP.Util.Entity.ErroLog.Add(ex, Session.SessionID, _idUsuario);
                    return View(model);   
                }
            }
            return View(model);
        }
        public JsonResult JsCreate(Material model)
        {
            try
            {
                LogBLL.Insert(new LogDado("JsCreate", "Material", _idUsuario));
                using (var db = new Context())
                {
                    using (var trans = new RP.DataAccess.RPTransactionScope(db))
                    {
                        var _bll = new BLL.MaterialBLL(db, _idUsuario);

                        _bll.Insert(model);
                        _bll.SaveChanges();

                        trans.Complete();

                        return Json(new { model = model }, JsonRequestBehavior.AllowGet);
                    }
                }
            }

            catch (Exception ex)
            {
                Response.StatusCode = 500;
                return Json(RP.Util.Exception.Message.Get(ex), JsonRequestBehavior.AllowGet);
            }
        }
        public JsonResult JsSearch(string filter, int? page, int? pagesize)
        {
            try
            {
                using (var db = new Context())
                {
                    var _bll = new BLL.MaterialBLL(db, _idUsuario);

                    var result = _bll.Search(filter, "todos", page, pagesize);

                    var list = result.Select(s => new 
                    {
                        s.idMaterial,
                        s.nome,
                        s.margemGanho,
                        s.preco
                    });

                    return Json(new Util.Class.JsonCollection { result = list, count = result.TotalCount }, JsonRequestBehavior.AllowGet);
				}
            }
            catch (Exception ex)
            {
                Response.StatusCode = 500;
                return Json(RP.Util.Exception.Message.Get(ex), JsonRequestBehavior.AllowGet);
            }
        }
        private ActionResult GetView(int id)
        {
            try
            {
                using (var db = new Context())
                {
                    var _bll = new BLL.MaterialBLL(db, _idUsuario);

                    var _material = _bll.FindSingle(e => e.idMaterial == id, u => u.UnidadeMedida, u => u.Fabricante);

                    return View(MaterialVM.GetMaterial(_material));
                }
            }
            catch (Exception ex)
            {
                this.AddFlashMessage(RP.Util.Exception.Message.Get(ex), FlashMessage.ERROR); RP.Util.Entity.ErroLog.Add(ex, Session.SessionID, _idUsuario);
                return RedirectToAction("Index");
            }
        }
        public ActionResult DeleteConfirmed(int id)
        {            
            try
            {
                LogBLL.Insert(new LogDado("DeleteConfirmed", "Material", _idUsuario));
                using (var db = new Context())
                {
                    using (var trans = new RP.DataAccess.RPTransactionScope(db))
                    {
                        var _bll = new BLL.MaterialBLL(db, _idUsuario);

                        _bll.Delete(e => e.idMaterial == id);
                        _bll.SaveChanges();

                        trans.Complete();

                        this.AddFlashMessage(RP.Util.Resource.Message.DELETE_SUCCESS, FlashMessage.SUCCESS);
                        return RedirectToAction("Index");
                    }
                }
            }
            catch (Exception ex)
            {
                RP.Util.Entity.ErroLog.Add(ex, Session.SessionID, _idUsuario);
                this.AddFlashMessage(RP.Util.Exception.Message.Get(ex), FlashMessage.ERROR); RP.Util.Entity.ErroLog.Add(ex, Session.SessionID, _idUsuario);
                return RedirectToAction("Delete", id);
            }
        }