private async Task CheckProcessingVideosAsync(VideoService videoService, FairplaytubeDatabaseContext fairplaytubeDatabaseContext, CancellationToken stoppingToken) { this.Logger?.LogInformation("Checking processing videos"); var processingInDB = await videoService.GetDatabaseProcessingVideosIdsAsync(stoppingToken); string message = $"{processingInDB.Length} videos marked as processing In DB"; this.Logger?.LogInformation(message); if (processingInDB.Length > 0) { this.Logger?.LogInformation("Retrieving videos status in Azure Video Indexer"); var videosIndex = await videoService.GetVideoIndexerStatusAsync(processingInDB, stoppingToken); if (videosIndex.results.Length > 0) { var indexCompleteVideos = videosIndex.results.Where(p => p.state == Common.Global.Enums.VideoIndexStatus.Processed.ToString()); if (indexCompleteVideos.Any()) { var indexCompleteVideosIds = indexCompleteVideos.Select(p => p.id).ToArray(); await videoService.AddVideoIndexTransactionsAsync(indexCompleteVideosIds, stoppingToken); var videosCompleted = fairplaytubeDatabaseContext.VideoInfo.Where(video => indexCompleteVideosIds.Contains(video.VideoId)); foreach (var video in videosCompleted) { await videoService.MarkVideoAsProcessedAsync(video, stoppingToken); } } } } }
public PaymentService(PaypalService paypalService, FairplaytubeDatabaseContext fairplaytubeDatabaseContext, ILogger <CustomHttpClientHandler> customHttpClientHandlerLogger) { this.FairplaytubeDatabaseContext = fairplaytubeDatabaseContext; this.PaypalService = paypalService; this.CustomHttpClientHandlerLogger = customHttpClientHandlerLogger; }
/// <summary> /// Initializes <see cref="UserProfileController"/> /// </summary> /// <param name="fairplaytubeDatabaseContext"></param> /// <param name="currentUserProvider"></param> /// <param name="paymentService"></param> public UserProfileController(FairplaytubeDatabaseContext fairplaytubeDatabaseContext, ICurrentUserProvider currentUserProvider, PaymentService paymentService) { this.FairplaytubeDatabaseContext = fairplaytubeDatabaseContext; this.CurrentUserProvider = currentUserProvider; this.PaymentService = paymentService; }
/// <summary> /// /// </summary> /// <param name="actionContextAccessor"></param> /// <param name="currentUserProvider"></param> /// <param name="fairplaytubeDatabase"></param> public PaidFeatureFilter(IActionContextAccessor actionContextAccessor, ICurrentUserProvider currentUserProvider, FairplaytubeDatabaseContext fairplaytubeDatabase) { this.ActionContextAccessor = actionContextAccessor; this.CurrentUserProvider = currentUserProvider; this.FairplaytubeDatabase = fairplaytubeDatabase; }
public VideoJobService(FairplaytubeDatabaseContext fairplaytubeDatabaseContext, ICurrentUserProvider currentUserProvider, IStringLocalizer <VideoJobService> localizer) { this.FairplaytubeDatabaseContext = fairplaytubeDatabaseContext; this.CurrentUserProvider = currentUserProvider; this.Localizer = localizer; }
public VisitorTrackingService(IHttpContextAccessor httpContextAccessor, FairplaytubeDatabaseContext fairplaytubeDatabaseContext, IpStackService ipStackService, IpDataService ipDataService) { this.HttpContextAccessor = httpContextAccessor; this.FairplaytubeDatabaseContext = fairplaytubeDatabaseContext; this.IpStackService = ipStackService; this.IpDataService = ipDataService; }
/// <summary> /// Initializes <see cref="UserController"/> /// </summary> /// <param name="fairplaytubeDatabaseContext"></param> /// <param name="currentUserProvider"></param> /// <param name="emailService"></param> /// <param name="messageService"></param> /// <param name="userService"></param> public UserController(FairplaytubeDatabaseContext fairplaytubeDatabaseContext, ICurrentUserProvider currentUserProvider, EmailService emailService, MessageService messageService, UserService userService) { this.FairplaytubeDatabaseContext = fairplaytubeDatabaseContext; this.CurrentUserProvider = currentUserProvider; this.EmailService = emailService; this.MessageService = messageService; this.UserService = userService; }
public PayoutService(PaypalService paypalService, FairplaytubeDatabaseContext fairplaytubeDatabaseContext, ICurrentUserProvider currentUserProvider, IStringLocalizer <PayoutService> localizer) { this.PaypalService = paypalService; this.FairplaytubeDatabaseContext = fairplaytubeDatabaseContext; this.CurrentUserProvider = currentUserProvider; Localizer = localizer; }
public VideoCommentService(FairplaytubeDatabaseContext fairplaytubeDatabaseContext, TextAnalysisService textAnalysisService, ContentModerationService contentModerationService, ICurrentUserProvider currentUserProvider) { this.FairplaytubeDatabaseContext = fairplaytubeDatabaseContext; this.TextAnalysisService = textAnalysisService; this.ContentModerationService = contentModerationService; this.CurrentUserProvider = currentUserProvider; }
public UserRequestService(FairplaytubeDatabaseContext fairplaytubeDatabaseContext, IStringLocalizer <UserRequestService> localizer, ICurrentUserProvider currentUserProvider, EmailService emailService) { FairplaytubeDatabaseContext = fairplaytubeDatabaseContext; Localizer = localizer; CurrentUserProvider = currentUserProvider; EmailService = emailService; }
public MessageService(FairplaytubeDatabaseContext fairplaytubeDatabaseContext, IHubContext <NotificationHub, INotificationHub> hubContext, ContentModerationService contentModerationService, EmailService emailService, IConfiguration configuration) { this.FairplaytubeDatabaseContext = fairplaytubeDatabaseContext; this.HubContext = hubContext; this.ContentModerationService = contentModerationService; this.EmailService = emailService; this.Configuration = configuration; }
public async Task <VisitorTracking> UpdateVisitTimeElapsedAsync(long visitorTrackingId, CancellationToken cancellationToken) { var entity = await this.FairplaytubeDatabaseContext.VisitorTracking .SingleOrDefaultAsync(p => p.VisitorTrackingId == visitorTrackingId, cancellationToken); if (entity != null) { entity.LastTrackedDateTime = DateTimeOffset.UtcNow; await FairplaytubeDatabaseContext.SaveChangesAsync(cancellationToken); } return(entity); }
public VideoJobApplicationService(FairplaytubeDatabaseContext fairplaytubeDatabaseContext, ICurrentUserProvider currentUserProvider, IStringLocalizer <VideoJobApplicationService> localizer, IHubContext <NotificationHub, INotificationHub> hubContext, EmailService emailService) { FairplaytubeDatabaseContext = fairplaytubeDatabaseContext; CurrentUserProvider = currentUserProvider; Localizer = localizer; HubContext = hubContext; EmailService = emailService; }
public async Task ApproveVideoJobApplicationAsync(long videoJobApplicationId, CancellationToken cancellationToken) { var loggedInUserAzureObjectId = this.CurrentUserProvider.GetObjectId(); var videoJobApplication = await this.FairplaytubeDatabaseContext.VideoJobApplication .Include(p => p.VideoJob).ThenInclude(p => p.VideoInfo) .ThenInclude(p => p.ApplicationUser) .Where(p => p.VideoJobApplicationId == videoJobApplicationId) .SingleOrDefaultAsync(cancellationToken: cancellationToken); if (videoJobApplication is null) { throw new CustomValidationException(Localizer[VideoJobApplicationNotFoundTextKey]); } if (loggedInUserAzureObjectId != videoJobApplication.VideoJob .VideoInfo.ApplicationUser.AzureAdB2cobjectId.ToString()) { throw new CustomValidationException(Localizer[NotVideoOwnerTextKey]); } var hasApprovedApplication = await FairplaytubeDatabaseContext.VideoJobApplication .AnyAsync(p => p.VideoJobApplicationId == videoJobApplicationId && p.VideoJobApplicationStatusId == (short)Common.Global.Enums.VideoJobApplicationStatus.Selected, cancellationToken : cancellationToken); if (hasApprovedApplication) { throw new CustomValidationException(Localizer[ApprovedApplicationsExistTextKey]); } videoJobApplication.VideoJobApplicationStatusId = (short)Common.Global.Enums.VideoJobApplicationStatus.Selected; await FairplaytubeDatabaseContext.SaveChangesAsync(cancellationToken); var applicantUserEntity = await this.FairplaytubeDatabaseContext.ApplicationUser .SingleAsync(p => p.ApplicationUserId == videoJobApplication.ApplicantApplicationUserId, cancellationToken : cancellationToken); string message = String.Format(Localizer[ApprovedApplicationUserNotificationTextKey], videoJobApplication.VideoJob.Title, videoJobApplication.VideoJob.VideoInfo.Name); await HubContext.Clients.User(applicantUserEntity.AzureAdB2cobjectId.ToString()) .ReceiveMessage(new Models.Notifications.NotificationModel() { Message = message, }); await EmailService.SendEmailAsync(toEmailAddress : applicantUserEntity.EmailAddress, subject : Localizer[ApprovedApplicationEmailSubjectTextKey], body : message, isBodyHtml : true, cancellationToken : cancellationToken); }
public async Task AddAnonymousUserRequestAsync(CreateUserRequestModel createUserRequestModel, CancellationToken cancellationToken) { UserRequest userRequestEntity = new() { Description = createUserRequestModel.Description, UserRequestTypeId = (short)createUserRequestModel.UserRequestType, EmailAddress = createUserRequestModel.EmailAddress, }; await FairplaytubeDatabaseContext.UserRequest.AddAsync(userRequestEntity, cancellationToken); await FairplaytubeDatabaseContext.SaveChangesAsync(cancellationToken); await NotifyNewUserRequestToAllUsersAsync(userRequestEntity, cancellationToken);; }
public async Task AddVideoJobApplicationAsync(CreateVideoJobApplicationModel createVideoJobApplicationModel, CancellationToken cancellationToken) { var loggedInUserAzureObjectId = CurrentUserProvider.GetObjectId(); var userEntity = FairplaytubeDatabaseContext.ApplicationUser .Single(p => p.AzureAdB2cobjectId.ToString() == loggedInUserAzureObjectId); var videoJobApplicationEntity = await FairplaytubeDatabaseContext.VideoJobApplication .Include(p => p.ApplicantApplicationUser) .Include(p => p.VideoJob) .ThenInclude(p => p.VideoInfo) .ThenInclude(p => p.ApplicationUser) .SingleOrDefaultAsync(p => p.VideoJobId == createVideoJobApplicationModel.VideoJobId && p.ApplicantApplicationUser.AzureAdB2cobjectId.ToString() == loggedInUserAzureObjectId, cancellationToken: cancellationToken); if (videoJobApplicationEntity is not null) { throw new CustomValidationException(Localizer[UserApplicationAlreadyExistsTextKey]); } var videoJobEntity = await FairplaytubeDatabaseContext.VideoJob .Include(p => p.VideoInfo).ThenInclude(p => p.ApplicationUser) .SingleAsync(p => p.VideoJobId == createVideoJobApplicationModel.VideoJobId, cancellationToken: cancellationToken); if (videoJobEntity.VideoInfo.ApplicationUser .AzureAdB2cobjectId.ToString() == loggedInUserAzureObjectId) { throw new CustomValidationException(Localizer[CannotApplyToOwnedVideosJobsTextKey]); } videoJobApplicationEntity = new VideoJobApplication() { ApplicantApplicationUserId = userEntity.ApplicationUserId, ApplicantCoverLetter = createVideoJobApplicationModel.ApplicantCoverLetter, VideoJobId = createVideoJobApplicationModel.VideoJobId.Value, VideoJobApplicationStatusId = (short)Common.Global.Enums.VideoJobApplicationStatus.New }; await FairplaytubeDatabaseContext.VideoJobApplication.AddAsync(videoJobApplicationEntity, cancellationToken); await FairplaytubeDatabaseContext.SaveChangesAsync(cancellationToken); string message = String.Format(Localizer[UserHasAppliedToJobTextKey], videoJobEntity.VideoInfo.ApplicationUser.FullName, videoJobEntity.Title); await HubContext.Clients.User(videoJobEntity.VideoInfo .ApplicationUser.AzureAdB2cobjectId.ToString()) .ReceiveMessage(new Models.Notifications.NotificationModel() { Message = message }); }
public VideoService(AzureVideoIndexerService azureVideoIndexerService, AzureBlobStorageService azureBlobStorageService, DataStorageConfiguration dataStorageConfiguration, ICurrentUserProvider currentUserProvider, FairplaytubeDatabaseContext fairplaytubeDatabaseContext, AzureVideoIndexerConfiguration azureVideoIndexerConfiguration, CustomHttpClient customHttpClient, IHubContext <NotificationHub, INotificationHub> hubContext, EmailService emailService, IConfiguration configuration) { this.AzureVideoIndexerService = azureVideoIndexerService; this.AzureBlobStorageService = azureBlobStorageService; this.DataStorageConfiguration = dataStorageConfiguration; this.CurrentUserProvider = currentUserProvider; this.FairplaytubeDatabaseContext = fairplaytubeDatabaseContext; this.AzureVideoIndexerConfiguration = azureVideoIndexerConfiguration; this.CustomHttpClient = customHttpClient; this.HubContext = hubContext; this.EmailService = emailService; this.Configuration = configuration; }
public async Task AddAuthenticatedUserRequestAsync(CreateUserRequestModel createUserRequestModel, CancellationToken cancellationToken) { var userObjectId = this.CurrentUserProvider.GetObjectId(); var userEntity = await this.FairplaytubeDatabaseContext .ApplicationUser.SingleAsync(p => p.AzureAdB2cobjectId.ToString() == userObjectId, cancellationToken); if (userEntity is null) { throw new CustomValidationException(Localizer[UserNotFoundTextKey]); } UserRequest userRequestEntity = new() { Description = createUserRequestModel.Description, UserRequestTypeId = (short)createUserRequestModel.UserRequestType, EmailAddress = createUserRequestModel.EmailAddress, ApplicationUserId = userEntity.ApplicationUserId }; await FairplaytubeDatabaseContext.UserRequest.AddAsync(userRequestEntity, cancellationToken); await FairplaytubeDatabaseContext.SaveChangesAsync(cancellationToken); }
public ClientSideErrorLogService(FairplaytubeDatabaseContext fairplaytubeDatabaseContext) { this.FairplaytubeDatabaseContext = fairplaytubeDatabaseContext; }