public ReportMetadataController(
     TraffkTenantModelDbContext db,
     CurrentContextServices current,
     ILogger logger,
     ICacher cacher = null) : base(AspHelpers.MainNavigationPageKeys.NotSpecified, db, current, logger, cacher)
 {
 }
示例#2
0
 public AuthMessageSender(ITrackingEmailer emailer, CurrentContextServices current, TraffkTenantModelDbContext db, ITwilioSmsSender twilioSmsSender)
 {
     Emailer         = emailer;
     Current         = current;
     DB              = db;
     TwilioSmsSender = twilioSmsSender;
 }
示例#3
0
        protected BasePageController(MainNavigationPageKeys mainNavPageKey,
                                     TraffkTenantModelDbContext db,
                                     CurrentContextServices current,
                                     ILogger logger,
                                     ICacher cacher = null)
        {
            Requires.NonNull(db, nameof(db));
            Requires.NonNull(current, nameof(current));
            Requires.NonNull(logger, nameof(logger));

            MainNavPageKey = mainNavPageKey;
            Rdb            = db;
            Current        = current;

            Logger = logger.ForContext(new ILogEventEnricher[]
            {
                new PropertyEnricher(typeof(Type).Name, this.GetType().Name),
            });

            var u = current.User;

            if (cacher != null)
            {
                Cacher = cacher.CreateScope(GetType(), TenantId);
            }
        }
示例#4
0
 public TrackingEmailer(IEmailer emailer, TraffkTenantModelDbContext rdb, ITraffkTenantFinder tenantFinder, ICommunicationBlastFinder blastFinder)
 {
     Inner        = emailer;
     Rdb          = rdb;
     TenantFinder = tenantFinder;
     BlastFinder  = blastFinder;
     TenantId     = tenantFinder.GetTenantIdAsync().ExecuteSynchronously();
 }
示例#5
0
 public DataController(TraffkTenantModelDbContext db,
                       CurrentContextServices current,
                       ILogger logger,
                       ICacher cacher,
                       TraffkGlobalDbContext gdb) : base(AspHelpers.MainNavigationPageKeys.Manage, db, current, logger, cacher)
 {
     GDB = gdb;
 }
示例#6
0
 public HomeController(
     TraffkTenantModelDbContext db,
     CurrentContextServices current,
     ILogger logger
     )
     : base(AspHelpers.MainNavigationPageKeys.Main, db, current, logger)
 {
 }
示例#7
0
 public ErrorController(
     TraffkTenantModelDbContext db,
     CurrentContextServices current,
     ILogger logger,
     IHostingEnvironment hostingEnvironment
     )
     : base(AspHelpers.MainNavigationPageKeys.Main, db, current, logger)
 {
     HostingEnvironment_p = hostingEnvironment;
 }
示例#8
0
 public CommunicationsController(
     BlobStorageServices blobs,
     TraffkTenantModelDbContext db,
     CurrentContextServices current,
     ILogger logger
     )
     : base(AspHelpers.MainNavigationPageKeys.Messaging, db, current, logger)
 {
     Blobs = blobs;
 }
 public TableauAuthorizationService(IOptions <TableauSignInOptions> options,
                                    IOptions <TableauAdminCredentials> adminSignInOptions,
                                    TraffkTenantModelDbContext rdb,
                                    IHttpClientFactory httpClientFactory,
                                    ILogger logger)
 {
     TableauAdminCredentials = adminSignInOptions.Value;
     AdminTableauRestService = new TableauViewerService(options, TableauAdminCredentials, httpClientFactory, logger);
     Options = options.Value;
     Rdb     = rdb;
 }
示例#10
0
 public RiskIndexController(
     TraffkTenantModelDbContext db,
     CurrentContextServices current,
     ILogger logger,
     ICacher cacher,
     IReportVisualService reportVisualService
     )
     : base(AspHelpers.MainNavigationPageKeys.RiskIndex, db, current, logger, cacher)
 {
     ReportVisualService = reportVisualService;
     IsOnline            = ReportVisualService.IsOnline;
 }
