public Guid? CreateCreditForRequest(Guid requestId) { try { var request = _requestDao.Get(requestId); if (request == null) { return null; } var debts = new Debts() { Id = Guid.NewGuid(), Debt = 0 }; _debtDao.CreateOrUpdate(debts); //startSum - cумма запрошеная пользователем int allSum = 0; //TODO var payMounth = (int)((request.StartSum + (request.StartSum * request.CreditTypes.Percent)) / request.CreditTypes.PayCount); var dateStart = _creditDao.GetTimeTable().Date; var credit = new Credit() { Id = Guid.NewGuid(), DateStart = dateStart, DateEnd = dateStart.AddMonths(request.CreditTypes.PayCount), Percent = request.CreditTypes.Percent, StartSum = request.StartSum, AllSum = allSum, PayCount = request.CreditTypes.PayCount, Penya = 0.04, /*belarus magic*/ PayMounth = payMounth, PersonId = request.PersonId, ManagerId = request.ManagerId.Value, CreditTypeId = request.CreditTypeId, DebtsId = debts.Id, Status = "0", RequestId = requestId }; _creditDao.CreateOrUpdate(credit); var bankBook = new BankBook() { Id = Guid.NewGuid(), CreditId = credit.Id, cache = 0 }; _bankBookDao.CreateOrUpdate(bankBook); _debtDao.SaveToBase(); if (request.CreditTypes.CreditSubType.Abbreviation.Equals("Ann")) { AnnuityCreadit.ProcessHistory(credit.Id); } if (request.CreditTypes.CreditSubType.Abbreviation.Equals("Grad")) { GradedCredit.ProcessHistory(credit.Id); } request.CreditId = credit.Id; _requestDao.CreateOrUpdate(request); return credit.Id; } catch (Exception) { return null; } }
public void Process(Object obj) { if (_mut.WaitOne()) { var bankBook = (BankBook) obj; Console.WriteLine("поток CerditType1_Thread {0} работает", this._number); var credit = _creditDao.Get(bankBook.CreditId); Console.WriteLine("{0}", credit.AllSum); bankBook.cache = (short) (bankBook.cache - credit.PayMounth); if (_creditDao.Get(bankBook.CreditId).PayCount == 0) if ((short) (_debtDao.Get(credit.DebtsId.Value).Debt) == (0)) { Console.WriteLine("Время кредита истекло, долг = 0, кредит закрыть"); credit.Status = "1"; _creditDao.CreateOrUpdate(credit); _mut.ReleaseMutex(); return; } // если кредит закрыт и долг равен 0 else { Console.WriteLine("Время кредита истекло, долг != 0, кредит открыт"); _mut.ReleaseMutex(); return; } if (credit.PayCount != 0) // кредит открыт { if (bankBook.cache <= 0) { Debts debt = _debtDao.Get(credit.DebtsId.Value); if (debt != null) { debt.Debt = (short) (debt.Debt + (-1)*bankBook.cache); bankBook.cache = 0; _bookDao.CreateOrUpdate(bankBook); _debtDao.CreateOrUpdate(debt); } else { debt = new Debts { Id = Guid.NewGuid(), Debt = (short) ((-1)*bankBook.cache) }; bankBook.cache = 0; _bookDao.CreateOrUpdate(bankBook); credit.DebtsId = debt.Id; _creditDao.CreateOrUpdate(credit); _debtDao.CreateOrUpdate(debt); } credit.PayCount--; _creditDao.CreateOrUpdate(credit); if (credit.PayCount == 0) { if ((short) (_debtDao.Get(credit.DebtsId.Value).Debt) == (0)) { Console.WriteLine("Время кредита истекло, долг = 0, кредит закрыть"); credit.Status = "1"; _creditDao.CreateOrUpdate(credit); } // если кредит закрыт и долг равен 0 else { Console.WriteLine("Время кредита истекло, долг != 0({0}), кредит открыт", debt.Debt); //Console.WriteLine("долг != 0, кредит открыт"); } } } } } _mut.ReleaseMutex(); }