public string Create(ExpenseBinding binding)
        {
            if (!string.IsNullOrWhiteSpace(binding.VendorName))
            {
                binding.VendorId = CreateVendor(binding.VendorName);
            }

            using (var db = GetMainContext())
            {
                var entity = binding.ToEntity(db);
                entity.UserId  = UserId;
                entity.ValueId = db.Expenses.NextValueId(UserId).ToString();

                db.Expenses.Add(entity);
                ResolveTransaction(db, entity);

                db.SaveChanges();

                return(entity.ValueId);
            }
        }
        public bool Update(ExpenseBinding binding)
        {
            if (!string.IsNullOrWhiteSpace(binding.VendorName))
            {
                binding.VendorId = CreateVendor(binding.VendorName);
            }

            using (var context = GetMainContext())
            {
                var entity = context.Expenses.WhereUser(UserId)
                             .Include(x => x.Transaction)
                             .SingleOrDefault(x => x.ValueId == binding.Id);

                entity = binding.ToEntity(context, entity);

                context.Expenses.Update(entity);
                ResolveTransaction(context, entity);

                context.SaveChanges();

                return(true);
            }
        }