Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
 public async Task <string> Handle(GetNameRequest request, CancellationToken cancellationToken)
 {
     return(_randomisedWordProvider.CreateRandomName());
 }