示例#1
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);
            }
        }
示例#2
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);
            }
        }
 public static void ValidatorGmailId(LoanApplicantDto loanApplicantDto)
 {
     if (loanApplicantDto.GmailId == null)
     {
         throw new LoanExeption($"Email with ID {loanApplicantDto.GmailId} does not exist!");
     }
 }
示例#4
0
        public async Task ListEmailsWithStatusOpenAsync_Test()
        {
            var firstEmail = EmailGeneratorUtil.GenerateEmailFirst();

            firstEmail.EmailStatusId = (int)EmailStatusesType.Open;

            var userId = firstEmail.UserId;

            var loanApplicantDto = new LoanApplicantDto
            {
                UserId = userId,
            };

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

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

                await actContext.SaveChangesAsync();

                var sut = new SearchService(actContext);

                var result = await sut.ListEmailsWithStatusOpenAsync(loanApplicantDto);

                Assert.IsNotNull(result);
            }
        }
 public static void ValidatorDetailsOfLoanIfAreNull(LoanApplicantDto loanApplicantDto)
 {
     if (loanApplicantDto.Name == null ||
         loanApplicantDto.EGN == null ||
         loanApplicantDto.PhoneNumber == null)
     {
         throw new LoanExeption("Тhe details of the loan request have not been filled in correctly");
     }
 }
        public async Task <IActionResult> ListOpenStatusEmails()
        {
            var loanApplicantDto = new LoanApplicantDto
            {
                UserId = User.FindFirstValue(ClaimTypes.NameIdentifier)
            };

            var openStatusEmails = await this.searchService.ListEmailsWithStatusOpenAsync(loanApplicantDto);

            var loanList = this.encodeDecodeService.DecodeLoanApplicantList(openStatusEmails);

            var listStatusOpenEmailsViewModel = new ListStatusOpenEmailsViewModel(loanList);

            return(View(listStatusOpenEmailsViewModel));
        }
        public async Task <LoanApplicant> FillInFormForLoanAsync(LoanApplicantDto loanApplicantDto)
        {
            ValidatorLoanService.ValidatorDetailsOfLoanIfAreNull(loanApplicantDto);

            ValidatorLoanService.ValidatorGmailId(loanApplicantDto);

            ValidatorLoanService.ValidatorDetailsOfLoan(loanApplicantDto);

            var isEgnCorrect = CheckEGNForDigit(loanApplicantDto.EGN);

            ValidatorLoanService.ValidatorEGN(isEgnCorrect);

            var user = await this.context.Users
                       .Include(l => l.LoanApplicant)
                       .Where(userId => userId.Id == loanApplicantDto.UserId)
                       .FirstOrDefaultAsync();


            var encodeName        = this.encodeDecodeService.Encrypt(loanApplicantDto.Name);
            var encodeEGN         = this.encodeDecodeService.Encrypt(loanApplicantDto.EGN);
            var encodePhoneNumber = this.encodeDecodeService.Encrypt(loanApplicantDto.PhoneNumber);


            var email = await this.context.Emails
                        .Where(gmailId => gmailId.GmailId == loanApplicantDto.GmailId)
                        .SingleOrDefaultAsync();

            var loan = new LoanApplicant
            {
                Name        = encodeName,
                EGN         = encodeEGN,
                PhoneNumber = encodePhoneNumber,
                UserId      = loanApplicantDto.UserId,
                User        = user,
                Emails      = email,
                GmailId     = loanApplicantDto.GmailId
            };

            email.SetCurrentStatus = DateTime.Now;
            email.EmailStatusId    = (int)EmailStatusesType.Open;

            await this.context.LoanApplicants.AddAsync(loan);

            await this.context.SaveChangesAsync();

            return(loan);
        }
        public static void ValidatorDetailsOfLoan(LoanApplicantDto loanApplicantDto)
        {
            if (loanApplicantDto.EGN.Length != 10)
            {
                throw new LoanExeption("The EGN of the client must be exactly 10 digits!");
            }

            if (loanApplicantDto.Name.Length < 3 || loanApplicantDto.Name.Length > 50)
            {
                throw new LoanExeption("The length of the client's name is not correct!");
            }

            if (loanApplicantDto.PhoneNumber.Length < 8 || loanApplicantDto.PhoneNumber.Length > 50)
            {
                throw new LoanExeption("The length of the client's phone number is not correct!");
            }
        }
        public async Task <IActionResult> Loanform(string userData, string egnData, string phoneData, string idData)
        {
            try
            {
                var loanDto = new LoanApplicantDto
                {
                    Name        = userData,
                    EGN         = egnData,
                    PhoneNumber = phoneData,
                    GmailId     = idData,
                    UserId      = User.FindFirstValue(ClaimTypes.NameIdentifier)
                };

                var result = await this.loanService.FillInFormForLoanAsync(loanDto);
            }
            catch (LoanExeption)
            {
                return(Json(new { exeption = idData }));
            }

            return(Json(new { emailId = idData }));
        }
示例#10
0
        public async Task <IEnumerable <LoanApplicant> > ListEmailsWithStatusOpenAsync(LoanApplicantDto loanApplicantDto)
        {
            var loanList = await this.context.LoanApplicants
                           .Include(u => u.User)
                           .Include(eMail => eMail.Emails)
                           .Where(currentUser => currentUser.UserId == loanApplicantDto.UserId &&
                                  currentUser.Emails.EmailStatusId == (int)EmailStatusesType.Open)
                           .ToListAsync();

            return(loanList);
        }