示例#11
0
 public JobsController(
     TraffkTenantModelDbContext db,
     CurrentContextServices current,
     ILogger logger,
     IBackgroundJobClient backgrounder,
     TraffkGlobalDbContext gdb
     )
     : base(AspHelpers.MainNavigationPageKeys.Setup, db, current, logger)
 {
     Backgrounder = backgrounder;
     GDB          = gdb;
 }
示例#12
0
 public CrmController(
     IEmailSender emailSender,
     TraffkTenantModelDbContext db,
     CurrentContextServices current,
     ILogger logger,
     ICacher cacher,
     IReportVisualService reportVisualService
     )
     : base(AspHelpers.MainNavigationPageKeys.CRM, db, current, logger, cacher)
 {
     ReportVisualService = reportVisualService;
     EmailSender         = emailSender;
     IsReportingOnline   = ReportVisualService.IsOnline;
 }
示例#13
0
 public TenantsController(
     BlobStorageServices blobs,
     UserManager <ApplicationUser> userManager,
     TraffkTenantModelDbContext db,
     CurrentContextServices current,
     ILogger logger,
     IBackgroundJobClient backgrounder
     )
     : base(AspHelpers.MainNavigationPageKeys.Setup, db, current, logger)
 {
     UserManager  = userManager;
     Blobs        = blobs;
     Backgrounder = backgrounder;
 }
示例#14
0
 public PingdomController(
     TraffkTenantModelDbContext db,
     CurrentContextServices current,
     ILogger logger,
     ITableauStatusService tableauStatusService,
     OrchestraApiService orchestraApiService,
     IRedisCache redis,
     ICacher cacher = null)
     : base(AspHelpers.MainNavigationPageKeys.NotSpecified, db, current, logger, cacher)
 {
     TableauStatusService = tableauStatusService;
     OrchestraApiService  = orchestraApiService;
     Redis = redis;
 }
示例#15
0
 public UsersController(
     IEmailSender emailSender,
     IUserClaimsPrincipalFactory <ApplicationUser> userClaimsPrincipalFactory,
     IAuthorizationService authorizationService,
     UserManager <ApplicationUser> userManager,
     TraffkTenantModelDbContext db,
     CurrentContextServices current,
     ILogger logger)
     : base(AspHelpers.MainNavigationPageKeys.Setup, db, current, logger)
 {
     EmailSender = emailSender;
     UserClaimsPrincipalFactory = userClaimsPrincipalFactory;
     AuthorizationService       = authorizationService;
     UserManager = userManager;
 }
        private async Task AddTenantToShardManagerAsync(TenantInitializeDetails details, string shardMapName)
        {
            var shardMapId = (await Smdb.ShardMapsGlobal.Where(z => z.Name == shardMapName).FirstAsync()).ShardMapId;

            var shardId         = Guid.NewGuid();
            var shardVersion    = Guid.NewGuid();
            var lastOperationId = Guid.NewGuid();

            var finder = new MyDummyTenantFinder(details.DatabaseName, details.TenantId);

            using (var rdb = new TraffkTenantModelDbContext(RdbOptions, finder, new ConfigStringFormatter(finder)
            {
            }))
            {
                rdb.ShardMapsLocal.Add(new ShardMapsLocal {
                    ShardMapId      = shardMapId,
                    Name            = shardMapName,
                    MapType         = 1,
                    KeyType         = 1,
                    LastOperationId = lastOperationId
                });
                rdb.ShardsLocal.Add(new ShardsLocal {
                    ShardId         = shardId,
                    Version         = shardVersion,
                    ShardMapId      = shardMapId,
                    Protocol        = 0,
                    ServerName      = details.DatabaseServer,
                    Port            = 0,
                    DatabaseName    = details.DatabaseName,
                    Status          = 1,
                    LastOperationId = lastOperationId
                });
                await rdb.SaveChangesAsync();
            }

            Smdb.ShardsGlobal.Add(new ShardsGlobal {
                ShardId      = shardId,
                Readable     = true,
                Version      = shardVersion,
                ShardMapId   = shardMapId,
                Protocol     = 0,
                ServerName   = ConfigOptions.Value.FullyQualifiedServerName,
                Port         = 0,
                DatabaseName = details.DatabaseName,
                Status       = 1
            });
            await Smdb.SaveChangesAsync();
        }
