private void InitializeLocalizableStrings() { // We need to create localizable strings for all tenants, // but at this point there will only be 1 tenant, because this is initialization for the DB. // TODO: When admin user creates a new tenant, we need to insert localized strings for it. Probably in TenantApiController somewhere... int tenantId = Tenants.First().Id; var languagePacks = EngineContext.Current.ResolveAll <ILanguagePack>(); var toInsert = new HashSet <LocalizableString>(); foreach (var languagePack in languagePacks) { foreach (var localizedString in languagePack.LocalizedStrings) { toInsert.Add(new LocalizableString { Id = Guid.NewGuid(), TenantId = tenantId, CultureCode = languagePack.CultureCode, TextKey = localizedString.Key, TextValue = localizedString.Value }); } } LocalizableStrings.AddRange(toInsert); SaveChanges(); }
/// <summary> /// Resolves a tenant request using hostname /// </summary> /// <param name="request">The request</param> /// <returns>The tenant or null</returns> public ITenant Resolve(IOwinRequest request) { var httpContext = request.Context.Get <HttpContextWrapper>("System.Web.HttpContextBase"); var routeData = RouteTable.Routes.GetRouteData(httpContext); if (routeData == null || routeData.Values.ContainsKey(RouteName) == false) { return(Tenants.First()); } var tenant = Tenants.FirstOrDefault(x => x.Name == routeData.Values[RouteName].ToString()); return(tenant ?? Tenants.First()); }
public async Task ExecuteAsync() { Console.WriteLine("<Controller:Execute> Starting"); try { var datetimeNow = DateTime.UtcNow; var tenantCompanies = await GetTenantCompanies(); if (tenantCompanies.Count == 0) { return; } var mailBodyList = new List <MailBodyDto>(); Console.WriteLine("<Controller:Execute> Delete Log"); await DeleteLogAsync(tenantCompanies); await ImportUsersAsync(tenantCompanies, mailBodyList); Console.WriteLine("<Controller:Execute> Update Integrated On"); foreach (var tenantCompany in tenantCompanies) { foreach (var company in tenantCompany.Companies) { await CompanyIntegrationHelper.UpdateAsync(tenantCompany.Api, company.CompanyIntegrationId, datetimeNow); } } foreach (var tenantCompany in tenantCompanies) { var contextDto = await ApiHelper.GetContextDtoAsync(tenantCompany.Api); foreach (var company in tenantCompany.Companies) { var administratorMail = string.IsNullOrEmpty(company.AdministratorMail) ? MailDto.AdministratorMail : company.AdministratorMail; await SendEmailAsync(mailBodyList, contextDto, company.Code, administratorMail); } } } catch (Exception exception) { var contextDto = await ApiHelper.GetContextDtoAsync(Tenants.First()); var groupId = contextDto.TenantId.ToString() + "-" + Updater.MyStatusId.ToString(); await MailHelper.SendEmailAsync(MailDto, "Error executing HrLink job.", MailHelper.GetBodyTextOf(contextDto, exception.InnerException?.Message ?? exception.Message), MailDto.AdministratorMail, null, true, groupId); throw; } Console.WriteLine("<Controller:Execute> Ending"); }