private void addPermissionChange(int employeeId, List <EmployeePermission> previous, List <EmployeePermission> current) { string prevString = string.Join(",", previous.Select(x => x.Permission.ToString())); string currentString = string.Join(",", current.Select(x => x.Permission.ToString())); EmployeeChangeEventTypeEnum changeType = EmployeeChangeEventTypeEnum.PermissionChange; var evt = new EmployeeChangeEvent { EmployeeId = employeeId, Old = prevString, New = currentString, Time = DateTime.Now, ChangeEventType = changeType, }; _context.Add(evt); SendAlerts(evt); _context.SaveChanges(); }
List <EmployeeChangeEvent> getChanges(Employee existing, Employee newData) { var time = DateTime.Now; List <EmployeeChangeEvent> changeList = new List <EmployeeChangeEvent>(); if (existing.ManagerId != newData.ManagerId) { EmployeeChangeEventTypeEnum changeType = EmployeeChangeEventTypeEnum.ManagerChange; Employee oldManager = existing.ManagerId == null ? null : GetEmployee(existing.ManagerId.Value); Employee newManager = newData.ManagerId == null ? null : GetEmployee(newData.ManagerId.Value); //TODO refactor var changeEvt = new EmployeeChangeEvent { EmployeeId = existing.EmployeeId, Old = oldManager == null ? "" : oldManager.Name, New = newManager == null ? "" : newManager.Name, Time = time, ChangeEventType = changeType, }; changeList.Add(changeEvt); SendAlerts(changeEvt); } if (existing.PositionId != newData.PositionId) { EmployeeChangeEventTypeEnum changeType = EmployeeChangeEventTypeEnum.PositionChange; Position newPos = GetPosition(newData.PositionId); Position oldPos; if (existing.Position != null) { oldPos = new Position { Name = existing.Position.Name, PositionId = existing.PositionId }; } else { oldPos = GetPosition(existing.PositionId); } var changeEvt = new EmployeeChangeEvent { EmployeeId = existing.EmployeeId, Old = oldPos.Name, New = newPos.Name, Time = time, ChangeEventType = changeType, }; changeList.Add(changeEvt); SendAlerts(changeEvt); } if (existing.EmploymentStatus != newData.EmploymentStatus) { EmployeeChangeEventTypeEnum changeType = EmployeeChangeEventTypeEnum.StatusChange; var changeEvt = new EmployeeChangeEvent { EmployeeId = existing.EmployeeId, Old = existing.EmploymentStatus.ToString(), New = newData.EmploymentStatus.ToString(), Time = time, ChangeEventType = changeType, }; changeList.Add(changeEvt); SendAlerts(changeEvt); } return(changeList); }