public void TestFixtureSetUp()
        {
            ProvisioningTable.GetInstance(new User()).Add(new ProvisioningRate { Number = 1, NbOfDaysMin = 0, NbOfDaysMax = 1000, Rate = 0 });
            ApplicationSettings.GetInstance("").DeleteAllParameters();
            ApplicationSettings.GetInstance("").AddParameter(OGeneralSettings.ACCOUNTINGPROCESS, OAccountingProcesses.Cash);
            ApplicationSettings.GetInstance("").AddParameter(OGeneralSettings.USECENTS, true);

            ApplicationSettings.GetInstance("").AddParameter(OGeneralSettings.CALCULATIONLATEFEESDURINGPUBLICHOLIDAYS, true);
            ApplicationSettings.GetInstance("").AddParameter(OGeneralSettings.DONOTSKIPWEEKENDSININSTALLMENTSDATE, false);
            ApplicationSettings.GetInstance("").AddParameter(OGeneralSettings.INCREMENTALDURINGDAYOFF, true);

            TechnicalSettings.UseOnlineMode = false;

            projectManager = new ProjectManager(DataUtil.TESTDB);
            creditManagement = new CreditContractManagement(DataUtil.TESTDB);
            installmentManagement = new InstallmentManager(DataUtil.TESTDB);
            clientManagement = new ClientManager(DataUtil.TESTDB);
            connectionManager = ConnectionManager.GetInstance(DataUtil.TESTDB);
            fundingLineManager = new FundingLineManager(DataUtil.TESTDB);
            userManager = new UserManager(DataUtil.TESTDB);
            _packageManager = new LoanProductManager(DataUtil.TESTDB);

            installment1 = new Installment();
            installment1.Number = 1;
            installment1.CapitalRepayment = 200;
            installment1.InterestsRepayment = 100;
            installment1.PaidCapital = 200;
            installment1.PaidInterests = 100;
            //to initialize Installment.FeesUnpaid, ocurrency is an object, must be initialized
            installment1.FeesUnpaid = 0;
            installment1.ExpectedDate = DateTime.Today.AddDays(-1);

            installment2 = new Installment();
            installment2.Number = 2;
            installment2.CapitalRepayment = 200;
            installment2.InterestsRepayment = 100;
            installment2.PaidCapital = 0;
            installment2.PaidInterests = 100;
            //to initialize Installment.FeesUnpaid, ocurrency is an object, must be initialized
            installment2.FeesUnpaid = 0;
            installment2.ExpectedDate = DateTime.Today.AddMonths(1);
        }
        public void TestSearchContractInDatabaseWithStartDateSetAndLoanOfficerFilterActiveButCurrentUserIsAdmin()
        {
            ApplicationSettings dataParam = ApplicationSettings.GetInstance("");
            dataParam.DeleteAllParameters();
            dataParam.AddParameter(OGeneralSettings.LOANOFFICERPORTFOLIOFILTER, false);
            dataParam.AddParameter(OGeneralSettings.ACCOUNTINGPROCESS, OAccountingProcesses.Cash);
            dataParam.AddParameter(OGeneralSettings.USECENTS, true);

            User _user = new User();
            _user.Id = this.addDataForTesting.AddUserWithMaximumAttributs();
            _user.Role = User.Roles.ADMIN;
            FundingLine fund = new FundingLine();
            fund.Purpose = "Microsoft financement";
            fund.Name = "AFD130";
            fund.Deleted = false;
            fund.StartDate = DateTime.Now;
            fund.EndDate = DateTime.Now;
            fund.Currency = new Currency { Id = 1 };
            fundingLineManager.AddFundingLine(fund, null);
            credit.FundingLine = fund;
            creditManagement.AddCredit(credit, _project.Id, null);
            credit.LoanOfficer = _user;
            creditManagement.AddCredit(credit, _project.Id, null);

            Assert.AreEqual(2, creditManagement.SearchCreditInDatabase(1, null).Count);

            dataParam.DeleteAllParameters();
            dataParam.AddParameter(OGeneralSettings.LOANOFFICERPORTFOLIOFILTER, true);
            dataParam.AddParameter(OGeneralSettings.ACCOUNTINGPROCESS, OAccountingProcesses.Cash);
            dataParam.AddParameter(OGeneralSettings.USECENTS, true);
            User.CurrentUser = new User();
            User.CurrentUser.Id = _user.Id;
            User.CurrentUser.Role = User.Roles.ADMIN;

            CreditContractManagement manager = new CreditContractManagement(DataUtil.TESTDB, User.CurrentUser);
            Assert.AreEqual(2, manager.SearchCreditInDatabase(1, null).Count);
        }
        public void TestSelectAllDisbursmentAlertWhenStartDateLowerThanTodayAndDisbursedFalseAndLoanOfficerFilterActive()
        {
            ApplicationSettings dataParam = ApplicationSettings.GetInstance("");
            dataParam.DeleteAllParameters();
            dataParam.AddParameter(OGeneralSettings.LOANOFFICERPORTFOLIOFILTER, false);
            dataParam.AddParameter(OGeneralSettings.ACCOUNTINGPROCESS, OAccountingProcesses.Cash);
            dataParam.AddParameter(OGeneralSettings.USECENTS, true);
            FundingLine fund = new FundingLine();
            fund.Purpose = "Microsoft financement";
            fund.Name = "AFD130";
            fund.Deleted = false;
            fund.StartDate = DateTime.Now;
            fund.EndDate = DateTime.Now;
            fund.Currency = new Currency { Id = 1 };
            fundingLineManager.AddFundingLine(fund, null);
            credit.FundingLine = fund;
            creditManagement.AddCredit(credit, _project.Id, null);

            User _user = new User();
            _user.Id = this.addDataForTesting.AddUserWithMaximumAttributs();
            credit.LoanOfficer = _user;
            creditManagement.AddCredit(credit, _project.Id, null);

            AlertStock alertStock = creditManagement.SelectAllAlerts("");
            Assert.AreEqual(2, alertStock.GetNumberOfAlerts);

            User.CurrentUser = new User();
            User.CurrentUser.Id = this.user.Id;
            User.CurrentUser.Role = User.Roles.LOF;

            dataParam.DeleteAllParameters();
            dataParam.AddParameter(OGeneralSettings.LOANOFFICERPORTFOLIOFILTER, true);
            dataParam.AddParameter(OGeneralSettings.ACCOUNTINGPROCESS, OAccountingProcesses.Cash);
            dataParam.AddParameter(OGeneralSettings.USECENTS, true);

            FundingLine fund0 = new FundingLine();
            fund0.Purpose = "Microsoft financement";
            fund0.Name = "AFD130";
            fund0.Deleted = false;
            fund0.StartDate = DateTime.Now;
            fund0.EndDate = DateTime.Now;
            fund0.Currency = new Currency { Id = 1 };
            fundingLineManager.AddFundingLine(fund0, null);
            credit.FundingLine = fund0;

            CreditContractManagement manager = new CreditContractManagement(DataUtil.TESTDB, User.CurrentUser);
            AlertStock alertStock2 = manager.SelectAllAlerts("");
            Assert.AreEqual(1, alertStock2.GetNumberOfAlerts);
        }