Files
EstusShots-Net/EstusShots.Server/Controllers/EpisodesController.cs
2020-02-29 18:04:09 +01:00

70 lines
2.4 KiB
C#

using System;
using System.Threading.Tasks;
using EstusShots.Server.Services;
using EstusShots.Shared.Interfaces;
using EstusShots.Shared.Models;
using EstusShots.Shared.Models.Parameters;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
namespace EstusShots.Server.Controllers
{
[ApiController]
[Route("/api/[controller]/[action]")]
public class EpisodesController : ControllerBase, IEpisodesController
{
private readonly ILogger _logger;
private readonly EpisodesService _episodesService;
public EpisodesController(ILogger<EpisodesController> logger, EpisodesService episodesService)
{
_logger = logger;
_episodesService = episodesService;
}
[HttpPost]
public async Task<ApiResponse<GetEpisodesResponse>> GetEpisodes(GetEpisodesParameter parameter)
{
try
{
_logger.LogInformation($"Request received from client '{Request.HttpContext.Connection.RemoteIpAddress}'");
return await _episodesService.GetEpisodes(parameter);
}
catch (Exception e)
{
_logger.LogError(e, "Exception Occured");
return new ApiResponse<GetEpisodesResponse>(new OperationResult(e));
}
}
[HttpPost]
public async Task<ApiResponse<GetEpisodeResponse>> GetEpisode(GetEpisodeParameter parameter)
{
try
{
_logger.LogInformation($"Request received from client '{Request.HttpContext.Connection.RemoteIpAddress}'");
return await _episodesService.GetEpisode(parameter);
}
catch (Exception e)
{
_logger.LogError(e, "Exception Occured");
return new ApiResponse<GetEpisodeResponse>(new OperationResult(e));
}
}
[HttpPost]
public async Task<ApiResponse<SaveEpisodeResponse>> SaveEpisode(SaveEpisodeParameter parameter)
{
try
{
_logger.LogInformation($"Request received from client '{Request.HttpContext.Connection.RemoteIpAddress}'");
return await _episodesService.SaveEpisode(parameter);
}
catch (Exception e)
{
_logger.LogError(e, "Exception Occured");
return new ApiResponse<SaveEpisodeResponse>(new OperationResult(e));
}
}
}
}