Exemple #1
0
        public virtual async Task InitAdminRole(IEnumerable <int> ids)
        {
            await MESTenantManager.InitAdminRole(ids);

            //var tenants = await Manager.GetListByIdsAsync(ids);
            //foreach(var tenant in tenants)
            //{

            //    using (CurrentUnitOfWork.SetTenantId(tenant.Id))
            //    {
            //        //通过手机获取管理用户
            //        var adminUser = await MESTenantManager.GetTenantAdminUser(tenant);
            //        //获取管理员权限
            //        var adminRole = await RoleManager.GetAll().Where(o => o.TenantId == tenant.Id && o.Name == StaticRoleNames.Tenants.Admin).FirstOrDefaultAsync();
            //        if (adminRole != null)
            //        {
            //            await RoleManager.GrantAllPermissionsAsync(adminRole);

            //            //清空角色权限缓存
            //            var cacheKey = adminRole.Id + "@" + (adminRole.TenantId ?? 0);
            //            await CacheManager.GetRolePermissionCache().RemoveAsync(cacheKey);
            //        }

            //        if (adminUser != null)
            //        {
            //            await UserManager.SetRoles(adminUser, new int[] { adminRole.Id });
            //        }

            //    }


            //}
        }
Exemple #2
0
        public virtual async Task SetActive(int tenantId, bool isActive)
        {
            await MESTenantManager.SetActive(tenantId, isActive);

            //var tenant = await Repository.GetAsync(tenantId);
            //tenant.IsActive = isActive;
            ////如果账套还没有模块,则初始化模块
            //if(!await ModuleInfoManager.GetAll().AnyAsync(o => o.TenantId == tenantId))
            //{
            //    await InitModule(new int[] { tenant.Id });
            //}
            //await CurrentUnitOfWork.SaveChangesAsync();
        }
Exemple #3
0
        public virtual async Task InitModule(IEnumerable <int> ids)
        {
            await MESTenantManager.InitModule(ids);

            //foreach (var tenantId in ids)
            //{
            //    var modules = await ModuleInfoManager.GetAll().Where(o => o.TenantId == tenantId).ToListAsync();
            //    foreach (var module in modules)
            //    {
            //        await ModuleInfoManager.Repository.HardDelete(module);
            //    }
            //    await CurrentUnitOfWork.SaveChangesAsync();
            //    var context = Repository.GetDbContext() as MasterDbContext;
            //    new TenantDefaultModuleBuilder(context, tenantId).Create();
            //}
        }
Exemple #4
0
        /// <summary>
        /// 微信端注册提交
        /// </summary>
        /// <param name="registerDto"></param>
        /// <returns></returns>
        public virtual async Task Register(RegisterDto registerDto)
        {
            var tenant = new Tenant(registerDto.CompanyName, registerDto.TenancyName);

            //var defaultEdition = await _editionManager.FindByNameAsync(EditionManager.DefaultEditionName);
            //if (defaultEdition != null)
            //{
            //    tenant.EditionId = defaultEdition.Id;
            //}

            await TenantManager.InsertAsync(tenant);

            await CurrentUnitOfWork.SaveChangesAsync(); // To get new tenant's id.

            tenant.SetPropertyValue("Mobile", registerDto.Mobile);
            tenant.SetPropertyValue("PersonName", registerDto.Name);

            //如果是被邀请进来的,则设置邀请人id
            if (registerDto.Inviter.HasValue)
            {
                Logger.Info("设置邀请信息");
                tenant.SetPropertyValue("Inviter", registerDto.Inviter.Value);
                //邀请进来的默认激活
                await MESTenantManager.SetActive(tenant.Id, true);

                var edition_processor = await EditionManager.GetAll().Where(o => o.Name == "JIAGONGDIANJICHUBAN").SingleOrDefaultAsync(); //加工点版本

                var edition_customer = await EditionManager.GetAll().Where(o => o.Name == "KEHUJICHUBAN").SingleOrDefaultAsync();         //客户版本

                //默认加工点版本
                if (edition_processor != null)
                {
                    tenant.EditionId = edition_processor.Id;
                }


                if (!string.IsNullOrEmpty(registerDto.InviterUnitName))
                {
                    var unit = await UnitManager.GetAll().Where(o => o.TenantId == registerDto.Inviter.Value && o.UnitName == registerDto.InviterUnitName)
                               .FirstOrDefaultAsync();

                    if (unit != null)
                    {
                        //设置默认版本
                        if (unit.UnitNature == UnitNature.客户 && edition_customer != null)
                        {
                            tenant.EditionId = edition_customer.Id;
                        }
                    }

                    //绑定新注册账号至邀请人的往来单位
                    await BindTenantToUnitName(tenant.Id, registerDto.Inviter.Value, registerDto.InviterUnitName);
                }
            }
            // We are working entities of new tenant, so changing tenant filter
            using (CurrentUnitOfWork.SetTenantId(tenant.Id))
            {
                // Create static roles for new tenant
                await RoleManager.CreateStaticRoles(tenant.Id);

                await CurrentUnitOfWork.SaveChangesAsync(); // To get static role ids

                // Grant all permissions to admin role
                var adminRole = RoleManager.GetAll().Where(r => r.Name == StaticRoleNames.Tenants.Admin).Single();
                await RoleManager.GrantAllPermissionsAsync(adminRole);

                // Create admin user for the tenant
                var adminUser = await CreateTenantAdminUser(tenant.Id, registerDto);

                //设置管理用户有接收外协提醒的权限
                adminUser.SetStatus(MESStatusNames.ReceiveOuterTask);
                // Assign admin user to role!
                await UserManager.SetRoles(adminUser, new int[] { adminRole.Id });

                await CurrentUnitOfWork.SaveChangesAsync();
            }
        }