示例#1
0
        public async Task <IActionResult> Edit(Guid id, [Bind("ID,SynchronizationID,Name")] SyncDepartment syncDepartment)
        {
            if (id != syncDepartment.ID)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    CustomSyncEngine customSyncEngine = new CustomSyncEngine(_context, syncConfiguration);
                    customSyncEngine.HookPreInsertOrUpdateGlobalTimeStamp(syncDepartment);

                    _context.Update(syncDepartment);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!SyncDepartmentExists(syncDepartment.ID))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }
            return(View(syncDepartment));
        }
        public async Task <IActionResult> Create([Bind("SynchronizationID,Name")] SyncDepartment syncDepartment)
        {
            if (string.IsNullOrEmpty(syncDepartment.SynchronizationID))
            {
                ModelState.AddModelError("SynchronizationID", "SynchronizationID cannot be empty");
            }

            if (ModelState.IsValid)
            {
                using (var transaction = _context.Database.BeginTransaction())
                {
                    try
                    {
                        syncDepartment.ID = Guid.NewGuid();
                        CustomSyncEngine customSyncEngine = new CustomSyncEngine(_context, syncConfiguration);
                        customSyncEngine.HookPreInsertOrUpdateDatabaseTimeStamp(syncDepartment, transaction, syncDepartment.SynchronizationID, null);
                        _context.Add(syncDepartment);
                        await _context.SaveChangesAsync();

                        transaction.Commit();
                    }
                    catch (Exception)
                    {
                        transaction.Rollback();
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }
            return(View(syncDepartment));
        }
示例#3
0
        public async Task <IActionResult> Edit(Guid id, [Bind("ID,SynchronizationID,Name")] SyncDepartment syncDepartment)
        {
            if (id != syncDepartment.ID)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    syncDepartment.LastUpdated = TempHelper.GetNowTicks();
                    _context.Update(syncDepartment);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!SyncDepartmentExists(syncDepartment.ID))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }
            return(View(syncDepartment));
        }
