public EmployeeChangeEventViewModel(EmployeeChangeEvent changeEvent) { EmployeeChangeEventId = changeEvent.EmployeeChangeEventId; EmployeeId = changeEvent.EmployeeId; EmployeeName = changeEvent.Employee.Name; ChangeEventType = changeEvent.ChangeEventType; Time = changeEvent.Time; Old = changeEvent.Old; New = changeEvent.New; }
private string alertEmailBody(EmployeeChangeEvent changeEvent, string employeeName) { StringBuilder builder = new StringBuilder(); builder.AppendLine("Change Type: " + changeEvent.ChangeEventType.ToString()); builder.AppendLine("Employee " + employeeName); builder.AppendLine("Old: " + changeEvent.Old); builder.AppendLine("New: " + changeEvent.New); builder.AppendLine("Date: " + changeEvent.Time.ToString()); return(builder.ToString()); }
public void SendAlerts(EmployeeChangeEvent changeEvent) { var subscriptions = _context.NotrificationSubscriptions .Include(x => x.Employee) .ToList(); foreach (var sub in subscriptions) { string subject = "Change Event Notificaiton"; string body = alertEmailBody(changeEvent, sub.Employee.Name); string recipient = sub.Employee.Email; _emailService.SendMail(subject, body, recipient); } }
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); }