Добавил минимальную сумму курсов вуза
All checks were successful
Create and publish a Docker image / build-and-push-image (push) Successful in 18s

This commit is contained in:
Sergey Karmanov 2023-07-29 20:53:19 +03:00
parent 9b0636beb7
commit 3260da9b78
Signed by: serega404
GPG Key ID: B6AD49C8C835460C
8 changed files with 104 additions and 13 deletions

View File

@ -58,12 +58,12 @@ public class AdminController : ControllerBase
/// <summary> /// <summary>
/// Добавление условия кредитования /// Добавление условия кредитования
/// </summary> /// </summary>
// [HttpPost("banks/{bank_id}/loanterms")] [HttpPost("banks/{bank_id}/loanterms")]
// public async Task<ActionResult> AddLoanTerm(long bank_id, [FromBody] LoanTerm loanTerm) public async Task<ActionResult> AddLoanTerm(long bank_id, [FromBody] LoanTerm loanTerm)
// { {
// await _adminService.AddLoanTerm(loanTerm); await _adminService.AddLoanTerm(loanTerm);
// return Ok(); return Ok();
// } }
/// <summary> /// <summary>
/// Удаление ВСЕХ условий кредитования /// Удаление ВСЕХ условий кредитования
@ -78,6 +78,15 @@ public class AdminController : ControllerBase
// -------------------------------------| Университеты |------------------------------------- // -------------------------------------| Университеты |-------------------------------------
/// <summary>
/// Получение всех университетов
/// </summary>
[HttpGet("universities")]
public async Task<IEnumerable<University>> GetUniversity()
{
return await _adminService.GetAllUniversity();
}
/// <summary> /// <summary>
/// Добавление университета /// Добавление университета
/// </summary> /// </summary>

View File

@ -19,7 +19,7 @@ public class PublicController : ControllerBase
/// Получение всех университетов /// Получение всех университетов
/// </summary> /// </summary>
[HttpGet("university")] [HttpGet("university")]
public async Task<IEnumerable<University>> GetAllUniversity() public async Task<IEnumerable<UniversityDto>> GetAllUniversity()
{ {
return await _publicService.GetAllUniversity(); return await _publicService.GetAllUniversity();
} }
@ -29,9 +29,24 @@ public class PublicController : ControllerBase
/// </summary> /// </summary>
/// <response code="400">Университет не найден</response> /// <response code="400">Университет не найден</response>
[HttpGet("university/{id}/direction")] [HttpGet("university/{id}/direction")]
public async Task<ActionResult<IEnumerable<University>>> GetAllUniversityDirectionByUniversityId(long id) public async Task<ActionResult<IEnumerable<UniversityDto>>> GetAllUniversityDirectionByUniversityId(long id)
{ {
var result = await _publicService.GetAllUniversityDirectionByUniversityId(id); var result = await _publicService.GetAllUniversityDirectionByUniversityId(id);
if (result == null)
return BadRequest();
return Ok(result);
}
/// <summary>
/// Получение всех возможных условий кредитования банков по стоймости направления
/// </summary>
/// <response code="400">Направление не найдено</response>
[HttpGet("credit/direction/{id}")]
public async Task<ActionResult<IEnumerable<University>>> GetAllTermsWithDirection(long id)
{
var result = await _publicService.GetAllLoansByDirectionCost(id);
if (result == null) if (result == null)
return BadRequest(); return BadRequest();

View File

@ -11,5 +11,6 @@ public class LoanTerm
public float InterestRate { get; set; } public float InterestRate { get; set; }
public int LoanTermInMonths { get; set; } public int LoanTermInMonths { get; set; }
public string Documents { get; set; } public string Documents { get; set; }
public long MaxCost { get; set; }
} }

View File

@ -9,4 +9,5 @@ public class University
public string Name { get; set; } public string Name { get; set; }
public string FullName { get; set; } public string FullName { get; set; }
public string ImageUrl { get; set; } public string ImageUrl { get; set; }
public List<UniversityDirection> Directions { get; set; } = null;
} }

View File

@ -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; }
}

View File

