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 async Task <bool> ApproveLoanAsync(ApproveLoanDto approveLoanDto) { ValidatorLoanService.ValidatorApproveLoan(approveLoanDto); int expectedResult = int.Parse(approveLoanDto.IsApprove); var loan = await this.context.LoanApplicants .Where(gmailId => gmailId.GmailId == approveLoanDto.GmailId) .FirstOrDefaultAsync(); var email = await this.context.Emails .Where(gmailId => gmailId.GmailId == approveLoanDto.GmailId) .FirstOrDefaultAsync(); var user = await this.context.Users .Where(id => id.Id == approveLoanDto.UserId) .SingleOrDefaultAsync(); if (expectedResult == rejectLoan) { loan.IsApproved = false; loan.User = user; } if (expectedResult == approveLoan) { loan.IsApproved = true; loan.User = user; } email.SetCurrentStatus = DateTime.Now; email.EmailStatusId = (int)EmailStatusesType.Closed; email.SetTerminalState = DateTime.Now; await this.context.SaveChangesAsync(); return(true); }