Exemple #1
0
        /// <summary>
        /// Constructor
        /// </summary>
        public LibraryForm()
        {
            InitializeComponent();

            // we create only one context in our application, which gets shared among repositories
            LibraryContext context = new LibraryContext();
            // we use a factory object that will create the repositories as they are needed, it also makes
            // sure all the repositories created use the same context.
            RepositoryFactory repFactory = new RepositoryFactory(context);

            this.bookService     = new BookService(repFactory);
            this.authorService   = new AuthorService(repFactory);
            this.memberService   = new MemberService(repFactory);
            this.loanService     = new LoanService(repFactory);
            this.bookCopyService = new BookCopyService(repFactory);
            ShowAllBooks(bookService.All());
            ShowAllAuthors(authorService.All());
            ShowAllMembers(memberService.All());
            ShowActiveLoans(loanService.GetActiveLoans());

            //Observers
            bookService.Updated       += OnChanged;
            authorService.Updated     += OnChanged;
            memberService.Updated     += OnChanged;
            loanService.Updated       += OnChanged;
            bookCopyService.Updated   += OnChanged;
            loanService.Updated       += new EventHandler(OnChangedLoanState);
            rbActive.CheckedChanged   += new EventHandler(OnChangedLoanState);
            rbReturned.CheckedChanged += new EventHandler(OnChangedLoanState);
            rbOverdue.CheckedChanged  += new EventHandler(OnChangedLoanState);
        }
Exemple #2
0
        public LibraryForm()
        {
            InitializeComponent();

            RepositoryFactory repoFactory = new RepositoryFactory();

            _bookService     = new BookService(repoFactory);
            _bookCopyService = new BookCopyService(repoFactory);
            _authorService   = new AuthorService(repoFactory);
            _loanService     = new LoanService(repoFactory);
            _memberService   = new MemberService(repoFactory);


            //Subscribe to event
            _bookService.Updated     += ListAllBooks;
            _bookCopyService.Updated += ListAllBookCopies;
            _authorService.Updated   += ListAllAuthors;
            _loanService.Updated     += ListAllLoans;
            _memberService.Updated   += ListAllMembers;

            //Call the event to print to print the "test-objects"
            _authorService.OnChanged(this, EventArgs.Empty);
            _bookService.OnChanged(this, EventArgs.Empty);
            _bookCopyService.OnChanged(this, EventArgs.Empty);
            _loanService.OnChanged(this, EventArgs.Empty);
            _memberService.OnChanged(this, EventArgs.Empty);
        }
        private bool ValidateLookup()
        {
            if (string.IsNullOrWhiteSpace(txt.Text))
            {
                ObjectID = 0;
                return(true);
            }

            if (LookupType == LookupType.Contact && ObjectID.HasValue && ObjectID.Value > 0)
            {
                var loanService = new LoanService(User);
                var contact     = loanService.GetContact(ObjectID.Value);
                if (contact != null)
                {
                    if (LoanService.FormatName(contact).Equals(txt.Text, StringComparison.CurrentCultureIgnoreCase))
                    {
                        return(true);
                    }
                }
            }

            var service       = new SupportService(User);
            var lookupResults = service.LookupSearch(txt.Text, LookupType);

            if (lookupResults != null && lookupResults.Count >= 1)
            {
                return(lookupResults.Any(result => ObjectID == result.ObjectID));
            }

            return(false);
        }
Exemple #4
0
        public void LoanService_Add_ShouldBeOK()
        {
            //Cenário
            //Modelo
            Loan modelo = ObjectMother.GetLoan();

            modelo.Book = _book;

            //Mock
            _mockRepository.Setup(m => m.Save(modelo)).Returns(new Loan()
            {
                Id = 1
            });
            //Serviço
            LoanService service = new LoanService(_mockRepository.Object);
            // Fim Cenario

            //Executa
            Loan resultado = service.Add(modelo);

            //Saída
            resultado.Should().NotBeNull();
            resultado.Id.Should().BeGreaterThan(0);
            _mockRepository.Verify(repository => repository.Save(modelo));
        }
Exemple #5
0
        public void LoanService_Update_ShouldBeOk()
        {
            //Cenário
            //Modelo
            Loan modelo = ObjectMother.GetLoan();

            modelo.Id   = 1;
            modelo.Book = _book;

            //Mock
            _mockRepository.Setup(m => m.Update(modelo)).Returns(new Loan()
            {
                Id = 1, ClientName = "Cliente"
            });
            //Serviço
            LoanService service = new LoanService(_mockRepository.Object);
            // Fim Cenario

            //Executa
            Loan resultado = service.Update(modelo);

            //Saída
            resultado.Should().NotBeNull();
            resultado.ClientName.Should().Be(modelo.ClientName);
            _mockRepository.Verify(repository => repository.Update(modelo));
        }
 public LoanController(ILoanView view, IList loanList)//
 {
     _view      = view;
     _LoansList = loanList;
     view.SetController(this);
     loanService = new LoanService();
 }
Exemple #7
0
        /// <summary>
        /// Constructor of form.
        /// </summary>
        public LibraryForm()
        {
            InitializeComponent();

            // Register derived strategy with seed method
            Database.SetInitializer <LibraryContext>(new LibraryDbInit());

            // We create only one context in our application, which gets shared among repositories
            LibraryContext context = new LibraryContext();

            // We use a factory object that will create the repositories as they are needed, it also makes
            // sure all the repositories created use the same context.
            RepositoryFactory repFactory = new RepositoryFactory(context);

            this.bookService   = new BookService(repFactory);
            this.authorService = new AuthorService(repFactory);
            this.copyService   = new BookCopyService(repFactory);
            this.memberService = new MemberService(repFactory);
            this.loanService   = new LoanService(repFactory);

            // All objects that should show up at the start.
            ShowAllAuthors(authorService.All());
            ShowAllBooks(bookService.All(), lbBooks);
            ShowAllBooks(bookService.All(), lbOfBooks);
            ShowAllMembers(memberService.All());
            ShowAllLoans(loanService.All());
            ShowAllCopies(CopyNotOnLoan(), lbCopies);

            // Subscribe to event
            bookService.Updated   += BookService_Updated;
            copyService.Updated   += CopyService_Updated;
            authorService.Updated += AuthorService_Updated;
            memberService.Updated += MemberService_Updated;
            loanService.Updated   += LoanService_Updated;
        }
