Обновил выдачу направлений
All checks were successful
Create and publish a Docker image / build-and-push-image (push) Successful in 17s

This commit is contained in:
Sergey Karmanov 2023-07-30 02:59:16 +03:00
parent 3260da9b78
commit 23e334f201
Signed by: serega404
GPG Key ID: B6AD49C8C835460C
8 changed files with 83 additions and 24 deletions

View File

@ -100,18 +100,4 @@ public class AdminController : ControllerBase
return BadRequest(result); return BadRequest(result);
} }
// TODO: Переделать
/// <summary>
/// Добавление направления университета
/// </summary>
[HttpPost("universities/directions")]
public async Task<ActionResult> AddUniversityDirection([FromBody] UniversityDirection universityDirection)
{
await _adminService.AddUniversityDirection(universityDirection);
return Ok();
}
} }

View File

@ -28,8 +28,8 @@ public class PublicController : ControllerBase
/// Получение всех направлений университета /// Получение всех направлений университета
/// </summary> /// </summary>
/// <response code="400">Университет не найден</response> /// <response code="400">Университет не найден</response>
[HttpGet("university/{id}/direction")] [HttpGet("university/{id}/directions")]
public async Task<ActionResult<IEnumerable<UniversityDto>>> GetAllUniversityDirectionByUniversityId(long id) public async Task<ActionResult<IEnumerable<UniversityDirectionDto>>> GetAllUniversityDirectionByUniversityId(long id)
{ {
var result = await _publicService.GetAllUniversityDirectionByUniversityId(id); var result = await _publicService.GetAllUniversityDirectionByUniversityId(id);

View File

@ -1,4 +1,6 @@
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using PaydayBackend.Models;
using PaydayBackend.Services;
namespace PaydayBackend.Controllers; namespace PaydayBackend.Controllers;
@ -6,11 +8,22 @@ namespace PaydayBackend.Controllers;
[ApiController] [ApiController]
public class UniversityController : ControllerBase public class UniversityController : ControllerBase
{ {
private readonly IAdminService _adminService;
public UniversityController() public UniversityController(IAdminService adminService)
{ {
_adminService = adminService;
} }
/// <summary>
/// Добавление направления университета
/// </summary>
/// <response code="400">Университет не найден</response>
[HttpPost("universities/directions")]
public async Task<ActionResult<string>> AddUniversityDirection([FromBody] UniversityDirectionDto universityDirection)
{
var result = await _adminService.AddUniversityDirection(universityDirection);
return result == "OK" ? Ok() : BadRequest(result);
}
} }

View File

@ -1,4 +1,5 @@
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace PaydayBackend.Models; namespace PaydayBackend.Models;
@ -9,5 +10,6 @@ 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; }
[NotMapped]
public List<UniversityDirection> Directions { get; set; } = null; public List<UniversityDirection> Directions { get; set; } = null;
} }

View File

@ -12,5 +12,6 @@ public class UniversityDirection
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 string Url { get; set; }
public int PlaceCost { get; set; } public int PlaceCost { get; set; }
} }

View File

@ -0,0 +1,26 @@
using System.ComponentModel.DataAnnotations;
namespace PaydayBackend.Models;
public class UniversityDirectionDto
{
public UniversityDirectionDto(long id, long universityId, string code, string name, string url, int placeCost)
{
Id = id;
UniversityId = universityId;
Code = code;
Name = name;
Url = url;
PlaceCost = placeCost;
}
public long Id { get; set; }
public long UniversityId { get; set; }
[MinLength(5)]
[MaxLength(10)]
public string Code { get; set; }
[MaxLength(50)]
public string Name { get; set; }
public string Url { get; set; }
public int PlaceCost { get; set; }
}

View File

