Ejemplo n.º 1
0
 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;
 }
Ejemplo n.º 2
0
        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());
        }
Ejemplo n.º 3
0
        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);
            }
        }
Ejemplo n.º 4
0
        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();
        }
Ejemplo n.º 5
0
        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);
        }