From 23e334f201596331d647a6a132d6a3d2166d8e79 Mon Sep 17 00:00:00 2001 From: Sergey Karmanov Date: Sun, 30 Jul 2023 02:59:16 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9E=D0=B1=D0=BD=D0=BE=D0=B2=D0=B8=D0=BB=20?= =?UTF-8?q?=D0=B2=D1=8B=D0=B4=D0=B0=D1=87=D1=83=20=D0=BD=D0=B0=D0=BF=D1=80?= =?UTF-8?q?=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- PaydayBackend/Controllers/AdminController.cs | 16 +---------- PaydayBackend/Controllers/PublicController.cs | 4 +-- .../Controllers/UniversityController.cs | 17 ++++++++++-- PaydayBackend/Models/University.cs | 2 ++ PaydayBackend/Models/UniversityDirection.cs | 1 + .../Models/UniversityDirectionDTO.cs | 26 ++++++++++++++++++ PaydayBackend/Services/IAdminService.cs | 27 +++++++++++++++++-- PaydayBackend/Services/IPublicService.cs | 14 +++++++--- 8 files changed, 83 insertions(+), 24 deletions(-) create mode 100644 PaydayBackend/Models/UniversityDirectionDTO.cs diff --git a/PaydayBackend/Controllers/AdminController.cs b/PaydayBackend/Controllers/AdminController.cs index 70a46d4..ca7a3b2 100644 --- a/PaydayBackend/Controllers/AdminController.cs +++ b/PaydayBackend/Controllers/AdminController.cs @@ -99,19 +99,5 @@ public class AdminController : ControllerBase return BadRequest(result); } - - - - // TODO: Переделать - /// - /// Добавление направления университета - /// - [HttpPost("universities/directions")] - public async Task AddUniversityDirection([FromBody] UniversityDirection universityDirection) - { - await _adminService.AddUniversityDirection(universityDirection); - return Ok(); - } - - + } \ No newline at end of file diff --git a/PaydayBackend/Controllers/PublicController.cs b/PaydayBackend/Controllers/PublicController.cs index 533809d..332d326 100644 --- a/PaydayBackend/Controllers/PublicController.cs +++ b/PaydayBackend/Controllers/PublicController.cs @@ -28,8 +28,8 @@ public class PublicController : ControllerBase /// Получение всех направлений университета /// /// Университет не найден - [HttpGet("university/{id}/direction")] - public async Task>> GetAllUniversityDirectionByUniversityId(long id) + [HttpGet("university/{id}/directions")] + public async Task>> GetAllUniversityDirectionByUniversityId(long id) { var result = await _publicService.GetAllUniversityDirectionByUniversityId(id); diff --git a/PaydayBackend/Controllers/UniversityController.cs b/PaydayBackend/Controllers/UniversityController.cs index 4e33106..bc4315e 100644 --- a/PaydayBackend/Controllers/UniversityController.cs +++ b/PaydayBackend/Controllers/UniversityController.cs @@ -1,4 +1,6 @@ using Microsoft.AspNetCore.Mvc; +using PaydayBackend.Models; +using PaydayBackend.Services; namespace PaydayBackend.Controllers; @@ -6,11 +8,22 @@ namespace PaydayBackend.Controllers; [ApiController] public class UniversityController : ControllerBase { + private readonly IAdminService _adminService; - public UniversityController() + public UniversityController(IAdminService adminService) { + _adminService = adminService; } - + /// + /// Добавление направления университета + /// + /// Университет не найден + [HttpPost("universities/directions")] + public async Task> AddUniversityDirection([FromBody] UniversityDirectionDto universityDirection) + { + var result = await _adminService.AddUniversityDirection(universityDirection); + return result == "OK" ? Ok() : BadRequest(result); + } } \ No newline at end of file diff --git a/PaydayBackend/Models/University.cs b/PaydayBackend/Models/University.cs index b794eeb..f5aed5e 100644 --- a/PaydayBackend/Models/University.cs +++ b/PaydayBackend/Models/University.cs @@ -1,4 +1,5 @@ using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; namespace PaydayBackend.Models; @@ -9,5 +10,6 @@ public class University public string Name { get; set; } public string FullName { get; set; } public string ImageUrl { get; set; } + [NotMapped] public List Directions { get; set; } = null; } \ No newline at end of file diff --git a/PaydayBackend/Models/UniversityDirection.cs b/PaydayBackend/Models/UniversityDirection.cs index 8c0b58c..5802bfb 100644 --- a/PaydayBackend/Models/UniversityDirection.cs +++ b/PaydayBackend/Models/UniversityDirection.cs @@ -12,5 +12,6 @@ public class UniversityDirection public long UniversityId { get; set; } public string Code { get; set; } public string Name { get; set; } + public string Url { get; set; } public int PlaceCost { get; set; } } \ No newline at end of file diff --git a/PaydayBackend/Models/UniversityDirectionDTO.cs b/PaydayBackend/Models/UniversityDirectionDTO.cs new file mode 100644 index 0000000..d5e3063 --- /dev/null +++ b/PaydayBackend/Models/UniversityDirectionDTO.cs @@ -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; } +} \ No newline at end of file diff --git a/PaydayBackend/Services/IAdminService.cs b/PaydayBackend/Services/IAdminService.cs index 8aeb359..b3a213f 100644 --- a/PaydayBackend/Services/IAdminService.cs +++ b/PaydayBackend/Services/IAdminService.cs @@ -7,14 +7,17 @@ namespace PaydayBackend.Services; public interface IAdminService { + // Bank public Task AddBank(string bankName, IFormFile file); public Task> GetAllBanks(); public Task AddLoanTerm(LoanTerm loanTerm); public Task RemoveAllLoanTermsByBankId(long bankId); public Task?> GetAllLoanTermsByBankId(long bankId); + // University + public Task UniversityIsExist(long universityId); public Task> GetAllUniversity(); public Task AddUniversity(string shortName, string fullName, IFormFile file); - public Task AddUniversityDirection(UniversityDirection universityDirection); + public Task AddUniversityDirection(UniversityDirectionDto universityDirection); } public class AdminService : IAdminService @@ -29,6 +32,14 @@ public class AdminService : IAdminService return true; } + + public async Task UniversityIsExist(long universityId) + { + if (await _databaseContext.Universities.Where(x => x.Id == universityId).FirstOrDefaultAsync() == null) + return false; + + return true; + } public AdminService(DatabaseContext databaseContext, IStorageService storageService) { @@ -136,9 +147,21 @@ public class AdminService : IAdminService return "Image not uploaded"; } - public async Task AddUniversityDirection(UniversityDirection universityDirection) + public async Task 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.SaveChangesAsync(); + + return "OK"; } } \ No newline at end of file diff --git a/PaydayBackend/Services/IPublicService.cs b/PaydayBackend/Services/IPublicService.cs index 04a2fc0..1b3fb16 100644 --- a/PaydayBackend/Services/IPublicService.cs +++ b/PaydayBackend/Services/IPublicService.cs @@ -6,7 +6,7 @@ namespace PaydayBackend.Services; public interface IPublicService { public Task> GetAllUniversity(); - public Task?> GetAllUniversityDirectionByUniversityId(long universityId); + public Task?> GetAllUniversityDirectionByUniversityId(long universityId); public Task?> GetAllLoansByDirectionCost(long universityDirectionId); public Task GetMinPlaceCostByUniversityId(long universityId); } @@ -37,12 +37,20 @@ public class PublicService : IPublicService return dtos; } - public async Task?> GetAllUniversityDirectionByUniversityId(long universityId) + public async Task?> GetAllUniversityDirectionByUniversityId(long universityId) { if (await _databaseContext.Universities.Where(x => x.Id == universityId).FirstOrDefaultAsync() == 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 dtos = new List(); + 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?> GetAllLoansByDirectionCost(long universityDirectionId)