コード例 #1
0
ファイル: Attend.cs プロジェクト: Adarsha69005/dotnetcore
            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");
            }
コード例 #2
0
            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");
            }
コード例 #3
0
ファイル: Attend.cs プロジェクト: kevingineering/reactivities
            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.");
            }
コード例 #4
0
ファイル: Create.cs プロジェクト: kevingineering/reactivities
            //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.");
            }
コード例 #5
0
 public RestException(HttpStatusCode code, object errors = null, Domain.UserActivity userActivity = null)
 {
     Code   = code;
     Errors = errors;
 }