public void CreateLoanRequest(Client client, LoanProduct loanProduct, decimal amount, int months) { Contract.Requires <ArgumentNullException>(client.IsNotNull()); Contract.Requires <ArgumentNullException>(loanProduct.IsNotNull()); VerifyWorkFlow(client, loanProduct); LoanRequest loanRequest = LoanRequest.Create(client, loanProduct, amount, months); this.TryApproveAndTakeLoanOnCreation(loanRequest); this.gangsterBankUnitOfWork.LoanRequestsRepository.CreateOrUpdate(loanRequest); }