implemented custom SurveyService.cs

This commit is contained in:
Вячеслав 2025-04-20 15:30:20 +05:00
parent 7a1078457d
commit 00e93fde2e
2 changed files with 38 additions and 8 deletions

View file

@ -60,4 +60,13 @@ public class SurveyController : ControllerBase
await _surveyService.DeleteSurveyAsync(id); await _surveyService.DeleteSurveyAsync(id);
return Ok(); return Ok();
} }
[Authorize]
[HttpGet("my_surveys")]
public async Task<IActionResult> GetMySurveys()
{
var userId = _userContext.UserId;
var result = await _surveyService.GetSurveysByUserIdAsync(userId);
return Ok(result);
}
} }

View file

@ -1,4 +1,6 @@
using SurveyBackend.Core.Contexts;
using SurveyBackend.Core.Repositories; using SurveyBackend.Core.Repositories;
using SurveyBackend.Services.Exceptions;
using SurveyLib.Core.Models; using SurveyLib.Core.Models;
using SurveyLib.Core.Repositories; using SurveyLib.Core.Repositories;
using SurveyLib.Core.Services; using SurveyLib.Core.Services;
@ -8,39 +10,58 @@ namespace SurveyBackend.Services.Services;
public class SurveyService : ISurveyService public class SurveyService : ISurveyService
{ {
private readonly ISurveyRepository _surveyRepository; private readonly ISurveyRepository _surveyRepository;
private readonly IUserContext _userContext;
public SurveyService(ISurveyRepository surveyRepository) public SurveyService(ISurveyRepository surveyRepository, IUserContext userContext)
{ {
_surveyRepository = surveyRepository; _surveyRepository = surveyRepository;
_userContext = userContext;
} }
public async Task AddSurveyAsync(Survey survey) public async Task AddSurveyAsync(Survey survey)
{ {
throw new NotImplementedException(); await _surveyRepository.AddAsync(survey);
} }
public async Task UpdateSurveyAsync(Survey survey) public async Task UpdateSurveyAsync(Survey survey)
{ {
throw new NotImplementedException(); if (survey.CreatedBy != _userContext.UserId)
throw new UnauthorizedAccessException("You are not authorized to update this survey.");
await _surveyRepository.UpdateAsync(survey);
} }
public async Task DeleteSurveyAsync(int id) public async Task DeleteSurveyAsync(int id)
{ {
throw new NotImplementedException(); var survey = await _surveyRepository.GetByIdAsync(id);
if (survey is null)
{
throw new NotFoundException("Survey not found");
}
if (survey.CreatedBy != _userContext.UserId)
{
throw new UnauthorizedAccessException("You are not authorized to delete this survey.");
}
} }
public async Task<IEnumerable<Survey>> GetSurveysAsync() public async Task<IEnumerable<Survey>> GetSurveysAsync()
{ {
throw new NotImplementedException(); return await _surveyRepository.GetAllAsync();
} }
public async Task<Survey?> GetSurveyAsync(int id) public async Task<Survey> GetSurveyAsync(int id)
{ {
throw new NotImplementedException(); var survey = await _surveyRepository.GetByIdAsync(id);
if (survey is null)
{
throw new NotFoundException("Survey not found");
}
return survey;
} }
public async Task<IEnumerable<Survey>> GetSurveysByUserIdAsync(int userId) public async Task<IEnumerable<Survey>> GetSurveysByUserIdAsync(int userId)
{ {
throw new NotImplementedException(); return await _surveyRepository.GetSurveysByUserIdAsync(userId);
} }
} }