diff --git a/PaydayBackend/Controllers/AdminController.cs b/PaydayBackend/Controllers/AdminController.cs
index 2c86cb3..70a46d4 100644
--- a/PaydayBackend/Controllers/AdminController.cs
+++ b/PaydayBackend/Controllers/AdminController.cs
@@ -58,12 +58,12 @@ public class AdminController : ControllerBase
///
/// Добавление условия кредитования
///
- // [HttpPost("banks/{bank_id}/loanterms")]
- // public async Task AddLoanTerm(long bank_id, [FromBody] LoanTerm loanTerm)
- // {
- // await _adminService.AddLoanTerm(loanTerm);
- // return Ok();
- // }
+ [HttpPost("banks/{bank_id}/loanterms")]
+ public async Task AddLoanTerm(long bank_id, [FromBody] LoanTerm loanTerm)
+ {
+ await _adminService.AddLoanTerm(loanTerm);
+ return Ok();
+ }
///
/// Удаление ВСЕХ условий кредитования
@@ -78,6 +78,15 @@ public class AdminController : ControllerBase
// -------------------------------------| Университеты |-------------------------------------
+ ///
+ /// Получение всех университетов
+ ///
+ [HttpGet("universities")]
+ public async Task> GetUniversity()
+ {
+ return await _adminService.GetAllUniversity();
+ }
+
///
/// Добавление университета
///
diff --git a/PaydayBackend/Controllers/PublicController.cs b/PaydayBackend/Controllers/PublicController.cs
index 2fb14ea..533809d 100644
--- a/PaydayBackend/Controllers/PublicController.cs
+++ b/PaydayBackend/Controllers/PublicController.cs
@@ -19,7 +19,7 @@ public class PublicController : ControllerBase
/// Получение всех университетов
///
[HttpGet("university")]
- public async Task> GetAllUniversity()
+ public async Task> GetAllUniversity()
{
return await _publicService.GetAllUniversity();
}
@@ -29,9 +29,24 @@ public class PublicController : ControllerBase
///
/// Университет не найден
[HttpGet("university/{id}/direction")]
- public async Task>> GetAllUniversityDirectionByUniversityId(long id)
+ public async Task>> GetAllUniversityDirectionByUniversityId(long id)
{
var result = await _publicService.GetAllUniversityDirectionByUniversityId(id);
+
+ if (result == null)
+ return BadRequest();
+
+ return Ok(result);
+ }
+
+ ///
+ /// Получение всех возможных условий кредитования банков по стоймости направления
+ ///
+ /// Направление не найдено
+ [HttpGet("credit/direction/{id}")]
+ public async Task>> GetAllTermsWithDirection(long id)
+ {
+ var result = await _publicService.GetAllLoansByDirectionCost(id);
if (result == null)
return BadRequest();
diff --git a/PaydayBackend/Models/LoanTerm.cs b/PaydayBackend/Models/LoanTerm.cs
index 7c27c9d..4484058 100644
--- a/PaydayBackend/Models/LoanTerm.cs
+++ b/PaydayBackend/Models/LoanTerm.cs
@@ -11,5 +11,6 @@ public class LoanTerm
public float InterestRate { get; set; }
public int LoanTermInMonths { get; set; }
public string Documents { get; set; }
+ public long MaxCost { get; set; }
}
\ No newline at end of file
diff --git a/PaydayBackend/Models/University.cs b/PaydayBackend/Models/University.cs
index c99ae1b..b794eeb 100644
--- a/PaydayBackend/Models/University.cs
+++ b/PaydayBackend/Models/University.cs
@@ -9,4 +9,5 @@ public class University
public string Name { get; set; }
public string FullName { get; set; }
public string ImageUrl { get; set; }
+ public List Directions { get; set; } = null;
}
\ No newline at end of file
diff --git a/PaydayBackend/Models/UniversityDTO.cs b/PaydayBackend/Models/UniversityDTO.cs
new file mode 100644
index 0000000..c011ef1
--- /dev/null
+++ b/PaydayBackend/Models/UniversityDTO.cs
@@ -0,0 +1,18 @@
+namespace PaydayBackend.Models;
+
+public class UniversityDto
+{
+ public UniversityDto(long id, string name, string fullName, string imageUrl)
+ {
+ Id = id;
+ Name = name;
+ FullName = fullName;
+ ImageUrl = imageUrl;
+ }
+
+ public long Id { get; set; }
+ public string Name { get; set; }
+ public string FullName { get; set; }
+ public string ImageUrl { get; set; }
+ public long MinPlaceCost { get; set; }
+}
\ No newline at end of file
diff --git a/PaydayBackend/Models/UniversityDirection.cs b/PaydayBackend/Models/UniversityDirection.cs
index 7137a26..8c0b58c 100644
--- a/PaydayBackend/Models/UniversityDirection.cs
+++ b/PaydayBackend/Models/UniversityDirection.cs
@@ -1,12 +1,16 @@
using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
namespace PaydayBackend.Models;
public class UniversityDirection
{
[Key]
+ public long Id { get; set; }
+ public University University { get; set; }
+ [ForeignKey("University")]
public long UniversityId { get; set; }
public string Code { get; set; }
public string Name { get; set; }
- public int BudgetPlaces { get; set; }
+ public int PlaceCost { get; set; }
}
\ No newline at end of file
diff --git a/PaydayBackend/Services/IAdminService.cs b/PaydayBackend/Services/IAdminService.cs
index 5fa9e82..8aeb359 100644
--- a/PaydayBackend/Services/IAdminService.cs
+++ b/PaydayBackend/Services/IAdminService.cs
@@ -12,6 +12,7 @@ public interface IAdminService
public Task AddLoanTerm(LoanTerm loanTerm);
public Task RemoveAllLoanTermsByBankId(long bankId);
public Task?> GetAllLoanTermsByBankId(long bankId);
+ public Task> GetAllUniversity();
public Task AddUniversity(string shortName, string fullName, IFormFile file);
public Task AddUniversityDirection(UniversityDirection universityDirection);
}
@@ -99,6 +100,11 @@ public class AdminService : IAdminService
// -------------------------------------| Университеты |-------------------------------------
+ public async Task> GetAllUniversity()
+ {
+ return await _databaseContext.Universities.ToListAsync();
+ }
+
public async Task AddUniversity(string shortName, string fullName, IFormFile file)
{
string sizeValidator = FileHelper.ValidateMaxFileSize(file, 5, new []{".png"});
diff --git a/PaydayBackend/Services/IPublicService.cs b/PaydayBackend/Services/IPublicService.cs
index cfc8e99..04a2fc0 100644
--- a/PaydayBackend/Services/IPublicService.cs
+++ b/PaydayBackend/Services/IPublicService.cs
@@ -5,9 +5,10 @@ namespace PaydayBackend.Services;
public interface IPublicService
{
- public Task> GetAllUniversity();
+ public Task> GetAllUniversity();
public Task?> GetAllUniversityDirectionByUniversityId(long universityId);
- // public Task GetAllLoansByDirectionCost();
+ public Task?> GetAllLoansByDirectionCost(long universityDirectionId);
+ public Task GetMinPlaceCostByUniversityId(long universityId);
}
public class PublicService : IPublicService
@@ -19,9 +20,21 @@ public class PublicService : IPublicService
_databaseContext = databaseContext;
}
- public async Task> GetAllUniversity()
+
+
+ public async Task> GetAllUniversity()
{
- return await _databaseContext.Universities.ToListAsync();
+ var result = await _databaseContext.Universities.ToListAsync();
+
+ List dtos = new List();
+ foreach (var item in result)
+ {
+ UniversityDto dto = new UniversityDto(item.Id, item.Name, item.FullName, item.ImageUrl);
+ dto.MinPlaceCost = await GetMinPlaceCostByUniversityId(item.Id);
+ dtos.Add(dto);
+ }
+
+ return dtos;
}
public async Task?> GetAllUniversityDirectionByUniversityId(long universityId)
@@ -31,5 +44,29 @@ public class PublicService : IPublicService
return await _databaseContext.UniversityDirections.Where(x => x.UniversityId == universityId).ToListAsync();
}
+
+ public async Task?> GetAllLoansByDirectionCost(long universityDirectionId)
+ {
+ var universityDirection = await _databaseContext.UniversityDirections.Where(x => x.Id == universityDirectionId).FirstOrDefaultAsync();
+ if (universityDirection == null)
+ return null;
+
+ List loanTerms = await _databaseContext.LoanTerms.Where(x => x.MaxCost >= universityDirection.PlaceCost).ToListAsync();
+ return loanTerms;
+ }
+ public async Task GetMinPlaceCostByUniversityId(long universityId)
+ {
+ try
+ {
+ var universityDirection = await _databaseContext.UniversityDirections.OrderByDescending(x => x.PlaceCost).Where(x => x.UniversityId == universityId).FirstAsync();
+ if (universityDirection == null)
+ return 0;
+ return universityDirection.PlaceCost;
+ }
+ catch (Exception e)
+ {
+ return 0;
+ }
+ }
}
\ No newline at end of file