/// <summary>
        /// Create roles and return the admin role id
        /// </summary>
        /// <param name="tenantId"></param>
        /// <param name="companyId"></param>
        public string CreateTenantRole(string tenantId, string companyId)
        {
            var roles = StaticRoles.GetRoles();

            if (_roleRepository.GetAll().FilterTenant(tenantId).Any())
            {
                return(null);
            }

            string adminRoleId = Guid.NewGuid().ToString();

            foreach (var role in roles)
            {
                var id = role.Name == StaticRoles.Admin.Name ? adminRoleId : Guid.NewGuid().ToString();
                _roleRepository.Create(new Role
                {
                    Id          = id,
                    Name        = role.Name,
                    DisplayName = role.DisplayName,
                    AccessLevel = role.AccessLevel,
                    TenantId    = tenantId,
                    CompanyId   = companyId
                });
            }

            _roleRepository.Save();

            return(adminRoleId);
        }
        public static void Build(BusinessDbContext db, string tenantId)
        {
            var     roles = StaticRoles.GetRoles();
            Company company;
            Tenant  tenant;

            if (string.IsNullOrWhiteSpace(tenantId))
            {
                company  = db.Companies.FirstOrDefault(x => x.Name == StaticCompany.Host);
                tenant   = db.Tenants.FirstOrDefault(x => x.Name == StaticTenant.Host);
                tenantId = tenant?.Id;
            }
            else
            {
                company = db.Companies.FirstOrDefault(x => x.TenantId == tenantId);
                tenant  = db.Tenants.FirstOrDefault(x => x.Id == tenantId);
            }

            if (tenant?.Name != StaticTenant.Host)
            {
                roles = roles.Where(x => x.Name != StaticRoles.SystemAdmin.Name).ToList();
            }

            if (!db.Roles.Any(x => x.TenantId == tenantId))
            {
                foreach (var role in roles)
                {
                    db.Roles.Add(new Role
                    {
                        Id          = Guid.NewGuid().ToString(),
                        Name        = role.Name,
                        DisplayName = role.DisplayName,
                        AccessLevel = role.AccessLevel,
                        TenantId    = tenant?.Id,
                        CompanyId   = company?.Id
                    });
                }

                db.SaveChanges();
            }

            else
            {
                foreach (var role in roles.Where(role => db.Roles.FirstOrDefault(x => x.Name == role.Name && x.TenantId == tenantId) == null))
                {
                    db.Roles.Add(new Role {
                        Id = Guid.NewGuid().ToString(), Name = role.Name
                    });
                }

                db.SaveChanges();
            }
        }