-
Notifications
You must be signed in to change notification settings - Fork 36
Expand file tree
/
Copy pathSearchBackofficeCoursesByCriteriaQueryHandler.cs
More file actions
29 lines (24 loc) · 1.27 KB
/
SearchBackofficeCoursesByCriteriaQueryHandler.cs
File metadata and controls
29 lines (24 loc) · 1.27 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
using System.Threading.Tasks;
using CodelyTv.Shared.Domain.Bus.Query;
using CodelyTv.Shared.Domain.FiltersByCriteria;
namespace CodelyTv.Backoffice.Courses.Application.SearchByCriteria
{
public class SearchBackofficeCoursesByCriteriaQueryHandler : QueryHandler<SearchBackofficeCoursesByCriteriaQuery, BackofficeCoursesResponse>
{
private readonly BackofficeCoursesByCriteriaSearcher _searcher;
public SearchBackofficeCoursesByCriteriaQueryHandler(BackofficeCoursesByCriteriaSearcher searcher)
{
_searcher = searcher ?? throw new ArgumentNullException(nameof(searcher));
}
public async Task<BackofficeCoursesResponse> Handle(SearchBackofficeCoursesByCriteriaQuery query)
{
if (query == null)
{
throw new ArgumentNullException(nameof(query));
}
Filters filters = Filters.FromValues(query.Filters) ?? throw new InvalidOperationException("Filters are missing");
var order = Order.FromValues(query.OrderBy ?? throw new InvalidOperationException("OrderBy is missing"), query.OrderType ?? throw new InvalidOperationException("OrderType is missing"));
return await _searcher.Search(filters, order, query.Limit, query.Offset);
}
}
}