public ActionResult Copy(int templateId, bool newVersion = false)
        {
            CopyRequestModel model = new CopyRequestModel()
            {
                TemplateId = templateId,
                NewVersion = newVersion
            };

            if (newVersion)
            {
                var template = this.tdb.Templates.Single(y => y.Id == templateId);
                var newVersionImplementationGuide = this.tdb.ImplementationGuides.SingleOrDefault(y => y.PreviousVersionImplementationGuideId == template.OwningImplementationGuideId);

                if (newVersionImplementationGuide == null)
                {
                    throw new Exception("A new version of the template's implementation guide does not exist yet.");
                }
                else if (!CheckPoint.Instance.GrantEditImplementationGuide(newVersionImplementationGuide.Id))
                {
                    throw new Exception("You are not authorized to edit the new version of the implementation guide!");
                }
            }

            return(View("Copy", model));
        }
        public ActionResult CopyInfo(CopyRequestModel model)
        {
            if (!string.IsNullOrWhiteSpace(model.DeptId) && !string.IsNullOrWhiteSpace(model.Id))
            {
                //先查询出授权信息
                MenuAuthorizeEntity entity = authorizeBLL.GetEntity(model.Id);
                if (entity != null)
                {
                    DepartmentBLL departmentBll = new DepartmentBLL();
                    var           deptIdArry    = model.DeptId.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
                    var           deptCodeArry  = model.DeptCode.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
                    var           deptNameArry  = model.DeptName.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
                    //菜单授权信息
                    DeptMenuAuthBLL           deptMenuAuthBll  = new DeptMenuAuthBLL();
                    List <DeptMenuAuthEntity> deptMenuAuthList = deptMenuAuthBll.GetList(entity.DepartId);
                    //界面设置
                    List <AppMenuSettingEntity> appMenuSettingEntities =
                        new AppMenuSettingBLL().GetListByDeptId(entity.DepartId);
                    //栏目与菜单的关联关系
                    List <AppSettingAssociationEntity> appSettingAssociationList =
                        new AppSettingAssociationBLL().GetList(entity.DepartId);

                    List <DeptMenuAuthEntity>          insetDeptMenuAuthList     = new List <DeptMenuAuthEntity>();
                    List <MenuAuthorizeEntity>         authorizeEntities         = new List <MenuAuthorizeEntity>();         //复制之后要保存到数据库中的单位授权数据
                    List <AppMenuSettingEntity>        insertMenuSettingEntities = new List <AppMenuSettingEntity>();        //界面设置
                    List <AppSettingAssociationEntity> insertAssociationEntities = new List <AppSettingAssociationEntity>(); //关联关系

                    for (int i = 0; i < deptIdArry.Length; i++)
                    {
                        //1、先复制单位的授权信息
                        DepartmentEntity    deptEntity   = departmentBll.GetEntity(deptIdArry[i]);
                        MenuAuthorizeEntity insertEntity = new MenuAuthorizeEntity()
                        {
                            Id             = Guid.NewGuid().ToString(),
                            DepartId       = deptIdArry[i],
                            DepartCode     = deptCodeArry[i],
                            DepartName     = deptNameArry[i],
                            DisplayName    = deptNameArry[i],
                            BZApiUrl       = entity.BZApiUrl,
                            CreateDate     = entity.CreateDate,
                            CreateUserId   = entity.CreateUserId,
                            CreateUserName = entity.CreateUserName,
                            CulturalUrl    = entity.CulturalUrl,
                            ModifyDate     = entity.ModifyDate,
                            ModifyUserId   = entity.ModifyUserId,
                            ModifyUserName = entity.ModifyUserName,
                            PXApiUrl       = entity.PXApiUrl,
                            RegistCode     = entity.RegistCode,
                            SKApiUrl       = entity.SKApiUrl,
                            TerminalCode   = entity.TerminalCode,
                            ThemeType      = entity.ThemeType,
                            VersionCode    = entity.VersionCode,
                            ParentId       = deptEntity != null? deptEntity.ParentId : "",
                            ParentName     =
                                deptEntity != null && deptEntity.ParentId == "0"
                                    ? ""
                                    : departmentBll.GetEntity(deptEntity.ParentId).FullName
                        };
                        authorizeEntities.Add(insertEntity);
                        //2、复制界面设置
                        appMenuSettingEntities.ForEach(setting =>
                        {
                            AppMenuSettingEntity appMenu = setting.Clone(deptIdArry[i], deptNameArry[i], deptCodeArry[i], appSettingAssociationList, insertAssociationEntities);
                            insertMenuSettingEntities.Add(appMenu);
                        });
                        //3、  复制关联关系
                        //appSettingAssociationList.ForEach(e =>
                        //{
                        //    AppSettingAssociationEntity association = e.Clone(deptIdArry[i], ,insetDeptMenuAuthList);
                        //    insertAssociationEntities.Add(association);
                        //});
                        //4、复制菜单授权信息
                        deptMenuAuthList.ForEach(p =>
                        {
                            DeptMenuAuthEntity deptMenu = p.Clone(deptIdArry[i], deptCodeArry[i], deptNameArry[i]);
                            insetDeptMenuAuthList.Add(deptMenu);
                        });
                    }
                    authorizeBLL.InsertEntity(authorizeEntities.ToArray());
                    new AppMenuSettingBLL().InsertList(insertMenuSettingEntities);
                    new AppSettingAssociationBLL().InsertList(insertAssociationEntities);
                    new DeptMenuAuthBLL().InsertList(insetDeptMenuAuthList);
                }
            }
            return(Success("操作成功"));
        }