Exemple #8
0
        public async Task ThrowExeptionWhenPhoneNumberIsNullInFormForLoan_Test()
        {
            var loanUtil = LoanGeneratorUtil.GenerateLoan();

            loanUtil.PhoneNumber = null;

            var mockEncodeDecodeService = new Mock <IEncodeDecodeService>().Object;

            var options = TestUtilities.GetOptions(nameof(ThrowExeptionWhenPhoneNumberIsNullInFormForLoan_Test));

            using (var actContext = new E_MailApplicationsManagerContext(options))
            {
                var loanDto = new LoanApplicantDto
                {
                    Name        = loanUtil.Name,
                    EGN         = loanUtil.EGN,
                    PhoneNumber = loanUtil.PhoneNumber,
                    GmailId     = loanUtil.GmailId
                };


                var sut = new LoanService(actContext, mockEncodeDecodeService);

                await sut.FillInFormForLoanAsync(loanDto);
            }
        }
        protected override void ProcessImpl(User user)
        {
            var service = new LoanService(user);

            Model.LoanID         = Loan.LoanID;
            Model.LoanMaterialID = service.InsertLoanMaterial(Model);
        }
Exemple #10
0
        public LibraryForm()
        {
            InitializeComponent();

            // we create only one context in our application, which gets shared among repositories
            LibraryContext context = new LibraryContext();
            // we use a factory object that will create the repositories as they are needed, it also makes
            // sure all the repositories created use the same context.
            RepositoryFactory repFactory = new RepositoryFactory(context);

            bookService         = new BookService(repFactory);
            copyService         = new BookCopyService(repFactory);
            authorService       = new AuthorService(repFactory);
            memberService       = new MemberService(repFactory);
            returnedLoanService = new ReturnedLoanService(repFactory);
            loanService         = new LoanService(repFactory, returnedLoanService);

            ShowAllBooks(bookService.All());
            ShowAllBookCopies(copyService.All());
            ShowAllMembers(memberService.All());
            ShowAllAuthors(authorService.All());
            ShowAllLoans(loanService.All());
            ShowAllAvailableBooks(copyService.All(), loanService.All());
            ShowAllOverDueBooks(copyService.All());

            bookService.Updated                  += BookService_Updated;
            authorService.Updated                += AuthorService_Updated;
            copyService.Updated                  += CopyService_Updated;
            memberService.Updated                += MemberService_Updated;
            loanService.Updated                  += LoanService_Updated;
            backgroundWorker1.DoWork             += BackgroundWorker1_DoWork;
            backgroundWorker1.RunWorkerCompleted += BackgroundWorker1_RunWorkerCompleted;
        }
        public async Task LoanService_GetDefaultLoans_GetLoanApiType()
        {
            var service = new LoanService();
            var loans   = await service.GetDefaultLoans();

            Assert.IsInstanceOfType(loans.FirstOrDefault(), typeof(LoanApi));
        }
        public void LoanService_ReturnOneBook_CountNrOneOnLoanList()
        {
            //Arrange

            var options = new DbContextOptionsBuilder <ApplicationDbContext>()
                          .UseInMemoryDatabase("MDLibrary_ReturnOneBook")
                          .Options;

            var context = new ApplicationDbContext(options);

            var testLoanService = new LoanService(context);

            context.Member.Add(new Member {
                ID = 1
            });
            context.Loan.Add(new Loan {
                ID = 1, MemberID = 1
            });
            context.LoanBook.AddRange(new LoanBook {
                BookCopyID = 1, LoanID = 1
            }, new LoanBook {
                BookCopyID = 2, LoanID = 1
            });

            context.SaveChanges();

            var expectedResult = 1;

            //Act
            testLoanService.ReturnOneBook(1);
            var actualResult = context.LoanBook.ToList().Count;

            //Assert
            Assert.Equal(expectedResult, actualResult);
        }
Exemple #13
0
        public LibraryForm()
        {
            InitializeComponent();

            // we create only one context in our application, which gets shared among repositories
            LibraryContext context = new LibraryContext();
            // we use a factory object that will create the repositories as they are needed, it also makes
            // sure all the repositories created use the same context.
            RepositoryFactory repFactory = new RepositoryFactory(context);

            this.bookService     = new BookService(repFactory);
            this.bookCopyService = new BookCopyService(repFactory);
            this.authorService   = new AuthorService(repFactory);
            this.memberService   = new MemberService(repFactory);
            this.loanService     = new LoanService(repFactory);

            //Can we do this another way?
            ShowAllBooks(bookService.All());
            AuthorTabShowAllAuthors(authorService.All());
            BookTabShowAllAuthors(authorService.All());
            MemberTabShowAllMembers(memberService.All());
            BookTabBooksByAuthor(authorService.All());
            ShowAllBooksInComboBox(bookService.All());
            LoanTabShowMembers(memberService.All());
            LoanTabShowCopies(bookCopyService.GetAvailableBookCopies(loanService.All(), bookCopyService.All()));
            ShowAllLoans(loanService.GetAllCurrentLoans(), loanService.GetAllPreviousLoans(), loanService.GetAllOverdueLoans());
            LoanTabShowLoansByMember(memberService.All());

            TEST(loanService.All(), bookCopyService.All());
        }
Exemple #14
0
        private LoanService CreateLoanService()
        {
            var userID  = Guid.Parse(User.Identity.GetUserId());
            var service = new LoanService(userID);

            return(service);
        }
Exemple #15
0
        private string ChooseFilename(Loan loan, Multimedia template)
        {
            var dlg        = new SaveFileDialog();
            var defaultDir = Config.GetUser(User, "Loans.Forms.DefaultOutputDirectory", dlg.InitialDirectory);

            if (!string.IsNullOrWhiteSpace(defaultDir))
            {
                var dirinfo = new DirectoryInfo(defaultDir);
                if (dirinfo.Exists)
                {
                    dlg.InitialDirectory = dirinfo.FullName;
                }
            }

            var borrowerName = LoanService.FormatName("", loan.RequestorGivenName, loan.RequestorName);

            dlg.FileName = SystemUtils.StripIllegalFilenameChars(string.Format("{0}_{1}_{2:yyyy-MM-dd}.{3}", loan.LoanNumber, borrowerName, DateTime.Now, template.FileExtension));
            if (dlg.ShowDialog() == true)
            {
                var finfo = new FileInfo(dlg.FileName);
                Config.SetUser(User, "Loans.Forms.DefaultOutputDirectory", finfo.DirectoryName);
                return(dlg.FileName);
            }
            return(null);
        }
