public async Task <Unit> Handle(Command request, CancellationToken cancellationToken) { var marca = await _context.Marcas.FindAsync(request.Id); if (marca == null) { throw new RestException(HttpStatusCode.NotFound, new { Marca = "Cound not find marca" }); } var user = await _context.Users.SingleOrDefaultAsync(x => x.UserName == _userAccessor.GetCurrentUsername()); var attendance = await _context.UserMarcas .SingleOrDefaultAsync(x => x.MarcaId == marca.Id && x.AppUserId == user.Id); if (attendance != null) { throw new RestException(HttpStatusCode.BadRequest, new { Attendance = "Already attending this marca" }); } attendance = new UserMarca { Marca = marca, AppUser = user, IsHost = false, DateJoined = DateTime.Now }; _context.UserMarcas.Add(attendance); var success = await _context.SaveChangesAsync() > 0; if (success) { return(Unit.Value); } throw new Exception("Problem saving changes"); }
public async Task <Unit> Handle(Command request, CancellationToken cancellationToken) { var marca = new Marca { Id = request.Id, Title = request.Title, Description = request.Description, Category = request.Category, Date = request.Date, City = request.City, Venue = request.Venue, ProcessoNumber = request.ProcessoNumber, Procurador = request.Procurador, Proprietario = request.Proprietario }; _context.Marcas.Add(marca); var user = await _context.Users.SingleOrDefaultAsync(x => x.UserName == _userAccessor.GetCurrentUsername()); var attendee = new UserMarca { AppUser = user, Marca = marca, IsHost = true, DateJoined = DateTime.Now }; _context.UserMarcas.Add(attendee); var success = await _context.SaveChangesAsync() > 0; if (success) { return(Unit.Value); } throw new Exception("Problem saving changes"); }