public async Task <Unit> Handle(Command request, CancellationToken cancellationToken) { // Get activity from database var activityFromDB = await _context.Activities.FindAsync(request.Id); if (activityFromDB == null) { throw new RESTException(HttpStatusCode.NotFound, new { Activity = "Could not find activity" }); } var currentUser = await _context.Users.SingleOrDefaultAsync(user => user.UserName == _userAccessor.GetCurrentUsername() ); var attendance = await _context.ApplicationUserActivities.SingleOrDefaultAsync(aua => aua.ActivityId == activityFromDB.Id && aua.ApplicationUserId == currentUser.Id ); if (attendance != null) { throw new RESTException(HttpStatusCode.BadRequest, new { Attendence = "Already attending this activity" }); } attendance = new ApplicationUserActivity { Activity = activityFromDB, ApplicationUser = currentUser, IsHost = false, DateJoined = DateTime.Now }; _context.ApplicationUserActivities.Add(attendance); var success = await _context.SaveChangesAsync() > 0; if (success) { return(Unit.Value); } throw new Exception("Problem adding new attendance to the database"); }
public async Task <Unit> Handle(Command request, CancellationToken cancellationToken) { var newActivity = new Activity { Id = request.Id, Title = request.Title, Description = request.Description, Category = request.Category, Date = request.Date, City = request.City, Venue = request.Venue }; _context.Activities.Add(newActivity); var currentUser = await _context.Users.SingleOrDefaultAsync(user => user.UserName == _userAccessor.GetCurrentUsername() ); var newApplicationUserActivity = new ApplicationUserActivity { ApplicationUser = currentUser, Activity = newActivity, IsHost = true, DateJoined = DateTime.Now }; _context.ApplicationUserActivities.Add(newApplicationUserActivity); var success = await _context.SaveChangesAsync() > 0; if (success) { return(Unit.Value); } throw new Exception("Problem adding new activity to the database"); }