private async Task <bool> HaveFreePlaces(int workshopId, CancellationToken cancellationToken) { var query = new GetSingleItemQuery <Workshop>(workshopId); var item = await mediator.Send(query, cancellationToken); return(item != null && item.FreePlaces > 0); }
public virtual async Task <TDto> Handle(GetSingleItemQuery <TDto> request, CancellationToken cancellationToken) { var item = await ctx.Set <TDal>() .Where(PKWherePredicate(request.Id)) .Select(Selector) .FirstOrDefaultAsync(); return(item); }
public virtual async Task <IActionResult> Create(T model, [FromServices] IMediator mediator) { var command = new AddCommand <T>(model); int id = await mediator.Send(command); var query = new GetSingleItemQuery <T>(id); var item = await mediator.Send(query); return(CreatedAtAction(nameof(Get), new { id }, item)); }
public virtual async Task <ActionResult <T> > Get(int id, [FromServices] IMediator mediator) { var query = new GetSingleItemQuery <T>(id); var item = await mediator.Send(query); if (item == null) { return(Problem(statusCode: StatusCodes.Status404NotFound, detail: $"No data for id = {id}")); } else { return(item); } }
public virtual async Task <IActionResult> Delete(int id, [FromServices] IMediator mediator) { var query = new GetSingleItemQuery <T>(id); var item = await mediator.Send(query); if (item == null) { return(Problem(statusCode: StatusCodes.Status404NotFound, detail: $"Invalid id = {id}")); } var command = new DeleteCommand <T>(id); await mediator.Send(command); return(NoContent()); }
public virtual async Task <IActionResult> Update(int id, T model, [FromServices] IMediator mediator) { if (model.Id != id) //ModelState.IsValid & model != null checked automatically due to [ApiController] { return(Problem(statusCode: StatusCodes.Status400BadRequest, detail: $"Different ids: {id} vs {model.Id}")); } else { var query = new GetSingleItemQuery <T>(id); var item = await mediator.Send(query); if (item == null) { return(Problem(statusCode: StatusCodes.Status404NotFound, detail: $"Invalid id = {id}")); } var command = new UpdateCommand <T>(model); await mediator.Send(command); return(NoContent()); } }
public GetSingleItemQueryResponse GetSingleItem(int itemId, GetSingleItemQuery request) { return(_apiClient.Request <GetSingleItemQueryResponse>(Methods.GET, $"items/{itemId}", request)); }