コード例 #1
0
            public async Task <Unit> Handle(Command request, CancellationToken cancellationToken)
            {
                var course = await _context.Courses.Where(x => x.Id == request.CourseId).FirstOrDefaultAsync();

                if (course == null)
                {
                    throw new RestException(HttpStatusCode.BadRequest, new { Grupa = "Nie znaleziono kursu" });
                }

                var user = await _context.Users.Where(x => x.Id == request.UserId).FirstOrDefaultAsync();

                if (user == null)
                {
                    throw new RestException(HttpStatusCode.BadRequest, new { Użytkownik = "Nie znaleziono użytkownika" });
                }

                var courseMainLecturer = await _context.CourseMainLecturers
                                         .Where(x => x.CourseId == course.Id && x.MainLecturerId == user.Id)
                                         .FirstOrDefaultAsync();

                if (courseMainLecturer != null)
                {
                    throw new RestException(HttpStatusCode.BadRequest, new { Użytkownik = "Użytkownik jest już głównym prowadzącym tego kursu" });
                }

                courseMainLecturer = new CourseMainLecturer()
                {
                    CourseId       = course.Id,
                    MainLecturerId = user.Id
                };

                _context.CourseMainLecturers.Add(courseMainLecturer);

                var success = await _context.SaveChangesAsync() > 0;

                if (success)
                {
                    return(Unit.Value);
                }

                throw new Exception("Problem podczas dodawania");
            }
コード例 #2
0
            public async Task <User> Handle(Command request, CancellationToken cancellationToken)
            {
                if (await _context.Users.Where(x => x.Email == request.Email).AnyAsync())
                {
                    throw new RestException(HttpStatusCode.BadRequest, new { Email = "Email już istnieje" });
                }

                if (await _context.Users.Where(x => x.UserName == request.UserName).AnyAsync())
                {
                    throw new RestException(HttpStatusCode.BadRequest, new { Nick = "Nick już istnieje" });
                }

                if (request.Role == Role.MainLecturer || request.Role == Role.Lecturer || request.Role == Role.Administrator)
                {
                    var currentUserName = _userAccessor.GetCurrentUsername();

                    if (currentUserName == null)
                    {
                        throw new RestException(HttpStatusCode.Unauthorized, new { Role = "Brak uprawnień do rejestracji konta z taką rolą" });
                    }

                    var currentUser = await _userManager.FindByNameAsync(_userAccessor.GetCurrentUsername());

                    if (currentUser == null || currentUser.Role != Role.Administrator)
                    {
                        throw new RestException(HttpStatusCode.Unauthorized, new { Role = "Brak uprawnień do rejestracji konta z taką rolą" });
                    }
                }

                var user = new ApplicationUser()
                {
                    LastName  = request.LastName,
                    FirstName = request.FirstName,
                    Email     = request.Email,
                    UserName  = request.UserName,
                    Role      = request.Role
                };

                var result = await _userManager.CreateAsync(user, request.Password);

                var course = await _context.Courses.Where(x => x.Id == request.CourseId).FirstOrDefaultAsync();

                if (course != null && request.Role == Role.MainLecturer)
                {
                    var courseMainLecturer = new CourseMainLecturer()
                    {
                        CourseId       = course.Id,
                        MainLecturerId = user.Id,
                    };

                    await _context.CourseMainLecturers.AddAsync(courseMainLecturer);

                    await _context.SaveChangesAsync();
                }


                if (result.Succeeded)
                {
                    return(new User
                    {
                        FirstName = user.FirstName,
                        LastName = user.LastName,
                        Email = user.Email,
                        UserName = user.UserName,
                        Role = user.Role,
                        Token = _jwtGenerator.CreateToken(user)
                    });
                }

                throw new Exception("Wystąpił błąd podczas tworzenia konta");
            }