@ -1,12 +1,16 @@
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace PaydayBackend.Models; namespace PaydayBackend.Models;
public class UniversityDirection public class UniversityDirection
{ {
[Key] [Key]
public long Id { get; set; }
public University University { get; set; }
[ForeignKey("University")]
public long UniversityId { get; set; } public long UniversityId { get; set; }
public string Code { get; set; } public string Code { get; set; }
public string Name { get; set; } public string Name { get; set; }
public int BudgetPlaces { get; set; } public int PlaceCost { get; set; }
} }

View File

@ -12,6 +12,7 @@ public interface IAdminService
public Task AddLoanTerm(LoanTerm loanTerm); public Task AddLoanTerm(LoanTerm loanTerm);
public Task<string> RemoveAllLoanTermsByBankId(long bankId); public Task<string> RemoveAllLoanTermsByBankId(long bankId);
public Task<IEnumerable<LoanTerm>?> GetAllLoanTermsByBankId(long bankId); public Task<IEnumerable<LoanTerm>?> GetAllLoanTermsByBankId(long bankId);
public Task<IEnumerable<University>> GetAllUniversity();
public Task<string> AddUniversity(string shortName, string fullName, IFormFile file); public Task<string> AddUniversity(string shortName, string fullName, IFormFile file);
public Task AddUniversityDirection(UniversityDirection universityDirection); public Task AddUniversityDirection(UniversityDirection universityDirection);
} }
@ -99,6 +100,11 @@ public class AdminService : IAdminService
// -------------------------------------| Университеты |------------------------------------- // -------------------------------------| Университеты |-------------------------------------
public async Task<IEnumerable<University>> GetAllUniversity()
{
return await _databaseContext.Universities.ToListAsync();
}
public async Task<string> AddUniversity(string shortName, string fullName, IFormFile file) public async Task<string> AddUniversity(string shortName, string fullName, IFormFile file)
{ {
string sizeValidator = FileHelper.ValidateMaxFileSize(file, 5, new []{".png"}); string sizeValidator = FileHelper.ValidateMaxFileSize(file, 5, new []{".png"});

View File

@ -5,9 +5,10 @@ namespace PaydayBackend.Services;
public interface IPublicService public interface IPublicService
{ {
public Task<IEnumerable<University>> GetAllUniversity(); public Task<IEnumerable<UniversityDto>> GetAllUniversity();
public Task<IEnumerable<UniversityDirection>?> GetAllUniversityDirectionByUniversityId(long universityId); public Task<IEnumerable<UniversityDirection>?> GetAllUniversityDirectionByUniversityId(long universityId);
// public Task<IEnumerable<LoanTerm> GetAllLoansByDirectionCost(); public Task<IEnumerable<LoanTerm>?> GetAllLoansByDirectionCost(long universityDirectionId);
public Task<long> GetMinPlaceCostByUniversityId(long universityId);
} }
public class PublicService : IPublicService public class PublicService : IPublicService
@ -19,9 +20,21 @@ public class PublicService : IPublicService
_databaseContext = databaseContext; _databaseContext = databaseContext;
} }
public async Task<IEnumerable<University>> GetAllUniversity()
public async Task<IEnumerable<UniversityDto>> GetAllUniversity()
{ {
return await _databaseContext.Universities.ToListAsync(); var result = await _databaseContext.Universities.ToListAsync();
List<UniversityDto> dtos = new List<UniversityDto>();
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<IEnumerable<UniversityDirection>?> GetAllUniversityDirectionByUniversityId(long universityId) public async Task<IEnumerable<UniversityDirection>?> GetAllUniversityDirectionByUniversityId(long universityId)
@ -31,5 +44,29 @@ public class PublicService : IPublicService
return await _databaseContext.UniversityDirections.Where(x => x.UniversityId == universityId).ToListAsync(); return await _databaseContext.UniversityDirections.Where(x => x.UniversityId == universityId).ToListAsync();
} }
public async Task<IEnumerable<LoanTerm>?> GetAllLoansByDirectionCost(long universityDirectionId)
{
var universityDirection = await _databaseContext.UniversityDirections.Where(x => x.Id == universityDirectionId).FirstOrDefaultAsync();
if (universityDirection == null)
return null;
List<LoanTerm> loanTerms = await _databaseContext.LoanTerms.Where(x => x.MaxCost >= universityDirection.PlaceCost).ToListAsync();
return loanTerms;
}
public async Task<long> 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;
}
}
} }