using FindAndDrive.Domain.Interfaces.Repositories; using FindAndDrive.Domain.Models.Entities; using FindAndDrive.Domain.Models.Enums; using Microsoft.EntityFrameworkCore; using System; using System.Collections.Generic; using System.Globalization; using System.Linq; using System.Linq.Expressions; using System.Net.Mail; using System.Text; using System.Threading.Tasks; namespace FindAndDrive.Persistence.Repository { public class ApplicantRepository : IApplicantRepository { private readonly DefaultContext _context; public ApplicantRepository(DefaultContext context) { _context = context; } public async Task Create(Applicant applicant) { _context.Set().Add(applicant); await _context.SaveChangesAsync(); return applicant.ApplicantId; } public async Task Get(Guid applicantId, Guid clientId) { return await _context.Applicants .Include(x => x.ApplicantFinance) .Include(x => x.ApplicantAuditLog) .Include(x => x.ApplicantCredit) .Include(x => x.ApplicantFraudAlert) .Include(x => x.ApplicantPredicition) .FirstOrDefaultAsync(x => x.ApplicantId == applicantId && x.ClientId == clientId); } public async Task GetApplicantById(Guid applicantId, Guid clientId) { return await _context.Applicants.FirstOrDefaultAsync(x => x.ApplicantId == applicantId && x.ClientId == clientId); } public IEnumerable Find(Expression> expression) { return _context.Set().Where(expression); } public async Task Update(Applicant applicant) { var entity = _context.Applicants.FirstOrDefault(a => a.ApplicantId == applicant.ApplicantId); if (entity != null) { entity.EmailAddress = applicant.EmailAddress; entity.IdNumber= applicant.IdNumber; entity.ApplicantId = applicant.ApplicantId; entity.FirstName = applicant.FirstName; entity.LastName = applicant.LastName; entity.MobileNumber = applicant.MobileNumber; entity.ClientId = applicant.ClientId; entity.ApplicantFinance = applicant.ApplicantFinance; entity.IdNumber = applicant.IdNumber; entity.EmailAddress = applicant.EmailAddress; entity.Title = applicant.Title; entity.Gender = applicant.Gender; entity.DateOfBirth = applicant.DateOfBirth; entity.MaritalStatus = applicant.MaritalStatus; entity.SpouseName = applicant.SpouseName; entity.AddressLine1 = applicant.AddressLine1; entity.AddressLine2 = applicant.AddressLine2; entity.Suburb = applicant.Suburb; entity.City = applicant.City; entity.PostalCode = applicant.PostalCode; entity.Province = applicant.Province; entity.ResidentialStatus = applicant.ResidentialStatus; entity.AddressDate = applicant.AddressDate; await _context.SaveChangesAsync(); } } } }