示例#17
0
 public ManageController(
     TraffkTenantModelDbContext db,
     UserManager <ApplicationUser> userManager,
     SignInManager <ApplicationUser> signInManager,
     IEmailSender emailSender,
     ISmsSender smsSender,
     CurrentContextServices current,
     ILogger logger
     )
     : base(AspHelpers.MainNavigationPageKeys.Manage, db, current, logger)
 {
     UserManager        = userManager;
     SignInManager      = signInManager;
     EmailSender        = emailSender;
     SmsSender          = smsSender;
     IsSigninPersistent = Startup.IsSigninPersistent;
 }
示例#18
0
 public ReportingController(
     TraffkTenantModelDbContext db,
     CurrentContextServices current,
     ILogger logger,
     ICacher cacher,
     IReportVisualService reportVisualService,
     IBackgroundJobClient backgrounder,
     ITraffkRecurringJobManager recurringJobManager,
     BlobStorageServices blobStorageService
     )
     : base(AspHelpers.MainNavigationPageKeys.Reporting, db, current, logger, cacher)
 {
     ReportVisualService = reportVisualService;
     Backgrounder        = backgrounder;
     RecurringJobManager = recurringJobManager;
     BlobStorageService  = blobStorageService;
     IsOnline            = ReportVisualService.IsOnline;
 }
示例#19
0
 public TenantedJobRunner(
     TraffkTenantModelDbContext db,
     TraffkGlobalDbContext globalContext,
     IJobInfoFinder jobInfoFinder,
     CurrentTenantServices current,
     ITableauAdminService tableauAdminService,
     ILogger logger,
     ITableauVisualServices tableauVisualService,
     BlobStorageServices blobStorageService,
     IBackgroundJobClient innerBackgroundJobClient)
     : base(globalContext, jobInfoFinder, logger)
 {
     DB                       = db;
     Current                  = current;
     TableauAdminService      = tableauAdminService;
     TableauVisualService     = tableauVisualService;
     BlobStorageService       = blobStorageService;
     InnerBackgroundJobClient = innerBackgroundJobClient;
 }
示例#20
0
 public CurrentContextServices(
     ConfigStringFormatter stringer,
     ITraffkTenantFinder tenantFinder,
     TraffkTenantModelDbContext rdb,
     IHttpContextAccessor httpContextAccessor,
     UserManager <ApplicationUser> userManager,
     IOptions <TableauSignInOptions> tableauSigninOptions,
     ITableauAuthorizationService tableauAuthorizationService
     )
     : base(tenantFinder, rdb)
 {
     TableauSignInOptions = tableauSigninOptions.Value;
     Stringer             = stringer;
     TenantFinder         = tenantFinder;
     Rdb = rdb;
     HttpContextAccessor         = httpContextAccessor;
     UserManager                 = userManager;
     TableauAuthorizationService = tableauAuthorizationService;
 }
示例#21
0
        public ReportVisualService(ITableauViewerService tableauViewerService,
                                   TraffkTenantModelDbContext rdb,
                                   ITableauTenantFinder tableauTenantFinder,
                                   ICurrentUser currentUser,
                                   IPhiAuthorizer phiAuthorizer,
                                   ICacher cacher = null)
        {
            CanSeePhi            = phiAuthorizer.CanSeePhi;
            TableauViewerService = tableauViewerService;
            Rdb = rdb;
            TableauTenantFinder = tableauTenantFinder;
            CurrentUser         = currentUser.User;

            Cacher = cacher.CreateScope(CurrentUser.UserName, CanSeePhi);

            TableauTenantId = TableauTenantFinder.GetTenantIdAsync().Result;

            ReportIndexCacheTimeout = TableauViewerService.ReportIndexCacheTimeout;

            ((IReportVisualService)this).IsOnline = TableauViewerService.IsOnline;
        }
