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)