Exemple #16
0
        public async Task FillInFormForLoan_Test()
        {
            var loanUtil = LoanGeneratorUtil.GenerateLoan();

            var firstEmail = EmailGeneratorUtil.GenerateEmailFirst();

            var mockEncodeDecodeService = new Mock <IEncodeDecodeService>().Object;

            var options = TestUtilities.GetOptions(nameof(FillInFormForLoan_Test));

            using (var actContext = new E_MailApplicationsManagerContext(options))
            {
                var email = await actContext.Emails.AddAsync(firstEmail);

                await actContext.SaveChangesAsync();

                var loanDto = new LoanApplicantDto
                {
                    Name        = loanUtil.Name,
                    EGN         = loanUtil.EGN,
                    PhoneNumber = loanUtil.PhoneNumber,
                    GmailId     = loanUtil.GmailId,
                    UserId      = loanUtil.GmailId
                };

                var sut = new LoanService(actContext, mockEncodeDecodeService);

                var result = await sut.FillInFormForLoanAsync(loanDto);

                Assert.IsNotNull(result);
            }
        }
Exemple #17
0
        public void Loan_One_Item_To_Member()
        {
            // Arrange
            LoanService _loanService = new LoanService();
            Item        item         = new Item {
                Id = Guid.NewGuid(), CategoryId = Guid.NewGuid(), SectionId = Guid.NewGuid(), Code = "ADLTBOOKBROW0001", Title = "The Lost Symbol", Author = "Dan Brown", ISBN = "9780593054277", Status = ItemStatus.OnShelf
            };
            Member member = new Member {
                Id = Guid.NewGuid(), Code = "BROWN19800617001", Title = "Mr", Forename = "Alan", Surname = "Shearer", Gender = "M", DOB = new DateTime(1979, 06, 23), Address = "1 High Street", City = "Newcastle", Postcode = "N1 1AS", Email = "*****@*****.**", Mobile = "09868390914", Telephone = "1927 9845983", MaxItems = 6, Loans = new List <Loan> {
                }
            };
            Loan loan = new Loan {
                Id = Guid.NewGuid()
            };

            // Act
            bool result = _loanService.Loan(item, member, loan);

            // Assert
            Assert.AreEqual(item.Id, loan.ItemId);
            Assert.AreEqual(member.Id, loan.MemberId);
            Assert.AreEqual(DateTime.Now.Date, loan.LoanDate);
            Assert.AreEqual(DateTime.Now.Date.AddDays(21), loan.DueDate);
            Assert.AreEqual(ItemStatus.OnLoan, item.Status);
            CollectionAssert.Contains(member.Loans, loan);
        }
        public App()
        {
            var accountRepository = new AccountRepository(
                new CSVStream <Account>(ACCOUNT_FILE, new AccountCSVConverter(CSV_DELIMITER)),
                new LongSequencer());
            var clientRepository = new ClientRepository(
                new CSVStream <Client>(CLIENT_FILE, new ClientCSVConverter(CSV_DELIMITER, DATETIME_FORMAT)),
                new LongSequencer(),
                accountRepository);
            var loanRepository = new LoanRepository(
                new CSVStream <Loan>(LOAN_FILE, new LoanCSVConverter(CSV_DELIMITER, DATETIME_FORMAT)),
                new LongSequencer(),
                clientRepository);
            var transactionRepository = new TransactionRepository(
                new CSVStream <Transaction>(TRANSACTION_FILE, new TransactionCSVConverter(CSV_DELIMITER, DATETIME_FORMAT)),
                new LongSequencer(),
                clientRepository);


            var accountService     = new AccountService(accountRepository);
            var clientService      = new ClientService(clientRepository, accountService);
            var loanService        = new LoanService(loanRepository, clientService);
            var transactionService = new TransactionService(transactionRepository, clientService);

            AccountController     = new AccountController(accountService);
            ClientController      = new ClientController(clientService);
            LoanController        = new LoanController(loanService);
            TransactionController = new TransactionController(transactionService);
        }
