/
areku
/
Api
Обзор
Документация
Войти
/
areku
/
Api
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
Controllers/StudentController.cs
71 строка
3 KB
Areku
update
13 янв 2026, 15:36
13 янв 2026, 15:36
64ae31a
Код
Авторство
О чём код?
using CollegeApi.Data; using CollegeApi.Models; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; using Swashbuckle.AspNetCore.Annotations; namespace CollegeApi.Controllers { [ApiController] [Route("api/[controller]")] [Authorize(Roles = "Student")] [SwaggerTag("Управление профилем студента")] public class StudentController : ControllerBase { private readonly CollegeDbContext _context; public StudentController(CollegeDbContext context) { _context = context; } [HttpGet("profile")] [SwaggerOperation(Summary = "Профиль студента", Description = "Получение профиля текущего студента")] public async Task<IActionResult> GetProfile() { var username = User.Identity?.Name; var student = await _context.StudentProfiles .Include(s => s.Group) .FirstOrDefaultAsync(s => s.User.Username == username); if (student == null) return NotFound("Профиль студента не найден"); return Ok(student); } [HttpPost("enroll")] [SwaggerOperation(Summary = "Запись студента на курс", Description = "Студент может записаться на курс")] public async Task<IActionResult> EnrollToCourse([FromBody] int courseId) { var username = User.Identity?.Name; var student = await _context.StudentProfiles .Include(s => s.Enrollments) .FirstOrDefaultAsync(s => s.User.Username == username); var course = await _context.Courses.FindAsync(courseId); if (student == null || course == null) return NotFound("Студент или курс не найден"); if (student.Enrollments.Any(e => e.CourseId == courseId)) return BadRequest("Вы уже записаны на этот курс"); var enrollment = new Enrollment { StudentProfileId = student.Id, CourseId = course.Id, EnrolledAt = DateTime.UtcNow }; _context.Enrollments.Add(enrollment); await _context.SaveChangesAsync(); return Ok("Вы успешно записались на курс"); } } }