Beispiel #1
0
        public async Task <EventVerification> VerifyCodeAsync(VerifyCodeRequest request)
        {
            var codeInt = int.Parse(request.Code, System.Globalization.NumberStyles.HexNumber);
            var item    = await _context.EventVerifications
                          .SingleOrDefaultAsync(ci => ci.EventId == request.EventId &&
                                                ci.EventVerificationId == codeInt);

            if (item == null)
            {
                throw new QueryException(
                          ErrorBuilder.New()
                          .SetMessage("Invalid code or eventId")
                          .SetCode("ID_UNKNOWN")
                          .Build());
            }

            if (item.Status != PresenceStatusEnum.SignedUp)
            {
                throw new QueryException(
                          ErrorBuilder.New()
                          .SetMessage("EventVerificationId have already been used")
                          .SetCode("ID_UNKNOWN")
                          .Build());
            }

            item.Status = PresenceStatusEnum.Attend;
            _context.EventVerifications.Update(item);
            await _context.SaveChangesAsync();

            return(item);
        }
        public async Task Consume(ConsumeContext <SignUpEventSuccessEvent> context)
        {
            var ev = await _context.EventVerifications
                     .SingleOrDefaultAsync(ev => ev.UserId == context.Message.UserId && ev.EventId == context.Message.EventId);

            if (ev == null)
            {
                ev = new EventVerification()
                {
                    EventId = context.Message.EventId,
                    UserId  = context.Message.UserId,
                };
                await _context.EventVerifications.AddAsync(ev);

                await _context.SaveChangesAsync();
            }
        }