Exemple #19
0
        public void Can_Student_Take_Loan_When_Has_Loan_Already()
        {
            //Arrange

            LoanDto loanDto = new LoanDto {
                LoanAmount = 600, UserId = 1
            };

            bankAccountRepositoryMock.Setup(x => x.GetSingle(It.Is <int>(y => y.Equals(loanDto.UserId)), u => u.ApplicationIdentityUser, t => t.BankAccountType)).Returns(new BankAccount()
            {
                Id = 4, BankAccountType = new BankAccountType {
                    Name = BankAccountTypeEnum.Student.ToString("G")
                }
            });
            loanRepositoryMock.Setup(x => x.GetAll()).Returns(new Loan[] { new Loan {
                                                                               BankAccountId = 4
                                                                           } }.AsQueryable);
            //Act
            var obj    = new LoanService(loanRepositoryMock.Object, bankAccountRepositoryMock.Object, loanInstallmentRepositoryMock.Object, bankAccountServiceMock.Object);
            var result = obj.TakeLoan(loanDto);

            //Assert
            Assert.IsNotNull(result);
            Assert.AreEqual(false, result.Success);
            Assert.AreEqual("You cannot take more loans - upgrade your bank account or contact support", result.Message);
        }
        public LibraryForm()
        {
            InitializeComponent();

            // we create only one context in our application, which gets shared among repositories
            LibraryContext context = new LibraryContext();
            // we use a factory object that will create the repositories as they are needed, it also makes
            // sure all the repositories created use the same context.
            RepositoryFactory repFactory = new RepositoryFactory(context);

            this.bookService     = new BookService(repFactory);
            this.bookCopyService = new BookCopyService(repFactory);
            this.authorService   = new AuthorService(repFactory);
            this.memberService   = new MemberService(repFactory);
            this.loanService     = new LoanService(repFactory);

            //Adds event listener to bookService.
            this.bookService.Updated     += UpdateBookListEvent;
            this.bookCopyService.Updated += UpdateBookCopyListEvent;
            this.authorService.Updated   += UpdatedAuthorEvent;
            this.memberService.Updated   += UpdateMemberListEvent;
            this.loanService.Updated     += UpdatedLoansEvent;

            UpdateBookList(bookService.All().ToList());
            currentBookDisplay     = bookService.All().ToList();
            currentBookCopyDisplay = new List <BookCopy>();
            currentMemberDisplay   = memberService.All().ToList();
            currentLoanDisplay     = loanService.All().ToList();

            SetAllColors();
            editAuthorTB.AutoCompleteCustomSource.AddRange(authorService.GetAllAuthorNames().ToArray()); //Adds all the current authors to autocomplete list.
        }
        private async void LoanSaveButton_Click(object sender, RoutedEventArgs e)
        {
            loan _loan = getLoanData();

            if (_viewmode.Equals(Mode.NEW))
            {
                if (LoanService.InsertLoan(_loan) == 1)
                {
                    await MainWindow.Instance.ShowMessageAsync(Messages.TTL_MSG, "Loan Added Success!", MessageDialogStyle.Affirmative);

                    //SendConfirmationSMS();
                    clearLoanIssuePage();
                    MultiSearch.Instance.ClearSearchResult();
                }
                else
                {
                    await MainWindow.Instance.ShowMessageAsync(Messages.TTL_MSG, "Please check Deatails", MessageDialogStyle.Affirmative);
                }
            }
            if (_viewmode.Equals(Mode.EDIT))
            {
                _loan.ID = Session.SelectedLoan.ID;

                if (LoanService.UpdateLoan(_loan) == 1)
                {
                    await MainWindow.Instance.ShowMessageAsync(Messages.TTL_MSG, "Loan Edit Success!", MessageDialogStyle.Affirmative);

                    //SendConfirmationSMS();
                }
                else
                {
                    await MainWindow.Instance.ShowMessageAsync(Messages.TTL_MSG, "Please check Deatails", MessageDialogStyle.Affirmative);
                }
            }
        }
Exemple #22
0
        public void Cannot_Transfer_Cash_When_Taking_Loan()
        {
            //Arrange
            LoanDto loanDto = new LoanDto {
                LoanAmount = 600, UserId = 1
            };

            bankAccountRepositoryMock.Setup(x => x.GetSingle(It.Is <int>(y => y.Equals(loanDto.UserId)), u => u.ApplicationIdentityUser, t => t.BankAccountType)).Returns(new BankAccount()
            {
                Id = 4, BankAccountType = new BankAccountType {
                    Name = BankAccountTypeEnum.Corporate.ToString("G")
                }
            });
            loanRepositoryMock.Setup(x => x.GetAll()).Returns(new Loan[] { new Loan {
                                                                               BankAccountId = 4
                                                                           }, new Loan {
                                                                               BankAccountId = 4
                                                                           } }.AsQueryable);
            loanRepositoryMock.Setup(x => x.CreateAndReturnId(It.IsAny <Loan>())).Returns(222);
            bankAccountServiceMock.Setup(x => x.GiveCash(It.Is <decimal>(c => c.Equals(loanDto.LoanAmount)), It.Is <int>(y => y.Equals(loanDto.UserId)))).Returns(false);
            //Act
            var obj    = new LoanService(loanRepositoryMock.Object, bankAccountRepositoryMock.Object, loanInstallmentRepositoryMock.Object, bankAccountServiceMock.Object);
            var result = obj.TakeLoan(loanDto);

            //Assert
            Assert.IsNotNull(result);
            Assert.AreEqual(false, result.Success);
            Assert.AreEqual("There was a problem with money transfer. Contact support", result.Message);
        }
        public void LoanOutBook_AddOneLoanToEmptyList_CountNrOne()
        {
            //Arrange
            var options = new DbContextOptionsBuilder <ApplicationDbContext>()
                          .UseInMemoryDatabase("MDLibrary_LoanOutBook")
                          .Options;

            var context = new ApplicationDbContext(options);

            var testLoanService = new LoanService(context);
            var expectedResult  = 1;

            var newLoan = new Loan()
            {
                ID = 1, MemberID = 1
            };

            newLoan.BookCopies = new List <BookCopy> {
                new BookCopy()
                {
                    ID = 2
                }
            };

            //Act
            testLoanService.LoanOutBook(newLoan);
            var actualResult = context.Loan
                               .Where(l => l.ID == 1).ToList().Count;

            //Assert
            Assert.Equal(expectedResult, actualResult);
        }
Exemple #24
0
        public LibraryForm()
        {
            InitializeComponent();

            // we create only one context in our application, which gets shared among repositories
            LibraryContext context = new LibraryContext();
            // we use a factory object that will create the repositories as they are needed, it also makes
            // sure all the repositories created use the same context.
            RepositoryFactory repFactory = new RepositoryFactory(context);

            // Service intialization
            this.bookService     = new BookService(repFactory);
            this.authorService   = new AuthorService(repFactory);
            this.bookCopyService = new BookCopyService(repFactory);
            this.memberService   = new MemberService(repFactory);
            this.loanService     = new LoanService(repFactory);

            // Event declaration
            this.bookService.Updated     += BookService_Updated;
            this.authorService.Updated   += AuthorService_Updated;
            this.memberService.Updated   += MemberService_Updated;
            this.loanService.Updated     += LoanService_Updated;
            this.bookCopyService.Updated += BookCopyService_Updated;

            // Start up methods that populate the lists
            ShowAllBooks(bookService.All());
            ShowAllAuthors(authorService.All());
            ShowAvailableCopies(bookCopyService.AllAvailable());
        }
Exemple #25
0
        protected override void ProcessImpl(User user)
        {
            var service = new LoanService(user);

            Model.LoanID = Loan.LoanID;
            service.InsertLoanCorrespondence(Model);
        }
        public LoanHistory(LoanService ls)
        {
            loanService = ls;
            InitializeComponent();

            loanService.Updated += LoanService_Updated;
            ShowAllLoans(loanService.All());
        }
        public void Initialize()
        {
            _mockLoanRepository = new Mock <ILoanRepository>();
            _loanService        = new LoanService(_mockLoanRepository.Object);

            _book = ObjectMother.GetBookOK();
            _loan = ObjectMother.GetLoanOk(_book);
        }
        public void Initialize()
        {
            BaseSqlTests.SeedDatabase();
            _loanRepository = new LoanRepository();
            _loanService    = new LoanService(_loanRepository);

            _book = ObjectMother.GetBookOK();
        }
            public void Setup()
            {
                Fixture = new Fixture();

                CalculateServiceMock = new Mock <ICalculateService>();

                Service = new LoanService(CalculateServiceMock.Object);
            }