示例#4
0
        public async Task <IActionResult> Create([Bind("SynchronizationID,Name")] SyncDepartment syncDepartment)
        {
            if (ModelState.IsValid)
            {
                syncDepartment.ID          = Guid.NewGuid();
                syncDepartment.LastUpdated = TempHelper.GetNowTicks();
                _context.Add(syncDepartment);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            return(View(syncDepartment));
        }
示例#5
0
        public async Task <IActionResult> Create([Bind("SynchronizationID,Name")] SyncDepartment syncDepartment)
        {
            if (ModelState.IsValid)
            {
                syncDepartment.ID = Guid.NewGuid();

                CustomSyncEngine customSyncEngine = new CustomSyncEngine(_context, syncConfiguration);
                customSyncEngine.HookPreInsertOrUpdateGlobalTimeStamp(syncDepartment);

                _context.Add(syncDepartment);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            return(View(syncDepartment));
        }
        public SelectList GetSelectListDepartment(object selectedValue)
        {
            var syncDepartmentController               = new SyncDepartmentController(_context);
            IQueryable <SyncDepartment> departments    = syncDepartmentController.GetDatas();
            List <SyncDepartment>       listDepartment = new List <SyncDepartment>();
            SyncDepartment emptyDepartment             = new SyncDepartment()
            {
                ID = Guid.Empty, Name = "[None]"
            };

            listDepartment.Add(emptyDepartment);
            listDepartment.AddRange(departments.ToList());
            if (selectedValue == null)
            {
                selectedValue = emptyDepartment;
            }
            SelectList selectList = new SelectList(listDepartment, "ID", "Name", selectedValue);

            return(selectList);
        }
示例#7
0
        /// <summary>
        /// 同步单个组织
        /// </summary>
        /// <param name="wx_dept"></param>
        /// <returns>更新的本地Id</returns>
        public void MatchSingleDepartment(SyncDepartment wx_dept, int?tenant_id)
        {
            if (wx_dept != null)
            {
                var entity        = _organizationUnitRepository.FirstOrDefault(o => o.WXDeptId == wx_dept.id && o.TenantId == tenant_id);
                var result_id     = entity?.Id ?? null;
                var parent_entity = wx_dept.parentid == 0 ? null : (_organizationUnitRepository.FirstOrDefault(o => o.WXDeptId == wx_dept.parentid && o.TenantId == tenant_id));
                var parent_id     = parent_entity?.Id ?? null;
                var parent_code   = parent_entity?.Code ?? "";

                switch (wx_dept.changetype)
                {
                case "delete_party":
                    if (result_id.HasValue)
                    {
                        _organizationUnitRepository.Delete(result_id.Value);
                    }
                    break;

                case "create_party":
                    if (entity == null)
                    {
                        entity = new AbpOrganizationUnitExtend
                        {
                            TenantId       = tenant_id,//AbpSession.TenantId,
                            WXDeptId       = wx_dept.id,
                            DisplayName    = wx_dept.name,
                            WXParentDeptId = wx_dept.parentid,
                            ParentId       = parent_id,
                            Code           = ""
                        };
                        result_id = _organizationUnitRepository.InsertAndGetId(entity);
                        //CurrentUnitOfWork.SaveChanges();
                        entity.Code = string.IsNullOrEmpty(parent_code) ? result_id.ToString() : parent_code + ":" + result_id.Value;
                        entity.Id   = result_id.Value;
                        _organizationUnitRepository.Update(entity);
                    }
                    break;

                case "update_party":
                    if (result_id.HasValue)
                    {
                        /**
                         * 2019-04-28 miansheng.luo 企业微信回调有更新忽略。修改时请注意修改下列字段判断方式
                         */
                        if (wx_dept.parentid.HasValue)
                        {
                            entity.ParentId       = parent_id;
                            entity.Code           = string.IsNullOrEmpty(parent_code) ? result_id.ToString() : parent_code + ":" + result_id.Value;
                            entity.WXParentDeptId = wx_dept.parentid;
                        }
                        entity.TenantId    = tenant_id;
                        entity.WXDeptId    = wx_dept.id;
                        entity.DisplayName = string.IsNullOrEmpty(wx_dept.name) ? entity.DisplayName : wx_dept.name;
                        _organizationUnitRepository.Update(entity);
                    }
                    break;

                default:
                    break;
                }
            }
        }
示例#8
0
        /// <summary>
        /// 同步单个组织 (无租户验证版本)
        /// </summary>
        /// <param name="wx_dept"></param>
        /// <returns>更新的本地Id</returns>
        public void MatchSingleDepartmentWithoutTenant(SyncDepartment wx_dept, int?tenant_id)
        {
            if (wx_dept != null)
            {
                using (_unitOfWorkManager.Current.DisableFilter(AbpDataFilters.MayHaveTenant))
                {
                    var entity        = _organizationUnitRepository.FirstOrDefault(o => o.WXDeptId == wx_dept.id && o.TenantId == tenant_id);
                    var base_org      = _baseOrgRepository.FirstOrDefault(o => o.WxId == wx_dept.id.ToString());
                    var result_id     = entity?.Id ?? null;
                    var parent_entity = wx_dept.parentid == 0 ? null : (_organizationUnitRepository.FirstOrDefault(o => o.WXDeptId == wx_dept.parentid && o.TenantId == tenant_id));
                    var parent_id     = parent_entity?.Id ?? null;
                    var parent_code   = parent_entity?.Code ?? "";

                    switch (wx_dept.changetype)
                    {
                    case "delete_party":
                        if (result_id.HasValue)
                        {
                            _organizationUnitRepository.Delete(result_id.Value);
                        }
                        if (base_org != null)
                        {
                            _baseOrgRepository.Delete(base_org);
                        }
                        break;

                    case "create_party":
                        if (entity == null)
                        {
                            entity = new AbpOrganizationUnitExtend
                            {
                                TenantId       = tenant_id,//AbpSession.TenantId,
                                WXDeptId       = wx_dept.id,
                                DisplayName    = wx_dept.name,
                                WXParentDeptId = wx_dept.parentid,
                                ParentId       = parent_id,
                                Code           = ""
                            };
                            result_id = _organizationUnitRepository.InsertAndGetId(entity);
                            //CurrentUnitOfWork.SaveChanges();
                            entity.Code = string.IsNullOrEmpty(parent_code) ? result_id.ToString() : parent_code + ":" + result_id.Value;
                            entity.Id   = result_id.Value;
                            _organizationUnitRepository.Update(entity);
                        }
                        if (base_org == null)
                        {
                            if (parent_id == 1)
                            {
                                _baseOrgRepository.Insert(new BaseUserOrg
                                {
                                    Name          = wx_dept.name,
                                    OrgGuid       = Guid.NewGuid().ToString(),
                                    OrgOrderNo    = wx_dept.id,
                                    OrgParentGuid = "0",
                                    ParentId      = 0,
                                    WxId          = wx_dept.id.ToString()
                                });
                            }
                            else
                            {
                                var parent_org = _baseOrgRepository.FirstOrDefault(x => x.WxId == wx_dept.parentid.ToString());
                                if (parent_org != null)
                                {
                                    _baseOrgRepository.Insert(new BaseUserOrg
                                    {
                                        Name          = wx_dept.name,
                                        OrgGuid       = Guid.NewGuid().ToString(),
                                        OrgOrderNo    = wx_dept.id,
                                        OrgParentGuid = parent_org.OrgGuid,
                                        ParentId      = parent_org.Id,
                                        WxId          = wx_dept.id.ToString()
                                    });
                                }
                            }
                        }
                        break;

                    case "update_party":
                        if (result_id.HasValue)
                        {
                            /**
                             * 2019-04-28 miansheng.luo 企业微信回调有更新忽略。修改时请注意修改下列字段判断方式
                             */
                            if (wx_dept.parentid.HasValue)
                            {
                                entity.ParentId       = parent_id;
                                entity.Code           = string.IsNullOrEmpty(parent_code) ? result_id.ToString() : parent_code + ":" + result_id.Value;
                                entity.WXParentDeptId = wx_dept.parentid;
                            }
                            entity.TenantId    = tenant_id;
                            entity.WXDeptId    = wx_dept.id;
                            entity.DisplayName = string.IsNullOrEmpty(wx_dept.name) ? entity.DisplayName : wx_dept.name;
                            _organizationUnitRepository.Update(entity);
                        }
                        if (base_org != null)
                        {
                            if (wx_dept.parentid.HasValue && wx_dept.parentid == 1)
                            {
                                base_org.OrgParentGuid = "0";
                                base_org.ParentId      = 0;
                                _baseOrgRepository.Update(base_org);
                            }
                            else if (wx_dept.parentid.HasValue)
                            {
                            }
                        }
                        break;

                    default:
                        break;
                    }
                }
            }
        }