Skip to content
This repository has been archived by the owner on Apr 11, 2024. It is now read-only.

Commit

Permalink
feat(enrolling): use mediatR to handle query
Browse files Browse the repository at this point in the history
This clean-up the controller
  • Loading branch information
ratanparai committed Jun 27, 2020
1 parent ef5cb0a commit 70114d7
Show file tree
Hide file tree
Showing 3 changed files with 41 additions and 24 deletions.
@@ -0,0 +1,26 @@
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using MediatR;
using Microsoft.EntityFrameworkCore;
using OpenCodeFoundation.ESchool.Services.Enrolling.Domain.AggregatesModel.EnrollmentAggregate;
using OpenCodeFoundation.ESchool.Services.Enrolling.Infrastructure;

namespace OpenCodeFoundation.ESchool.Services.Enrolling.API.Application.Queries
{
public class FindAllEnrollmentsHandler
: IRequestHandler<FindAllEnrollmentsQuery, IEnumerable<Enrollment>>
{
private readonly EnrollingContext _context;

public FindAllEnrollmentsHandler(EnrollingContext context)
{
_context = context ?? throw new System.ArgumentNullException(nameof(context));
}

public async Task<IEnumerable<Enrollment>> Handle(FindAllEnrollmentsQuery request, CancellationToken cancellationToken)
{
return await _context.Enrollments.ToListAsync();
}
}
}
@@ -0,0 +1,11 @@
using System.Collections.Generic;
using MediatR;
using OpenCodeFoundation.ESchool.Services.Enrolling.Domain.AggregatesModel.EnrollmentAggregate;

namespace OpenCodeFoundation.ESchool.Services.Enrolling.API.Application.Queries
{
public class FindAllEnrollmentsQuery
: IRequest<IEnumerable<Enrollment>>
{
}
}
Expand Up @@ -2,50 +2,30 @@
using System.Threading.Tasks;
using MediatR;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Logging;
using OpenCodeFoundation.ESchool.Services.Enrolling.API.Application.Commands;
using OpenCodeFoundation.ESchool.Services.Enrolling.API.Application.Queries;
using OpenCodeFoundation.ESchool.Services.Enrolling.Domain.AggregatesModel.EnrollmentAggregate;
using OpenCodeFoundation.ESchool.Services.Enrolling.Infrastructure;

namespace OpenCodeFoundation.ESchool.Services.Enrolling.API.Controllers
{
[ApiController]
[Route("[controller]")]
public class EnrollmentsController : ControllerBase
{
private readonly ILogger<EnrollmentsController> _logger;
private readonly IMediator _mediator;
private readonly EnrollingContext _context;

public EnrollmentsController(
ILogger<EnrollmentsController> logger,
IMediator mediator,
EnrollingContext context)
public EnrollmentsController(IMediator mediator)
{
_logger = logger;
_mediator = mediator;
_context = context;
}

[HttpGet]
public async Task<List<Enrollment>> Get()
{
_logger.LogInformation("Getting all Enrollments");
var enrollments = await _context.Enrollments.ToListAsync();

_logger.LogInformation("Total {NumberOfEnrollment} enrollments retrived", enrollments.Count);
return enrollments;
}
public async Task<IEnumerable<Enrollment>> Get()
=> await _mediator.Send(new FindAllEnrollmentsQuery());

[HttpPost]
public async Task<IActionResult> Post([FromBody] EnrollmentApplicationCommand command)
{
_logger.LogInformation(
"Sending command: {CommandName} - ({@Command})",
command.GetType().Name,
command);

await _mediator.Send(command);
return Ok();
}
Expand Down

0 comments on commit 70114d7

Please sign in to comment.