public void BatchAdd(DataTable table)
        {
            var types = _categoryRepository.GetAll(CategoryType.Outcome).ToDictionary(t => t.Name, v => v.Id);
            var users =  _personalAccountRepository.GetAll().ToDictionary(t => t.Name, v => v.Id);
            foreach (DataRow row in table.Rows)
            {
                var userName = Convert.ToString(row["付款人"]);
                if (string.IsNullOrWhiteSpace(userName))
                    break;

                var payDate = Convert.ToDateTime(row["支付日期"]);
                var amount = Convert.ToDecimal(row["支出"]);
                var typeName = Convert.ToString(row["类别"]);
                var categoryId = types[typeName];
                var payAcountId = users[userName];
                var remark = Convert.ToString(row["备注"]);

                var category = new CategoryDomain(categoryId);
                var payPersonal = new PersonalAccountDomain(payAcountId);

                var result = new PublicAccountWaterDomain(category, payPersonal, string.Empty, amount, payDate, remark);
            }

            unitOfWork.Commit();
        }
 public Guid Adjust(Guid userId, decimal amount, CategoryType type, DateTime payDate, string remark)
 {
     var personalAccount = new PersonalAccountDomain(userId);
     var water = new PersonalAccountWaterDomain(personalAccount, amount, type, payDate, remark);
     unitOfWork.Commit();
     return water.Entity.Id;
 }
        public Guid Add(Guid categoryId, Guid payAcountId, string payName, decimal amount,
             DateTime payDate, string remark)
        {
            var category = new CategoryDomain(categoryId);
            var payPersonal = new PersonalAccountDomain(payAcountId);

            var result = new PublicAccountWaterDomain(category, payPersonal, payName, amount, payDate, remark);
            unitOfWork.Commit();

            return result.Entity.Id;
        }
        public void AddTax(int multiple)
        {
            //TODO:改为配置
            var category = new CategoryDomain(Guid.Parse("6e1a7dd8-8589-42e3-bc06-ab22b1cf08a7"));
            _personalAccountRepository.GetAll(ApplicationContext.CurrentIdentity.AccountId)
               .ForEach(t =>
               {
                   var payPersonal = new PersonalAccountDomain(t.Id);
                   var salary = _salaryRepository.Last(t.Id);
                   var amount = salary.Amount * 0.05m * multiple;
                   new PublicAccountWaterDomain(category, payPersonal, payPersonal.Entity.Name, amount, DateTime.Now, string.Format("交共同费用。倍数{0},税率:{1},基数:{2}", multiple, "5%", salary.Amount));
               });

            unitOfWork.Commit();

        }
        public Guid Add(Guid userId, int year, int month, decimal amount, string remark)
        {
            SalaryDomain result = null;

            var salary = _salaryRepository.Query(userId, year, month);
            if (salary == null)
            {
                PersonalAccountDomain user = new PersonalAccountDomain(userId);
                result = new SalaryDomain(user, year, month, amount, remark);
            }
            else
            {
                result = new SalaryDomain(salary.Id);
                result.UpdateSalary(amount, remark);
            }

            unitOfWork.Commit();

            return result.Entity.Id;
        }
 public Guid Add(string loginName, string name, string password)
 {
     var model = new PersonalAccountDomain(loginName, name, password);
     unitOfWork.Commit();
     return model.Entity.Id;
 }