Exemple #30
0
        public ActionResult Index()
        {
            var userID  = Guid.Parse(User.Identity.GetUserId());
            var service = new LoanService(userID);
            var model   = service.GetLoans();

            return(View(model));
        }
Exemple #31
0
        TestResult AddLoan()
        {
            using (var unitOfWork = new UnitOfWork(new BankModuleFactory(true)))
            {
                var RouteService = new ConsiderationRouteService(unitOfWork);
                var LoanService = new LoanService(unitOfWork);

                Loan testLoan = new Loan
                {
                    ConsiderationRoute = RouteService.Get().First(),
                    LoanPrepayment = LoanPrepayments.InterestForActuallyUsedTerm,
                    LoanGuarantee = LoanGuarantees.Surety,
                    LoanProviding = LoanProvidings.RevolvingCreditLine,
                    LoanRepayment = LoanRepayments.Annuity,
                    LoanType = LoanTypes.DebtConsolidation,
                    MaxAmount = 1334m,
                    Currency = "BLR",
                    MinIncome = 100000m,
                    MonthlyFee = 5m,
                    IsFixedRateOfInterest = true,
                    ProcessingFee = 0.5m,
                    MaxTerm = 24,
                    RateOfInterest = 5,
                    MinScoringPoint = 5,
                    Name = "TestCredit",
                    FineRateOfInterest = 2m,
                    Description = "Test Credit Description",
                    IsObsolete = false
                };

                LoanService.Add(testLoan);
                try
                {
                    var result = unitOfWork.Commit();
                    if (result.Count > 0)
                        return new TestResult(TestResultType.Failure, MethodBase.GetCurrentMethod().Name, result.First().ErrorMessage);
                }
                catch (Exception ex)
                {
                    while (ex.InnerException != null)
                        ex = ex.InnerException;
                    return new TestResult(TestResultType.Failure, MethodBase.GetCurrentMethod().Name, ex.Message);
                }
            }

            using (var unitOfWork = new UnitOfWork(new BankModuleFactory(false)))
            {
                var LoanService = new LoanService(unitOfWork);
                Loan testLoan = LoanService.Get(loan => loan.Name == "TestCredit" && loan.Description == "Test Credit Description").FirstOrDefault();
                if(testLoan == null)
                    return new TestResult(TestResultType.Failure, MethodBase.GetCurrentMethod().Name, "Can't find added loan.");
                else
                    return new TestResult(TestResultType.Success, MethodBase.GetCurrentMethod().Name, "Loan added successfully.");
            }
        }
Exemple #32
0
        TestResult DeleteLoan()
        {
            using (var unitOfWork = new UnitOfWork(new BankModuleFactory(false)))
            {
                var LoanService = new LoanService(unitOfWork);
                var testLoan = LoanService.Get(loan => loan.Name == "TestCredit++"
                    && loan.Description == "Test Credit Description").FirstOrDefault();
                LoanService.Delete(testLoan);

                try
                {
                    var result = unitOfWork.Commit();
                    if (result.Count > 0)
                        return new TestResult(TestResultType.Failure, MethodBase.GetCurrentMethod().Name, result.First().ErrorMessage);
                }
                catch (Exception ex)
                {
                    while (ex.InnerException != null)
                        ex = ex.InnerException;
                    return new TestResult(TestResultType.Failure, MethodBase.GetCurrentMethod().Name, ex.Message);
                }

            }

            using (var unitOfWork = new UnitOfWork(new BankModuleFactory(false)))
            {
                var LoanService = new LoanService(unitOfWork);
                Loan testLoan = LoanService.Get(loan => loan.Name == "TestCredit++" && loan.Description == "Test Credit Description").FirstOrDefault();
                if (testLoan != null)
                    return new TestResult(TestResultType.Failure, MethodBase.GetCurrentMethod().Name, "Can find deleted loan.");
                else
                    return new TestResult(TestResultType.Success, MethodBase.GetCurrentMethod().Name, "Loan deleted successfully.");
            }
        }
