public async Task <EligibleProductsResponse> GetEligibleProducts(EligibleProductsRequest request) { using var httpClient = new HttpClient(); StringContent content = new StringContent(JsonConvert.SerializeObject(request), Encoding.UTF8, "application/json"); using var response = await httpClient.PostAsync(_configuration["ApiUrl"] + "/Products/EligibleProducts", content); string apiResponse = await response.Content.ReadAsStringAsync(); return(JsonConvert.DeserializeObject <EligibleProductsResponse>(apiResponse)); }
public EligibleProductsResponse EligibleProducts(EligibleProductsRequest request) { try { return(_productService.GetProducts(request)); } catch (System.Exception) { return(new EligibleProductsResponse() { ErrorMessage = "Api Error" }); } }
public EligibleProductsResponse GetProducts(EligibleProductsRequest request) { //Check we are of age... or return nothing var validate = ValidateRequest(request); if (validate != null) { return new EligibleProductsResponse() { BanksWithProducts = new List <BankDTO>(), ErrorMessage = validate } } ; return(new EligibleProductsResponse() { BanksWithProducts = GetBanksProductsForLTV(Helpers.Helpers.CalculateLoanToValue(request.Deposit, request.HouseValue)) }); }
private string ValidateRequest(EligibleProductsRequest request) { var users = _context.Users.ToList(); var user = _context.Users.FirstOrDefault(x => x.Id == request.UserId); // Save today's date. var today = DateTime.UtcNow; // Calculate the age. var age = today.Year - user.DateOfBirth.Year; // Go back to the year the person was born in case of a leap year if (user.DateOfBirth.Date > today.AddYears(-age)) { age--; } var lowestLTVProduct = _context.Products.OrderByDescending(x => x.MaximumLTV).FirstOrDefault(); if (lowestLTVProduct == null || Helpers.Helpers.CalculateLoanToValue(request.Deposit, request.HouseValue) >= lowestLTVProduct.MaximumLTV) { return("No Valid Products"); } if (age < 18) { return("Not Old Enough"); } if (request.Deposit >= request.HouseValue) { return("Deposit cannot be greater or equal to house value"); } return(null); }