Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- [DisableConcurrentExecution(1000)]
- public async Task SyncAll()
- {
- var list = new List<Task<List<StaffEntity>>> {SynchronizeHr(), SynchronizeHeadHr(), SynchronizeManager()};
- var comparer = new CustomEqualityComparer<StaffEntity>(
- (a, b) => a.Sid == b.Sid,
- a => a.Sid.GetHashCode());
- var result = (await Task.WhenAll(list)).SelectMany(x=>x).Distinct(comparer).ToList();
- await _locker.WaitAsync();
- try
- {
- var users = await StaffRepository.WhereAsync(x=>!x.IsDeleted);
- var diff = result.Except(users.Intersect(result, comparer), comparer).ToList();
- if (diff.Any())
- {
- foreach (var staff in diff)
- {
- await StaffRepository.CreateAsync(staff);
- await StaffRepository.SaveAsync();
- }
- }
- }
- finally
- {
- _locker.Release();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement