public async Task <string> Handle(CreateEmptyListRequest request, CancellationToken cancellationToken) { // check for existing contributions // if this is equal to limit already, throw 403 var contributionsForUser = _context.ListContributors.Where(lc => lc.UserIdent == request.UserIdent); var listsLimit = _configuration.GetValue <int>("Limits:Lists"); if (contributionsForUser.Count() >= listsLimit) { throw new RequestFailedException($"List limit reached ({listsLimit})", System.Net.HttpStatusCode.Forbidden); } var list = new List { Id = _randomisedWordProvider.CreateRandomId(), Name = _randomisedWordProvider.CreateRandomName(), Created = _nowProvider.Now, Updated = _nowProvider.Now, }; var contribution = new ListContributor { ListId = list.Id, UserIdent = request.UserIdent }; await _context.Lists.AddAsync(list, cancellationToken); await _context.ListContributors.AddAsync(contribution, cancellationToken); await _context.SaveChangesAsync(); return(list.Id); }
public async Task <string> Handle(GetNameRequest request, CancellationToken cancellationToken) { return(_randomisedWordProvider.CreateRandomName()); }