diff --git a/PaydayBackend/Controllers/AdminController.cs b/PaydayBackend/Controllers/AdminController.cs
index ca7a3b2..0418c6f 100644
--- a/PaydayBackend/Controllers/AdminController.cs
+++ b/PaydayBackend/Controllers/AdminController.cs
@@ -54,28 +54,6 @@ public class AdminController : ControllerBase
return Ok(result);
}
- // TODO: Переделать
- ///
- /// Добавление условия кредитования
- ///
- [HttpPost("banks/{bank_id}/loanterms")]
- public async Task AddLoanTerm(long bank_id, [FromBody] LoanTerm loanTerm)
- {
- await _adminService.AddLoanTerm(loanTerm);
- return Ok();
- }
-
- ///
- /// Удаление ВСЕХ условий кредитования
- ///
- /// Банк не найден
- [HttpDelete("banks/{bank_id}/loanterms")]
- public async Task AddLoanTerm(long bankId)
- {
- var result = await _adminService.RemoveAllLoanTermsByBankId(bankId);
- return result == "OK" ? Ok() : BadRequest(result);
- }
-
// -------------------------------------| Университеты |-------------------------------------
///
diff --git a/PaydayBackend/Controllers/BankController.cs b/PaydayBackend/Controllers/BankController.cs
index ba328e0..b05cff8 100644
--- a/PaydayBackend/Controllers/BankController.cs
+++ b/PaydayBackend/Controllers/BankController.cs
@@ -1,4 +1,6 @@
using Microsoft.AspNetCore.Mvc;
+using PaydayBackend.Models;
+using PaydayBackend.Services;
namespace PaydayBackend.Controllers;
@@ -6,9 +8,35 @@ namespace PaydayBackend.Controllers;
[ApiController]
public class BankController : ControllerBase
{
+ private readonly IAdminService _adminService;
- public BankController()
+ public BankController(IAdminService adminService)
{
+ _adminService = adminService;
+ }
+
+ ///
+ /// Удаление ВСЕХ условий кредитования
+ ///
+ /// Банк не найден
+ [HttpDelete("banks/{bank_id}/loanterms")]
+ public async Task AddLoanTerm(long bankId)
+ {
+ var result = await _adminService.RemoveAllLoanTermsByBankId(bankId);
+ return result == "OK" ? Ok() : BadRequest(result);
+ }
+
+ ///
+ /// Добавление условия кредитования
+ ///
+ [HttpPost("banks/loanterms")]
+ public async Task AddLoanTerm([FromBody] LoanTerm loanTerm)
+ {
+ var result = await _adminService.AddLoanTerm(loanTerm);
+ if (result != "OK")
+ return BadRequest(result);
+
+ return Ok();
}
}
\ No newline at end of file
diff --git a/PaydayBackend/Controllers/PublicController.cs b/PaydayBackend/Controllers/PublicController.cs
index d0560a3..1aa2d00 100644
--- a/PaydayBackend/Controllers/PublicController.cs
+++ b/PaydayBackend/Controllers/PublicController.cs
@@ -53,15 +53,30 @@ public class PublicController : ControllerBase
return Ok(result);
}
-
+
///
- /// Получение всех возможных условий кредитования банков по стоймости направления
+ /// Получение одно направление по Id
///
/// Направление не найдено
- [HttpGet("credit/direction/{id}")]
- public async Task>> GetAllTermsWithDirection(long id)
+ [HttpGet("direction/{id}")]
+ public async Task>> GetDirectionById(long id)
{
- var result = await _publicService.GetAllLoansByDirectionCost(id);
+ var result = await _publicService.GetDirectionById(id);
+
+ if (result == null)
+ return BadRequest();
+
+ return Ok(result);
+ }
+
+ ///
+ /// Получение всех возможных кредитов по стоймости направления от каждого банка по одному
+ ///
+ /// Направление не найдено
+ [HttpGet("credit/direction/{directionId}")]
+ public async Task>> GetOffers(long directionId)
+ {
+ var result = await _publicService.GetOffers(directionId);
if (result == null)
return BadRequest();
diff --git a/PaydayBackend/Models/LoanTerm.cs b/PaydayBackend/Models/LoanTerm.cs
index 4484058..dea1193 100644
--- a/PaydayBackend/Models/LoanTerm.cs
+++ b/PaydayBackend/Models/LoanTerm.cs
@@ -6,7 +6,7 @@ public class LoanTerm
{
[Key]
public long Id { get; set; }
- public Bank Bank { get; set; }
+ public long BankId { get; set; }
[Range(0f, 360f)]
public float InterestRate { get; set; }
public int LoanTermInMonths { get; set; }
diff --git a/PaydayBackend/Models/Offers.cs b/PaydayBackend/Models/Offers.cs
new file mode 100644
index 0000000..164d89b
--- /dev/null
+++ b/PaydayBackend/Models/Offers.cs
@@ -0,0 +1,10 @@
+namespace PaydayBackend.Models;
+
+public class Offer
+{
+ public long DirectionId { get; set; }
+ public string BankIconUrl { get; set; }
+ public string BankName { get; set; }
+ public float BankPercent { get; set; }
+ public long BankId { get; set; }
+}
\ No newline at end of file
diff --git a/PaydayBackend/Services/IAdminService.cs b/PaydayBackend/Services/IAdminService.cs
index 71a164e..b2b3f66 100644
--- a/PaydayBackend/Services/IAdminService.cs
+++ b/PaydayBackend/Services/IAdminService.cs
@@ -10,7 +10,7 @@ public interface IAdminService
// Bank
public Task AddBank(string bankName, IFormFile file);
public Task> GetAllBanks();
- public Task AddLoanTerm(LoanTerm loanTerm);
+ public Task AddLoanTerm(LoanTerm loanTerm);
public Task RemoveAllLoanTermsByBankId(long bankId);
public Task?> GetAllLoanTermsByBankId(long bankId);
// University
@@ -84,10 +84,16 @@ public class AdminService : IAdminService
return await _databaseContext.Banks.ToListAsync();
}
- public async Task AddLoanTerm(LoanTerm loanTerm)
+ public async Task AddLoanTerm(LoanTerm loanTerm)
{
+ var bank = await _databaseContext.Banks.Where(x => x.Id == loanTerm.BankId).FirstOrDefaultAsync();
+ if (bank == null)
+ return "Bank not found";
+
await _databaseContext.LoanTerms.AddAsync(loanTerm);
await _databaseContext.SaveChangesAsync();
+
+ return "OK";
}
public async Task RemoveAllLoanTermsByBankId(long bankId)
@@ -95,7 +101,7 @@ public class AdminService : IAdminService
if (await BankIsExist(bankId))
return "Bank not found";
- var result = await _databaseContext.LoanTerms.Where(x => x.Bank.Id == bankId).ToListAsync();
+ var result = await _databaseContext.LoanTerms.Where(x => x.BankId == bankId).ToListAsync();
_databaseContext.LoanTerms.RemoveRange(result);
return "OK";
@@ -106,7 +112,7 @@ public class AdminService : IAdminService
if (await BankIsExist(bankId))
return null;
- return await _databaseContext.LoanTerms.Where(x => x.Bank.Id == bankId).ToListAsync();
+ return await _databaseContext.LoanTerms.Where(x => x.BankId == bankId).ToListAsync();
}
// -------------------------------------| Университеты |-------------------------------------
diff --git a/PaydayBackend/Services/IPublicService.cs b/PaydayBackend/Services/IPublicService.cs
index ac5a596..b70b771 100644
--- a/PaydayBackend/Services/IPublicService.cs
+++ b/PaydayBackend/Services/IPublicService.cs
@@ -7,9 +7,11 @@ public interface IPublicService
{
public Task> GetAllUniversity();
public Task?> GetAllUniversityDirectionByUniversityId(long universityId);
+ public Task GetDirectionById(long directionId);
public Task?> GetAllLoansByDirectionCost(long universityDirectionId);
public Task GetMinPlaceCostByUniversityId(long universityId);
public Task GetAllUniversityById(long universityId);
+ public Task?> GetOffers(long directionId);
}
public class PublicService : IPublicService
@@ -52,6 +54,15 @@ public class PublicService : IPublicService
return dtos;
}
+ public async Task GetDirectionById(long directionId)
+ {
+ var result = await _databaseContext.UniversityDirections.Where(x => x.Id == directionId).FirstAsync();
+ if (result == null)
+ return null;
+
+ return new UniversityDirectionDto(result.Id, result.UniversityId, result.Code, result.Name, result.Url, result.PlaceCost);
+ }
+
public async Task?> GetAllLoansByDirectionCost(long universityDirectionId)
{
var universityDirection = await _databaseContext.UniversityDirections.Where(x => x.Id == universityDirectionId).FirstOrDefaultAsync();
@@ -85,4 +96,32 @@ public class PublicService : IPublicService
return new UniversityDto(university.Id, university.Name, university.FullName, university.ImageUrl);
}
+
+ public async Task?> GetOffers(long directionId)
+ {
+ var universityDirection = await _databaseContext.UniversityDirections.Where(x => x.Id == directionId).FirstOrDefaultAsync();
+ if (universityDirection == null)
+ return null;
+
+ /////
+ var banks = _databaseContext.Banks.ToList();
+ List offers = new List();
+ foreach (var bank in banks)
+ {
+ var offer = new Offer();
+ offer.DirectionId = directionId;
+ offer.BankName = bank.Name;
+ offer.BankIconUrl = bank.ImageUrl;
+ offer.BankId = bank.Id;
+ var percente = await _databaseContext.LoanTerms.OrderBy(x => x.InterestRate).Where(x => x.BankId == bank.Id).FirstAsync();
+ if (percente == null)
+ offer.BankPercent = 5;
+ else
+ offer.BankPercent = percente.InterestRate;
+
+ offers.Add(offer);
+ }
+
+ return offers;
+ }
}
\ No newline at end of file