/// <summary> /// Validates whether current user is trip admin. /// </summary> /// <param name="currentUserService">Instance of service class that provides access /// to properties of the current user.</param> /// <param name="tripFlipDbContext">Instance of database context.</param> /// <param name="tripId">Trip id.</param> /// <param name="tripRoleToValidate">Trip role to validate.</param> /// <param name="errorMessage">Error message to show, /// if validation is not successful.</param> public static async Task ValidateCurrentUserTripRoleAsync( ICurrentUserService currentUserService, TripFlipDbContext tripFlipDbContext, int tripId, TripRoles tripRoleToValidate, string errorMessage) { var currentUserId = currentUserService.UserId; var tripSubscriberEntity = await tripFlipDbContext .TripSubscribers .AsNoTracking() .Include(tripSubscriber => tripSubscriber.TripRoles) .SingleOrDefaultAsync(tripSubscriber => tripSubscriber.UserId == currentUserId && tripSubscriber.TripId == tripId); ValidateEntityNotNull(tripSubscriberEntity, ErrorConstants.TripSubscriberNotFound); var tripSubscriberHasSpecifiedRole = tripSubscriberEntity .TripRoles .Any(tripRole => tripRole.TripRoleId == (int)tripRoleToValidate); if (!tripSubscriberHasSpecifiedRole) { throw new ArgumentException(errorMessage); } }
/// <summary> /// Validates whether current user has a specified route role. /// </summary> /// <param name="currentUserService">Instance of service class that provides access /// to properties of the current user.</param> /// <param name="tripFlipDbContext">Instance of database context.</param> /// <param name="routeId">Route id.</param> /// <param name="routeRoleToValidate">Route role to validate.</param> /// <param name="errorMessage">Error message to show, /// if validation is not successful.</param> public static async Task ValidateCurrentUserRouteRoleAsync( ICurrentUserService currentUserService, TripFlipDbContext tripFlipDbContext, int routeId, RouteRoles routeRoleToValidate, string errorMessage) { var currentUserId = currentUserService.UserId; var routeSubscriberEntity = await tripFlipDbContext .RouteSubscribers .AsNoTracking() .Include(routeSubscriber => routeSubscriber.RouteRoles) .Include(routeSubscriber => routeSubscriber.TripSubscriber) .SingleOrDefaultAsync(routeSubscriber => routeSubscriber.TripSubscriber.UserId == currentUserId && routeSubscriber.RouteId == routeId); ValidateEntityNotNull(routeSubscriberEntity, ErrorConstants.NotRouteSubscriber); var routeSubscriberHasSpecifiedRole = routeSubscriberEntity .RouteRoles .Any(routeRole => routeRole.RouteRoleId == (int)routeRoleToValidate); if (!routeSubscriberHasSpecifiedRole) { throw new ArgumentException(errorMessage); } }
/// <summary> /// Initializes database context and automapper. /// </summary> /// <param name="tripFlipDbContext">TripFlipDbContext instance.</param> /// <param name="mapper">IMapper instance.</param> /// <param name="currentUserService">ICurrentUserService instance.</param> public RouteService(TripFlipDbContext tripFlipDbContext, IMapper mapper, ICurrentUserService currentUserService) { _tripFlipDbContext = tripFlipDbContext; _mapper = mapper; _currentUserService = currentUserService; }
/// <summary> /// Initializes database context and automapper. /// </summary> /// <param name="mapper">IMapper instance.</param> /// <param name="tripFlipDbContext">TripFlipDbContext instance.</param> /// <param name="currentUserService">ICurrentUserService instance.</param> public ItemListService(TripFlipDbContext tripFlipDbContext, IMapper mapper, ICurrentUserService currentUserService) { _mapper = mapper; _tripFlipDbContext = tripFlipDbContext; _currentUserService = currentUserService; }
public ScheduledTaskService( IMailService mailService, IUserService userService, IStatisticService statisticService, TripFlipDbContext tripFlipDbContext) { _mailService = mailService; _userService = userService; _statisticService = statisticService; _tripFlipDbContext = tripFlipDbContext; }
/// <summary> /// Initializes database context and automapper. /// </summary> /// <param name="mapper">IMapper instance.</param> /// <param name="tripFlipDbContext">TripFlipDbContext instance.</param> /// <param name="jwtConfiguration">JwtConfiguration instance.</param> /// <param name="currentUserService">ICurrentUserService instance.</param> /// <param name="environment">Instance of web host environment.</param> /// <param name="mailService">Instance of mail service.</param> /// <param name="mailServiceConfiguration">Object that encapsulates configurations for /// mail service.</param> public UserService(IMapper mapper, TripFlipDbContext tripFlipDbContext, JwtConfiguration jwtConfiguration, ICurrentUserService currentUserService, IWebHostEnvironment environment, IMailService mailService, MailServiceConfiguration mailServiceConfiguration) { _mapper = mapper; _tripFlipDbContext = tripFlipDbContext; _jwtConfiguration = jwtConfiguration; _currentUserService = currentUserService; _environment = environment; _mailService = mailService; _mailServiceConfiguration = mailServiceConfiguration; }
protected TripFlipDbContext CreateDbContext() { var dbName = Guid.NewGuid().ToString(); var serviceProvider = new ServiceCollection() .AddEntityFrameworkInMemoryDatabase() .BuildServiceProvider(); var builder = new DbContextOptionsBuilder <TripFlipDbContext>(); builder.UseInMemoryDatabase(dbName) .UseInternalServiceProvider(serviceProvider); var context = new TripFlipDbContext(builder.Options); return(context); }
public void Configure(IApplicationBuilder applicationBuilder, IWebHostEnvironment environment, TripFlipDbContext tripFlipDbContext) { applicationBuilder.ConfigureExceptionHandler(environment); applicationBuilder.UseRouting(); applicationBuilder.UseAuthentication(); applicationBuilder.UseAuthorization(); applicationBuilder.UseHangfireDashboard(); RecurringJob.AddOrUpdate <IScheduledTaskService>( scheduledTask => scheduledTask.GreetBirthdayUsersAsync(), Cron.Daily(hour: 8)); RecurringJob.AddOrUpdate <IScheduledTaskService>( scheduledTask => scheduledTask.SendUserStatisticAsync(), Cron.Monthly()); applicationBuilder.UseHangfireServer(); applicationBuilder.UseEndpoints(endpoints => { endpoints.MapControllers(); }); var swaggerEndpointUrl = Configuration.GetSection("OpenApiInfo")["url"]; var swaggerApiVersion = Configuration.GetSection("OpenApiInfo")["version"]; applicationBuilder.UseSwagger(); applicationBuilder.UseSwaggerUI(options => { options.SwaggerEndpoint(swaggerEndpointUrl, swaggerApiVersion); options.OAuthClientId(Configuration["GoogleApi:ClientId"]); options.OAuthClientSecret(Configuration["GoogleApi:ClientSecret"]); options.OAuthAppName("TripFlip"); options.OAuthScopeSeparator(" "); options.OAuthUsePkce(); }); tripFlipDbContext.Database.Migrate(); }
/// <summary> /// Initializes db context, HttpClient factory and Google API configuration fields. /// </summary> /// <param name="tripFlipDbContext">Instance of db context.</param> /// <param name="httpClientFactory">Instance of HttpClient factory.</param> /// <param name="googleApiConfiguration">Object that encapsulates configurations for /// Google API.</param> /// <param name="jwtConfiguration">Object that encapsulates configurations for JWT.</param> /// <param name="environment">Instance of web host environment.</param> /// <param name="mailService">Instance of mail service.</param> /// <param name="mailServiceConfiguration">Object that encapsulates configurations for /// mail service.</param> public GoogleApiUserService( TripFlipDbContext tripFlipDbContext, IHttpClientFactory httpClientFactory, GoogleApiConfiguration googleApiConfiguration, JwtConfiguration jwtConfiguration, IWebHostEnvironment environment, IMailService mailService, MailServiceConfiguration mailServiceConfiguration) { _tripFlipDbContext = tripFlipDbContext; _httpClientFactory = httpClientFactory; _googleApiConfiguration = googleApiConfiguration; _jwtConfiguration = jwtConfiguration; _environment = environment; _mailService = mailService; _mailServiceConfiguration = mailServiceConfiguration; }
/// <summary> /// Validates whether current user is application super admin. /// </summary> /// <param name="currentUserService">Instance of service class that provides access /// to properties of the current user.</param> /// <param name="tripFlipDbContext">Instance of database context.</param> public static async Task ValidateCurrentUserIsSuperAdminAsync( ICurrentUserService currentUserService, TripFlipDbContext tripFlipDbContext) { var currentUserId = currentUserService.UserId; var currentUser = await tripFlipDbContext .Users .AsNoTracking() .Include(user => user.ApplicationRoles) .SingleOrDefaultAsync(user => user.Id == currentUserId); ValidateEntityNotNull(currentUser, ErrorConstants.NotAuthorized); var currentUserIsSuperAdmin = currentUser .ApplicationRoles .Any(appRole => appRole.ApplicationRoleId == (int)ApplicationRole.SuperAdmin); if (!currentUserIsSuperAdmin) { throw new ArgumentException(ErrorConstants.NotSuperAdmin); } }
public void Cleanup() { TripFlipDbContext.Dispose(); }
/// <summary> /// Initializes database context. /// </summary> /// <param name="tripFlipDbContext">TripFlipDbContext instance.</param> public StatisticService(TripFlipDbContext tripFlipDbContext) { _tripFlipDbContext = tripFlipDbContext; }
protected void Seed <TEntity>(TripFlipDbContext context, TEntity entity) where TEntity : class { context.Add(entity); context.SaveChanges(); }
protected void Seed <TEntity>(TripFlipDbContext context, IEnumerable <TEntity> entities) where TEntity : class { context.AddRange(entities); context.SaveChanges(); }