public IList <NotificationAccessException> GetNotificationAccessExceptionsForCurrentUser() { var loggedUser = AuthenticationProvider.GetLoggedUser(); var userNotificationExceptions = NotificationAccessExceptions.Where(x => x.Users.Any(y => y == loggedUser)).ToList(); return(userNotificationExceptions); }
private Audit GetNewAudit() { var audit = new Audit(AuthenticationProvider.GetLoggedUser()); audit.Date = SystemDateTime.Now; return(audit); }
public IList <NotificationAccess> GetNotificationAccessesForCurrentUser() { var loggedUser = AuthenticationProvider.GetLoggedUser(); var loggedUserRole = loggedUser.Role; var userNotificationAccesses = NotificationAccesses.Where(x => x.Users.Any(y => y == loggedUser) || x.AllowEveryone).ToList(); return(userNotificationAccesses); }
public void SendCreatedNotificationFor(Type type, string subject, string description) { var loggedUser = AuthenticationProvider.GetLoggedUser(); var email = new ObjectCreatedEmailModel(); email.Username = loggedUser.ToDisplay(); email.ObjectTypeCreated = TranslationService.Translate(type.Name); email.Description = description; var notification = GetCreatedNotification(type); this.SendNotification(notification, subject, email); }
public void UpdateExceptionsForUser(IEnumerable <int> exceptions) { var loggedUser = AuthenticationProvider.GetLoggedUser(); var oldExceptions = NotificationAccessExceptions.Where(x => x.Users.Any(y => y == loggedUser)); var oldExceptionsIds = oldExceptions.Select(x => x.Id); var newExceptionsIds = NotificationAccessExceptions.Where(x => exceptions.Contains(x.AssociatedNotification.Id)).Select(x => x.Id); var exceptionsToRemove = oldExceptions.Where(x => !newExceptionsIds.Contains(x.Id)); foreach (var notificationAccessException in exceptionsToRemove) { notificationAccessException.Users.Remove(loggedUser); } var exceptionsToAdd = newExceptionsIds.Where(x => !oldExceptionsIds.Contains(x)); foreach (var newException in exceptionsToAdd) { var notificationException = NotificationAccessExceptions[newException]; notificationException.Users.Add(loggedUser); } }
/// <summary> /// Invocation of the interceptor /// </summary> /// <param name = "invocation">The invocation info.</param> /// <returns>return value of the invoked method</returns> public object ApplyTo(MethodInvocationInfo invocation) { object result; var attributes = invocation.Method.GetCustomAttributes(typeof(IAuditAttribute), true); Audit audit = null; ActionsEnum?actionType = null; Type type = null; if (attributes.Length > 0) { audit = GetNewAudit(); var auditAttribute = (IAuditAttribute)attributes[0]; if (auditAttribute.BehaviorType != default(ActionsEnum)) { audit.Action = (int)auditAttribute.BehaviorType; AuditContextManager.SetAction(auditAttribute.BehaviorType); actionType = auditAttribute.BehaviorType; } if (auditAttribute.EntityType != null) { audit.EntityType = auditAttribute.EntityType.Name; AuditContextManager.SetEntityType(auditAttribute.EntityType); type = auditAttribute.EntityType; } var entityIdParameterName = auditAttribute.IdField; if (!string.IsNullOrEmpty(entityIdParameterName)) { var parameters = invocation.Method.GetParameters(); for (int i = 0; i < parameters.Length; i++) { var parameterInfo = parameters[i]; if (parameterInfo.Name == entityIdParameterName) { audit.EntityId = (int)invocation.Arguments[i]; } } } } result = invocation.Proceed(); var auditContext = AuditContextManager.Context; if (!auditContext.Cancelled) { if (AuditContextManager.Context != null && auditContext.ContextData.Count > 0) { if (audit == null) { audit = GetNewAudit(); } var contextData = auditContext.ContextData[0]; UpdateAudit(audit, contextData); if (contextData.Action != default(ActionsEnum)) { actionType = contextData.Action; } if (contextData.EntityType != null) { type = contextData.EntityType; } } Audits.Put(audit); if (AuditContextManager.Context != null && auditContext.ContextData.Count > 1) { for (int i = 1; i < auditContext.ContextData.Count; i++) { var contextData = auditContext.ContextData[i]; var extraAudit = new Audit(AuthenticationProvider.GetLoggedUser()); extraAudit.Date = audit.Date; UpdateAudit(extraAudit, contextData); Audits.Put(extraAudit); } } } if (actionType.HasValue && type != null && AuditContextManager.Context != null && auditContext.ContextData.Count > 0 && auditContext.ContextData[0].Displayable != null) { if (actionType == ActionsEnum.Create) { NotificationService.SendCreatedNotificationFor(type, auditContext.ContextData[0].Displayable.ToDisplay()); } if (actionType == ActionsEnum.Edit) { NotificationService.SendUpdatedNotificationFor(type, auditContext.ContextData[0].Displayable.ToDisplay(), audit.EntityId); } if (actionType == ActionsEnum.Delete) { NotificationService.SendDeletedNotificationFor(type, auditContext.ContextData[0].Displayable.ToDisplay(), audit.EntityId); } } return(result); }