public EmployeePack GetAllEmployees(byte[] recentVersion) { var a = OperationContext.Current.Host.Extensions.Count; string currentUsername = ServiceSecurityContext.Current.PrimaryIdentity.Name; List <Employee> allEmployees = EmployeeGateway.SelectAll(currentUsername); EmployeePack pack = new EmployeePack(); pack.Employees = GetRecentVersionEmployees(allEmployees, recentVersion); pack.CountInDB = allEmployees.Count; return(pack); }
public void RefreshEmployees() { List <Entity> entities = new List <Entity>(); entities.AddRange(employees); byte[] recentVersion = AdditionalTools.GetMaxTimestamp(entities); EmployeePack pack = App.proxy.GetAllEmployees(recentVersion); List <Employee> employeesBuf = new List <Employee>(); employeesBuf.AddRange(employees); if (!UpdateEmployeesBufByPack(pack, employeesBuf)) { TrimEmployees(employeesBuf); } UploadFromEmployeesBuf(employeesBuf); }
bool UpdateEmployeesBufByPack(EmployeePack pack, List <Employee> employeesBuf) { if (pack.Employees.Count > 0) { foreach (Employee item in pack.Employees) { Employee employee = employeesBuf.FirstOrDefault(row => string.Compare(row.Username, item.Username) == 0); if (employee == null) { employeesBuf.Add(item); } else { employeesBuf.Remove(employee); employeesBuf.Add(item); } } /// Восстанавливаем нормальный порядок employeesBuf = employeesBuf.OrderBy(row => row.SecondName).ToList(); } return(employeesBuf.Count == pack.CountInDB); }