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)); }
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)); }
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)); }
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); }
/// <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; } } }
/// <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; } } } }