/// <summary> /// Ensures that the MIS domain and admin role are present - creating them if needed. Returns both. /// </summary> /// <returns>Returns the MIS domain and admin role entities.</returns> private async Task <(Domain, Role)> ConfigureMisDomainAndAdminRole() { // Get domains DomainService domainService = ServiceProvider.GetService <DomainService>(); IEnumerable <Domain> domains = await domainService.GetDomains(); // Configure MIS domain if needed Domain misDomain = domains.Where(d => d.Name == MisConstants.MIS_DOMAIN_NAME).FirstOrDefault(); if (misDomain == null) { misDomain = await domainService.CreateDomain(MisConstants.MIS_DOMAIN_NAME); } // Get roles of MIS domain RoleService roleService = ServiceProvider.GetService <RoleService>(); IEnumerable <Role> roles = await roleService.GetRoles(null, misDomain.Id); Role misAdminRole = roles.Where(r => r.Name == MisConstants.MIS_ADMINISTRATOR_ROLE_NAME).FirstOrDefault(); if (misAdminRole == null) { misAdminRole = await roleService.CreateRole(MisConstants.MIS_ADMINISTRATOR_ROLE_NAME, misDomain.Id); } // Return MIS domain and admin role return(misDomain, misAdminRole); }