@ -7,14 +7,17 @@ namespace PaydayBackend.Services;
public interface IAdminService public interface IAdminService
{ {
// Bank
public Task<string> AddBank(string bankName, IFormFile file); public Task<string> AddBank(string bankName, IFormFile file);
public Task<IEnumerable<Bank>> GetAllBanks(); public Task<IEnumerable<Bank>> GetAllBanks();
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);
// University
public Task<bool> UniversityIsExist(long universityId);
public Task<IEnumerable<University>> GetAllUniversity(); 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<string> AddUniversityDirection(UniversityDirectionDto universityDirection);
} }
public class AdminService : IAdminService public class AdminService : IAdminService
@ -30,6 +33,14 @@ public class AdminService : IAdminService
return true; return true;
} }
public async Task<bool> UniversityIsExist(long universityId)
{
if (await _databaseContext.Universities.Where(x => x.Id == universityId).FirstOrDefaultAsync() == null)
return false;
return true;
}
public AdminService(DatabaseContext databaseContext, IStorageService storageService) public AdminService(DatabaseContext databaseContext, IStorageService storageService)
{ {
_databaseContext = databaseContext; _databaseContext = databaseContext;
@ -136,9 +147,21 @@ public class AdminService : IAdminService
return "Image not uploaded"; return "Image not uploaded";
} }
public async Task AddUniversityDirection(UniversityDirection universityDirection) public async Task<string> AddUniversityDirection(UniversityDirectionDto dto)
{ {
var university = await _databaseContext.Universities.Where(x => x.Id == dto.UniversityId).FirstOrDefaultAsync();
if (university == null)
return "University not found";
var universityDirection = new UniversityDirection();
universityDirection.UniversityId = dto.UniversityId;
universityDirection.Name = dto.Name;
universityDirection.Code = dto.Code;
universityDirection.PlaceCost = dto.PlaceCost;
await _databaseContext.UniversityDirections.AddAsync(universityDirection); await _databaseContext.UniversityDirections.AddAsync(universityDirection);
await _databaseContext.SaveChangesAsync(); await _databaseContext.SaveChangesAsync();
return "OK";
} }
} }

View File

@ -6,7 +6,7 @@ namespace PaydayBackend.Services;
public interface IPublicService public interface IPublicService
{ {
public Task<IEnumerable<UniversityDto>> GetAllUniversity(); public Task<IEnumerable<UniversityDto>> GetAllUniversity();
public Task<IEnumerable<UniversityDirection>?> GetAllUniversityDirectionByUniversityId(long universityId); public Task<IEnumerable<UniversityDirectionDto>?> GetAllUniversityDirectionByUniversityId(long universityId);
public Task<IEnumerable<LoanTerm>?> GetAllLoansByDirectionCost(long universityDirectionId); public Task<IEnumerable<LoanTerm>?> GetAllLoansByDirectionCost(long universityDirectionId);
public Task<long> GetMinPlaceCostByUniversityId(long universityId); public Task<long> GetMinPlaceCostByUniversityId(long universityId);
} }
@ -37,12 +37,20 @@ public class PublicService : IPublicService
return dtos; return dtos;
} }
public async Task<IEnumerable<UniversityDirection>?> GetAllUniversityDirectionByUniversityId(long universityId) public async Task<IEnumerable<UniversityDirectionDto>?> GetAllUniversityDirectionByUniversityId(long universityId)
{ {
if (await _databaseContext.Universities.Where(x => x.Id == universityId).FirstOrDefaultAsync() == null) if (await _databaseContext.Universities.Where(x => x.Id == universityId).FirstOrDefaultAsync() == null)
return null; return null;
return await _databaseContext.UniversityDirections.Where(x => x.UniversityId == universityId).ToListAsync(); var result = await _databaseContext.UniversityDirections.Where(x => x.UniversityId == universityId).ToListAsync();
List<UniversityDirectionDto> dtos = new List<UniversityDirectionDto>();
foreach (var item in result)
{
UniversityDirectionDto dto = new UniversityDirectionDto(item.Id, item.UniversityId, item.Code, item.Name, item.Url, item.PlaceCost);
dtos.Add(dto);
}
return dtos;
} }
public async Task<IEnumerable<LoanTerm>?> GetAllLoansByDirectionCost(long universityDirectionId) public async Task<IEnumerable<LoanTerm>?> GetAllLoansByDirectionCost(long universityDirectionId)