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");
            }