Exemple #33
0
        static void Main(string[] args)
        {
            bool useAutoGeneration = false;
            bool useTests = false;
            bool useInitializers = true;

            if(useAutoGeneration)
            {
                using (var unitOfWork = new UnitOfWork(new BankModuleFactory(useInitializers)))
                {
                    var LoanApplicationService = new LoanApplicationService(unitOfWork);
                    var LoanAgreementService = new LoanAgreementService(unitOfWork);

                    Console.WriteLine("Автогенерация для заявок:");
                    foreach (var loanApplication in LoanApplicationService.Get())
                    {
                        if (loanApplication.Goal == "Смена гардероба" || loanApplication.Goal == "Пластическая операция" || loanApplication.Additional == "Car loan test"
                            || loanApplication.Additional == "Grad loan test 1" || loanApplication.Additional == "Grad loan test 2")
                        {
                            Console.WriteLine(string.Format("{0} {1} {2}", loanApplication.Client.FirstName, loanApplication.Goal, loanApplication.Term));

                            loanApplication.Status.Stage = ApplicationConsiderationStages.ApplicationConfirmationQueue;
                            LoanApplicationService.ApproveApplication(loanApplication);
                            loanApplication.Status.Stage = ApplicationConsiderationStages.Providing;
                            LoanAgreementService.CompleteAgreement(loanApplication.LoanAgreements.First());
                            unitOfWork.Commit();
                        }
                    }

                    Console.WriteLine("\nРезультаты:\n");
                    foreach (var loanApplication in LoanApplicationService.Get())
                    {
                        if (loanApplication.Goal == "Смена гардероба" || loanApplication.Goal == "Пластическая операция" || loanApplication.Additional == "Car loan test"
                            || loanApplication.Additional == "Grad loan test 1" || loanApplication.Additional == "Grad loan test 2")
                        {
                            Console.WriteLine(string.Format("{0} {1} {2}", loanApplication.Client.FirstName, loanApplication.Goal, loanApplication.Term));
                            Console.WriteLine("Создан кредитный договор:");
                            var loanAgreement = loanApplication.LoanAgreements.First();
                            Console.WriteLine(string.Format("Номер:{0} Кредитный аккаунт:{1} Аккаунт для оплаты:{2}", loanAgreement.Id, loanAgreement.LoanAccount.IBAN,
                                loanAgreement.RepaymentAccount.IBAN));
                            foreach(var bailAgreement in loanApplication.BailAgreements)
                            {
                                Console.WriteLine("Создан договор залога:");
                                Console.WriteLine(string.Format("Номер:{0} Объект:{1} Владелец:{2}", bailAgreement.Id, bailAgreement.BailObject,
                                    bailAgreement.BailObjectHolder));
                            }
                            foreach (var suretyAgreement in loanApplication.SuretyAgreements)
                            {
                                Console.WriteLine("Создан договор поручительства:");
                                Console.WriteLine(string.Format("Номер:{0} Поручитель:{1} Должник:{2}", suretyAgreement.Id, suretyAgreement.Guarantor.FirstName + " " + suretyAgreement.Guarantor.LastName,
                                    suretyAgreement.Client.FirstName));
                            }
                            Console.WriteLine();
                        }
                    }
                }
                System.Console.ReadKey(true);
                return;
            }

            if(useTests)
            {
                Console.WriteLine(new LoanTest().RunTest());
                Console.WriteLine(new UserTest().RunTest());
                System.Console.ReadKey(true);
                return;
            }

            List<LoanApplication> archiveApplications;

            using (var unitOfWork = new UnitOfWork(new BankModuleFactory(useInitializers)))
            {
                var AccountService = new AccountService(unitOfWork);
                Console.WriteLine("Accounts:");
                foreach(var account in AccountService.Get())
                {
                    System.Console.WriteLine(string.Format("{0} {1} {2} {3} Transfers From: {4}  Transfers To:{5}",
                        account.IBAN, account.AccountType, account.MoneyAmount, account.Currency, account.BankTransfersFrom.Count, account.BankTransfersTo.Count));
                }

                var BankTransferService = new BankTransferService(unitOfWork);
                Console.WriteLine("Transfers:");
                foreach (var transfer in BankTransferService.Get(includeProperties: "AccountFrom,AccountTo"))
                    Console.WriteLine(string.Format("From: {0} To: {1} {2} {3} {4}", transfer.AccountFrom.IBAN, transfer.AccountTo.IBAN,
                        transfer.Amount, transfer.Currency, transfer.TransferDate.ToShortDateString()));

                var LoanAgreementService = new LoanAgreementService(unitOfWork);
                Console.WriteLine("Loan Agreements:");
                foreach (var loanAgreement in LoanAgreementService.Get(includeProperties: "PayoutStatus"))
                    Console.WriteLine(string.Format("{0} {1} {2} {3} {4} {5} {6}", loanAgreement.Client.FirstName, loanAgreement.LoanType,
                        loanAgreement.LoanProviding, loanAgreement.LoanRepayment, loanAgreement.Term, loanAgreement.Amount, loanAgreement.Currency));

                var PayoutService = new PayoutService(unitOfWork);
                Console.WriteLine("Payouts:");
                foreach (var payout in PayoutService.Get())
                    Console.WriteLine(string.Format("{0} {1} {2} {3} {4} {5}", payout.PayoutWay, payout.LoanAmount, payout.ProcessingFee,
                        payout.InterestAmount, payout.TotalAmount, payout.Currency));

                var FineService = new FineService(unitOfWork);
                Console.WriteLine("Fines:");
                foreach (var fine in FineService.Get(includeProperties: "LoanAgreement"))
                    Console.WriteLine(string.Format("{0} {1} {2} {3}", fine.LoanAgreement.Id,
                        fine.DeadLineDate.ToShortDateString(), fine.FineRateOfInterest, fine.IsClosed));

                var WithdrawalService = new WithdrawalService(unitOfWork);
                Console.WriteLine("Withdrawals:");
                foreach (var withdrawal in WithdrawalService.Get(includeProperties: "ClientAccount,LoanAgreement"))
                    Console.WriteLine(string.Format("{0} {1} {2} {3} {4}", withdrawal.ClientAccount.Id, withdrawal.MoneyAmount,
                        withdrawal.Currency, withdrawal.WithdrawalWay, withdrawal.Date.ToShortDateString()));

                var PersonService = new PersonService(unitOfWork);
                Console.WriteLine("Persons:");
                foreach (var person in PersonService.Get())
                    Console.WriteLine(string.Format("{0} {1} {2} Documents: {3} Records: {4}", person.FirstName, person.IdentificationNumber,
                        person.MonthlyIncome, person.Documents.Count, person.CreditHistoryRecords.Count));

                var HistoryService = new CreditHistoryRecordService(unitOfWork);
                Console.WriteLine("Records:");
                foreach (var record in HistoryService.Get())
                    Console.WriteLine(string.Format("{0} {1} {2} {3} {4}", record.Person.FirstName, record.BankConstants.BIC,
                        record.Amount, record.Currency, record.Interest));

                var LoanService = new LoanService(unitOfWork);
                Console.WriteLine("Loan programs:");
                foreach (var program in LoanService.Get())
                    Console.WriteLine(string.Format("{0} {1} {2} {3} {4} {5}", program.Name, program.LoanProviding,
                        program.LoanGuarantee, program.LoanRepayment, program.LoanType, program.MaxAmount));

                var LoanApplicationService = new LoanApplicationService(unitOfWork);
                Console.WriteLine("Loan applications:");
                foreach (var loanApplication in LoanApplicationService.Get())
                {
                    Console.WriteLine(string.Format("{0} {1} {2} {3} Time: {4}", loanApplication.Client.FirstName, loanApplication.Loan.Name,
                        loanApplication.Amount, loanApplication.Term, loanApplication.Status.ChangedDate.TimeOfDay.ToString()));
                }
                unitOfWork.Commit();

                var SuretyAgreementService = new SuretyAgreementService(unitOfWork);
                Console.WriteLine("Surety agreements:");
                foreach (var suretyAgreement in SuretyAgreementService.Get())
                    Console.WriteLine(string.Format("{0} {1} {2} {3} {4} {5}", suretyAgreement.Client.FirstName, suretyAgreement.Guarantor.FirstName,
                        suretyAgreement.Amount, suretyAgreement.Currency, suretyAgreement.LoanTerm, suretyAgreement.SuretyTerm));

                var BailAgreementService = new BailAgreementService(unitOfWork);
                Console.WriteLine("Bail agreements:");
                foreach (var bailAgreement in BailAgreementService.Get())
                    Console.WriteLine(string.Format("{0} {1} {2} {3} {4} {5}", bailAgreement.Client.FirstName, bailAgreement.BailObject,
                        bailAgreement.Amount, bailAgreement.Currency, bailAgreement.LoanTerm, bailAgreement.BailTerm));

                var BailObjectService = new BailObjectsService(unitOfWork);
                Console.WriteLine("Bail objects:");
                foreach (var bailObject in BailObjectService.Get())
                    Console.WriteLine(string.Format("{0} {1} {2} {3}", bailObject.Object, bailObject.ClientIdentificationNumber,
                        bailObject.BailObjectEstimate, bailObject.Currency));

                var SystemService = new SystemResolutionService(unitOfWork);
                Console.WriteLine("System resolutions:");
                foreach (var resolution in SystemService.Get())
                    Console.WriteLine(string.Format("Application: {0} {1} {2}", resolution.LoanApplication.Id, resolution.MaxLoanAmount,
                        resolution.ScoringPoint));

                 var SecurityService = new SecurityResolutionService(unitOfWork);
                Console.WriteLine("Security resolutions:");
                foreach (var resolution in SecurityService.Get())
                    Console.WriteLine(string.Format("Application: {0} {1} {2}{3}", resolution.LoanApplication.Id, resolution.Income,
                        Environment.NewLine,
                        resolution.IncomeEstimate));

                var ExpertService = new ExpertResolutionService(unitOfWork);
                Console.WriteLine("Expert resolutions:");
                foreach (var resolution in ExpertService.Get())
                    Console.WriteLine(string.Format("Application: {0} {1} {2}", resolution.LoanApplication.Id, resolution.Social,
                        resolution.SocialEstimate));

                var CommitteeService = new CommitteeResolutionService(unitOfWork);
                Console.WriteLine("Committee resolutions:");
                foreach (var resolution in CommitteeService.Get())
                    Console.WriteLine(string.Format("Link: {0} {1}", resolution.ProtocolDocument.Link, resolution.Resolution));

                archiveApplications = LoanApplicationService.Get
                    (app => app.Id < 5, app => app.OrderBy(p => p.Id),
                    app => app.Client,
                    app => app.LoanAgreements,
                    app => app.LoanAgreements.Select(l => l.BankConstants),
                    app => app.LoanAgreements.Select(l => l.Payouts),
                    app => app.LoanAgreements.Select(l => l.ClientWithdrawals),
                    app => app.BailAgreements.Select(b => b.AgreementDocument),
                    app => app.BailAgreements.Select(b => b.EstimationDocument),
                    app => app.BailAgreements.Select(b => b.InsuranceDocument),
                    app => app.SuretyAgreements.Select(s => s.AgreementDocument),
                    app => app.SuretyAgreements.Select(s => s.Client),
                    app => app.SuretyAgreements.Select(s => s.Guarantor),
                    app => app.SuretyAgreements.Select(s => s.BankConstants)
                    ).ToList();
            }

            using (var archiveUnit = new UnitOfWork(new ArchiveModuleFactory(useInitializers)))
            {
                var ApplicationService = new ArchiveLoanApplicationService(archiveUnit);
                foreach(var arch in archiveApplications)
                    ApplicationService.ArchiveApplication(arch);

                archiveUnit.Commit();
            }

            using (var archiveUnit = new UnitOfWork(new ArchiveModuleFactory(false)))
            {
                var ApplicationService = new ArchiveLoanApplicationService(archiveUnit);

                Console.WriteLine("\nArchived applications:");
                foreach (var loanApplication in ApplicationService.Get())
                    Console.WriteLine(string.Format("{0} {1} {2} {3} Time: {4}", loanApplication.ClientIdentificationNumber, loanApplication.LoanAgreements.Count,
                        loanApplication.Amount, loanApplication.Term, loanApplication.ArchivedDate.TimeOfDay.ToString()));
            }

            Console.WriteLine("\nAuthentification: ");
            using (var unitOfWork = new UnitOfWork(new AuthorizationModuleFactory(useInitializers)))
            {
                var userService = new UserService(unitOfWork);
                foreach (var user in userService.Get(includeProperties: "Roles"))
                {
                    System.Console.WriteLine(string.Format("{0} {1} {2} {3}", user.FirstName,
                        user.MiddleName, user.LastName, user.Roles.First().Name));

                    var newUser = userService.GetLoggedUser(user.Login, "ivan_peresvetov_pass");
                    if(newUser != null)
                        Console.WriteLine("Found ivan!");
                }
            }

            System.Console.ReadKey(true);
        }
