public async Task <Unit> Handle(Command request, CancellationToken cancellationToken) { var activity = await _context.Activities.FindAsync(request.Id); if (activity == null) { throw new RestException(HttpStatusCode.NotFound, new { Activity = "Couldnot find activity" }); } var user = await _context.Users.SingleOrDefaultAsync(x => x.UserName == _userAccessor.GetCurrentUsername()); var attendance = await _context.UserActivities.SingleOrDefaultAsync(x => x.ActivityId == activity.Id && x.AppUserId == user.Id); if (attendance != null) { throw new RestException(HttpStatusCode.BadRequest, new { Attendance = "Already attending this activity" }); } attendance = new Domain.UserActivity { Activity = activity, AppUser = user, IsHost = false, DateJoined = DateTime.Now }; _context.UserActivities.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 activity = await _context.Activities.FindAsync(request.Id); if (activity == null) { throw new RestExceptions(HttpStatusCode.BadRequest, new { Activity = "Activity not found" }); } var user = _context.Users.SingleOrDefault(r => r.UserName == _userAccessor.GetUserName()); var attandee = _context.UserActivities.SingleOrDefault(x => x.AppUserId == user.Id && x.ActivityId == request.Id); if (attandee != null) { throw new RestExceptions(HttpStatusCode.BadRequest, new { ActivityDto = "User Already attending Activity" }); } attandee = new Domain.UserActivity { AppUserId = user.Id, ActivityId = request.Id, IsHost = false, JoinedAt = DateTime.Now }; _context.UserActivities.Add(attandee); var succeded = await _context.SaveChangesAsync() > 0; if (succeded) { return(Unit.Value); } throw new Exception("Problem saving data"); }
public async Task <Unit> Handle(Command request, CancellationToken cancellationToken) { //get activity and ensure not null var activity = await _context.Activities.FindAsync(request.Id); if (activity == null) { throw new Application.Errors.RestException(HttpStatusCode.NotFound, new { activity = "Activity not found." }); } //get user - can't be null because token is required var user = await _context.Users.SingleOrDefaultAsync(x => x.UserName == _userAccessor.GetCurrentUserName()); //see if attendance already exists var attendance = await _context.UserActivities .SingleOrDefaultAsync(x => x.ActivityId == activity.Id && x.AppUserId == user.Id); if (attendance != null) { throw new Application.Errors.RestException(HttpStatusCode.BadRequest, new { attendance = "User already attending activity." }); } //create attendance attendance = new Domain.UserActivity { Activity = activity, AppUser = user, DateJoined = DateTime.Now, IsHost = false }; _context.UserActivities.Add(attendance); var success = await _context.SaveChangesAsync() > 0; if (success) { return(Unit.Value); } throw new Exception("Problem saving changes."); }
//return Unit, not anything to do with activity public async Task <Unit> Handle(Command request, CancellationToken cancellationToken) { //compose activity var activity = new Domain.Activity { Id = request.Id, Title = request.Title, Description = request.Description, Category = request.Category, Date = request.Date, City = request.City, Venue = request.Venue }; //add activity to DB _context.Add(activity); //get user from DB var user = await _context.Users.SingleOrDefaultAsync(x => x.UserName == _userAccessor.GetCurrentUserName()); //create attendee - notice AppUserId and ActivityId are not required var attendee = new Domain.UserActivity { AppUser = user, Activity = activity, DateJoined = DateTime.Now, IsHost = true }; //add attendee to database _context.UserActivities.Add(attendee); //SaveChangesAsync returns and int, so we check to make sure that at least one change has occured var success = await _context.SaveChangesAsync() > 0; if (success) { return(Unit.Value); } throw new Exception("Problem saving changes."); }
public RestException(HttpStatusCode code, object errors = null, Domain.UserActivity userActivity = null) { Code = code; Errors = errors; }