示例#22
0
 public NoteService(TraffkTenantModelDbContext rdb)
 {
     Rdb = rdb;
 }
        async Task ITenantManagementJobs.InitializeNewTenantAsync(TenantInitializeDetails details)
        {
            var finder = new MyDummyTenantFinder(details.DatabaseName, details.TenantId);

            using (var rdb = new TraffkTenantModelDbContext(RdbOptions, finder, new ConfigStringFormatter(finder)
            {
            }))
            {
                try
                {
                    rdb.Database.OpenConnection();
                }
                catch (Exception sex)
                {
                    throw new Exception("Database has not been created yet", sex);
                }
                using (var trans = await rdb.Database.BeginTransactionAsync())
                {
                    var t = await rdb.Tenants.FindAsync(details.TenantId);

                    if (t == null)
                    {
                        t = new Tenant
                        {
                            TenantId   = details.TenantId,
                            TenantName = details.TenantName,
                            TenantType = Tenant.TenantTypes.Normal,
                        };
                        rdb.Tenants.Add(t);
                        rdb.Apps.Add(new App
                        {
                            Tenant  = t,
                            AppType = AppTypes.Portal,
                            AppName = AppTypes.Portal.ToString(),
                        });
                        await rdb.SaveChangesAsync();

                        var r = new ApplicationRole
                        {
                            Tenant         = t,
                            Name           = "Bootstrap",
                            NormalizedName = "bootstrap",
                        };
                        rdb.Roles.Add(r);
                        var u = new ApplicationUser
                        {
                            Tenant             = t,
                            Email              = details.AdminUsername,
                            NormalizedEmail    = details.AdminUsername.ToUpper(),
                            NormalizedUserName = details.AdminUsername.ToUpper(),
                        };
                        rdb.Users.Add(u);
                        await rdb.SaveChangesAsync();

                        u.PasswordHash = PasswordHasher.HashPassword(u, details.AdminPassword);
                        rdb.UserRoles.Add(new ApplicationUserRole
                        {
                            UserId = u.Id,
                            RoleId = r.Id,
                        });
                        foreach (var p in new[] {
                            PermissionNames.ManageJobs,
                            PermissionNames.ManageUsers,
                            PermissionNames.ManageRoles,
                            PermissionNames.ManageTenants,
                            PermissionNames.CustomerRelationshipData,
                            PermissionNames.DirectMessaging,
                            PermissionNames.ReleaseLog,
                        })
                        {
                            rdb.RoleClaims.Add(new RoleClaim
                            {
                                RoleId     = r.Id,
                                ClaimType  = PermissionHelpers.CreateClaimType(p),
                                ClaimValue = new PermissionClaimValue(true).ToJson()
                            });
                        }
                    }
                    await rdb.SaveChangesAsync();

                    trans.Commit();
                }
            }
        }
示例#24
0
 public TableauTenantFinder(IOptions <TenantSettings> options, TraffkTenantModelDbContext rdb, ITraffkTenantFinder traffkTenantFinder)
 {
     TraffkTenantId = traffkTenantFinder.GetTenantIdAsync().Result;
     Options        = options;
     Rdb            = rdb;
 }
示例#25
0
 public SystemCommunicationCommunicationBlastFinder(TraffkTenantModelDbContext rdb, ICreativeSettingsFinder creativeSettingsFinder)
 {
     Requires.NonNull(rdb, nameof(rdb));
     Rdb = rdb;
     CreativeSettingsFinder = creativeSettingsFinder;
 }
示例#26
0
 public SmtpSettingsAdaptor(ITraffkTenantFinder finder, TraffkTenantModelDbContext rdb)
 {
     Finder = finder;
     Rdb    = rdb;
 }
示例#27
0
 public CurrentTenantServices(ITraffkTenantFinder tenantFinder, TraffkTenantModelDbContext rdb)
 {
     TenantFinder = tenantFinder;
     Rdb          = rdb;
 }
 public EmailRedirectorController(TraffkTenantModelDbContext rdb, ILoggerFactory loggerFactory)
 {
     Rdb    = rdb;
     Logger = loggerFactory.CreateLogger(this.GetType());
 }