private async Task <IndexUseCase.UserSummary> ToUserData(ApplicationUser user) { var roles = await _userManager.GetRolesAsync(user); return(new IndexUseCase.UserSummary() { ID = user.Id, FullName = user.FullName, Email = user.Email, CanShowDetails = (await _authorizer.Authorize(new DetailsUseCase.Query() { UserId = user.Id })).Succeeded, CanDelete = (await _authorizer.Authorize(new DeleteUseCase.Command() { UserID = user.Id })).Succeeded, Roles = roles.ToList(), CanGrantRoles = (await _authorizer.Authorize(new GrantRoleUseCase.Command() { UserID = user.Id })).Succeeded, CanRevokeRoles = (await _authorizer.Authorize(new RevokeRoleUseCase.Command() { UserID = user.Id })).Succeeded }); }
public async Task <DetailsUseCase.UserDetails> Handle(DetailsUseCase.Query request, CancellationToken cancellationToken) { var user = await _userManager.FindByIdAsync(request.UserId.ToString()); if (user == null) { throw new ResourceNotFoundException(); } var roleNames = await _userManager.GetRolesAsync(user); var roles = await _roleManager.Roles.Where(x => roleNames.Contains(x.Name)).ToListAsync(); return(new DetailsUseCase.UserDetails() { ID = user.Id, FirstName = user.FirstName, LastName = user.LastName, FullName = user.FullName, Email = user.Email, Roles = (await roles.SelectAsync(x => BuildRole(x, user))).ToArray(), CanChangeName = (await _authorizer.Authorize(new ChangeNameUseCase.Command() { UserID = user.Id })).Succeeded, CanGrantRoles = (await _authorizer.Authorize(new GrantRoleUseCase.Command() { UserID = user.Id })).Succeeded, CanDelete = (await _authorizer.Authorize(new DeleteUseCase.Command() { UserID = user.Id })).Succeeded, }); }
public async Task <IndexUseCase.EditionSummary[]> Handle(IndexUseCase.Query request, CancellationToken cancellationToken) { var editions = await _dbContext.Editions.AsNoTracking().ToListAsync(); return(await Task.WhenAll(editions .Select(async x => new IndexUseCase.EditionSummary() { ID = x.ID, Name = x.Name, StartDate = NodaTime.LocalDate.FromDateTime(x.StartDate), EndDate = NodaTime.LocalDate.FromDateTime(x.EndDate), CanShowDetails = (await _authorizationAnalyzer.Authorize(new DetailsUseCase.Query() { EditionID = x.ID })).Succeeded }))); }
public async Task <Result <Campaign, Error> > Handle(Query request, CancellationToken cancellationToken) { var campaign = await _repository.GetById(request.CampaignID); if (campaign == null) { return(Result.Failure <Campaign, Error>(new Error.ResourceNotFound($"Nie znaleziono kampanii o ID={request.CampaignID}"))); } var now = _clock.GetCurrentInstant(); var trainerIDs = campaign.Trainings.Select(x => x.CoordinatorID).Distinct().ToArray(); var trainers = await _trainerProvider.GetTrainerDetails(trainerIDs); var isrecruitmentFormOpen = new Interval(campaign.StartDateTime.ToInstant(), campaign.EndDateTime.ToInstant()).Contains(now); var canScheduleTraining = (now < campaign.StartDateTime.ToInstant()) && (await _authorizationAnalyzer.Authorize(new ScheduleTraining.Command())).Succeeded; return(Result.Success <Campaign, Error>(new Campaign() { ID = campaign.Id, Name = campaign.Name, StartDateTime = campaign.StartDateTime, EndDateTime = campaign.EndDateTime, Trainings = campaign.Trainings .OrderBy(x => x.StartDateTime, OffsetDateTime.Comparer.Instant) .Select(x => new TrainingSummary() { ID = x.ID, Address = x.Address, City = x.City, CoordinatorID = x.CoordinatorID, CoordinatorName = trainers.Single(y => y.Guid == x.CoordinatorID).Name, StartDateTime = x.StartDateTime, EndDateTime = x.EndDateTime, Timing = x.CalculateTiming(now) }) .ToArray(), IsRecruitmentFormOpen = isrecruitmentFormOpen, CanScheduleTraining = canScheduleTraining })); }
public async Task <Result <EditionDetails, Error> > Handle(Query request, CancellationToken cancellationToken) { if (request.EditionID == default) { return(Result.Failure <EditionDetails, Error>(new Error.ResourceNotFound())); } var edition = await _dbContext.Editions .AsNoTracking() .Where(x => x.ID == request.EditionID) .SingleOrDefaultAsync(); if (edition == null) { return(Result.Failure <EditionDetails, Error>(new Error.ResourceNotFound())); } var campaigns = await _mediator.Send(new Szlem.Recruitment.Campaigns.Index.Query() { EditionID = edition.ID }); var isCurrent = (edition.StartDate <= DateTime.Today && edition.EndDate >= DateTime.Today); var canAddRecruitmentCampaign = edition.EndDate >= DateTime.Today && (await _authorizer.Authorize(new Szlem.Recruitment.Campaigns.Create.Command() { EditionID = edition.ID })).Succeeded; return(Result.Success <EditionDetails, Error>(new EditionDetails() { ID = edition.ID, Name = edition.Name, StartDate = NodaTime.LocalDate.FromDateTime(edition.StartDate), EndDate = NodaTime.LocalDate.FromDateTime(edition.EndDate), CumulativeStatistics = edition.CumulativeStatistics, ThisEditionStatistics = edition.ThisEditionStatistics, RecruitmentCampaigns = campaigns.IsSuccess ? campaigns.Value.Select(x => new EditionDetails.RecruitmentCampaignData() { ID = x.ID, Name = x.Name, StartDateTime = x.StartDateTime, EndDateTime = x.EndDateTime }).ToArray() : new EditionDetails.RecruitmentCampaignData[0], CanAddRecruitmentCampaign = canAddRecruitmentCampaign, IsCurrent = isCurrent })); }