Exemple #34
0
        static void Main(string[] args)
        {
            using (var studContext = new StudBankContext(true))
            {
                var AccountService = new AccountService(studContext);
                Console.WriteLine("Accounts:");
                foreach(var account in AccountService.Get())
                {
                    System.Console.WriteLine(string.Format("{0} {1} {2} {3} Transfers From: {4}  Transfers To:{5}",
                        account.IBAN, account.AccountType, account.MoneyAmount, account.Currency, account.BankTransfersFrom.Count, account.BankTransfersTo.Count));
                }

                var BankTransferService = new BankTransferService(studContext);
                Console.WriteLine("Transfers:");
                foreach (var transfer in BankTransferService.Get(includeProperties: "AccountFrom,AccountTo"))
                    Console.WriteLine(string.Format("From: {0} To: {1} {2} {3} {4}", transfer.AccountFrom.IBAN, transfer.AccountTo.IBAN,
                        transfer.Amount, transfer.Currency, transfer.TransferDate.ToShortDateString()));

                var LoanAgreementService = new LoanAgreementService(studContext);
                Console.WriteLine("Loan Agreements:");
                foreach (var loanAgreement in LoanAgreementService.Get(includeProperties: "PayoutStatus"))
                    Console.WriteLine(string.Format("{0} {1} {2} {3} {4} {5} {6}", loanAgreement.Client.FirstName, loanAgreement.LoanType,
                        loanAgreement.LoanProviding, loanAgreement.LoanRepayment, loanAgreement.Term, loanAgreement.Amount, loanAgreement.Currency));

                var PayoutService = new PayoutService(studContext);
                Console.WriteLine("Payouts:");
                foreach (var payout in PayoutService.Get())
                    Console.WriteLine(string.Format("{0} {1} {2} {3} {4} {5}", payout.PayoutWay, payout.LoanAmount, payout.ProcessingFee,
                        payout.InterestAmount, payout.TotalAmount, payout.Currency));

                var FineService = new FineService(studContext);
                Console.WriteLine("Fines:");
                foreach (var fine in FineService.Get(includeProperties: "LoanAgreement"))
                    Console.WriteLine(string.Format("{0} {1} {2} {3}", fine.LoanAgreement.Id,
                        fine.DeadLineDate.ToShortDateString(), fine.FineRateOfInterest, fine.IsClosed));

                var WithdrawalService = new WithdrawalService(studContext);
                Console.WriteLine("Withdrawals:");
                foreach (var withdrawal in WithdrawalService.Get(includeProperties: "ClientAccount,LoanAgreement"))
                    Console.WriteLine(string.Format("{0} {1} {2} {3} {4}", withdrawal.ClientAccount.Id, withdrawal.MoneyAmount,
                        withdrawal.Currency, withdrawal.WithdrawalWay, withdrawal.Date.ToShortDateString()));

                var PersonService = new PersonService(studContext);
                Console.WriteLine("Persons:");
                foreach (var person in PersonService.Get())
                    Console.WriteLine(string.Format("{0} {1} {2} Documents: {3} Records: {4}", person.FirstName, person.IdentificationNumber,
                        person.MonthlyIncome, person.Documents.Count, person.CreditHistoryRecords.Count));

                var HistoryService = new CreditHistoryRecordService(studContext);
                Console.WriteLine("Records:");
                foreach (var record in HistoryService.Get())
                    Console.WriteLine(string.Format("{0} {1} {2} {3} {4}", record.Person.FirstName, record.BankConstants.BIC,
                        record.Amount, record.Currency, record.Interest));

                var LoanService = new LoanService(studContext);
                Console.WriteLine("Loan programs:");
                foreach (var program in LoanService.Get())
                    Console.WriteLine(string.Format("{0} {1} {2} {3} {4} {5}", program.Name, program.LoanProviding,
                        program.LoanGuarantee, program.LoanRepayment, program.LoanType, program.MaxAmount));

                var LoanApplicationService = new LoanApplicationService(studContext);
                Console.WriteLine("Loan applications:");
                foreach (var loanApplication in LoanApplicationService.Get())
                    Console.WriteLine(string.Format("{0} {1} {2} {3} {4} First surety:{5}", loanApplication.Client.FirstName, loanApplication.Loan.Name,
                        loanApplication.Amount, loanApplication.Currency, loanApplication.Term, loanApplication.Sureties.FirstOrDefault().FirstName));

                var SuretyAgreementService = new SuretyAgreementService(studContext);
                Console.WriteLine("Surety agreements:");
                foreach (var suretyAgreement in SuretyAgreementService.Get())
                    Console.WriteLine(string.Format("{0} {1} {2} {3} {4} {5}", suretyAgreement.Client.FirstName, suretyAgreement.Guarantor.FirstName,
                        suretyAgreement.Amount, suretyAgreement.Currency, suretyAgreement.LoanTerm, suretyAgreement.SuretyTerm));

                var BailAgreementService = new BailAgreementService(studContext);
                Console.WriteLine("Bail agreements:");
                foreach (var bailAgreement in BailAgreementService.Get())
                    Console.WriteLine(string.Format("{0} {1} {2} {3} {4} {5}", bailAgreement.Client.FirstName, bailAgreement.BailObject,
                        bailAgreement.Amount, bailAgreement.Currency, bailAgreement.LoanTerm, bailAgreement.BailTerm));

                var SystemService = new SystemResolutionService(studContext);
                Console.WriteLine("System resolutions:");
                foreach (var resolution in SystemService.Get())
                    Console.WriteLine(string.Format("Application: {0} {1} {2}", resolution.LoanApplication.Id, resolution.MaxLoanAmount,
                        resolution.ScoringPoint));

                var SecurityService = new SecurityResolutionService(studContext);
                Console.WriteLine("Security resolutions:");
                foreach (var resolution in SecurityService.Get())
                    Console.WriteLine(string.Format("Application: {0} {1} {2}", resolution.LoanApplication.Id, resolution.Property,
                        resolution.PropertyEstimate));

                var ExpertService = new ExpertResolutionService(studContext);
                Console.WriteLine("Expert resolutions:");
                foreach (var resolution in ExpertService.Get())
                    Console.WriteLine(string.Format("Application: {0} {1} {2}", resolution.LoanApplication.Id, resolution.Property,
                        resolution.PropertyEstimate));

                var CommitteeService = new CommitteeResolutionService(studContext);
                Console.WriteLine("Committee resolutions:");
                foreach (var resolution in CommitteeService.Get())
                    Console.WriteLine(string.Format("Link: {0} {1}", resolution.ProtocolDocument.Link, resolution.Resolution));
            }

            Console.WriteLine("\nAuthentification: ");
            using (var authContext = new StudAuthorizeContext(true))
            {
                var userService = new EntityService<User>(authContext);
                var roleService = new EntityService<Role>(authContext);
                foreach (var user in userService.Get(includeProperties: "Roles"))
                {
                    System.Console.WriteLine(string.Format("{0} {1} {2} {3}", user.FirstName,
                        user.MiddleName, user.LastName, user.Roles.First().Name));
                }
                System.Console.WriteLine();

                userService.Get(user => user.FirstName == "Ivan").First().FirstName = "Vano";
                authContext.SaveChanges();

                foreach (var user in userService.Get(includeProperties: "Roles"))
                {
                    System.Console.WriteLine(string.Format("{0} {1} {2} {3}", user.FirstName,
                        user.MiddleName, user.LastName, user.Roles.First().Name));
                }
            }

            System.Console.ReadKey(true);
        }