/// <summary> /// Metodo per l'impostazione di un item come visto /// </summary> /// <param name="itemId"></param> /// <param name="userId"></param> /// <param name="adminCode"></param> public static void SetItemAsViewed(int itemId, int userId, String adminCode) { using (NotificationServiceOperationsClient client = new NotificationServiceOperationsClient()) { int instanceId = client.LoadInstanceByName(new LoadInstanceByNameRequest(adminCode)).LoadInstanceByNameResult.Id; client.SetItemViewed(new SetItemViewedRequest(itemId, userId, instanceId)); } }
/// <summary> /// Metodo per il recupero del numero di item ancora non visti da un utente /// </summary> /// <param name="userId"></param> /// <param name="adminCode"></param> /// <returns></returns> public static int CountNotViewedItems(int userId, String adminCode) { using (NotificationServiceOperationsClient client = new NotificationServiceOperationsClient()) { int instanceId = client.LoadInstanceByName(new LoadInstanceByNameRequest(adminCode)).LoadInstanceByNameResult.Id; return(client.CountNotViewedItems(new CountNotViewedItemsRequest(userId, instanceId)).CountNotViewedItemsResult); } }
/// <summary> /// Inserimento di un item nel centro notifiche /// </summary> /// <param name="author">Autpre dell'item</param> /// <param name="text">Contenuto dell'item</param> /// <param name="title">Titolo dell'item</param> /// <param name="userId">Id dell'utente a cui notificare l'item</param> /// <param name="channelLabel">Label del canale da associare all'item</param> /// <param name="idProfile">Id profile del documento legato all'item da inserire</param> /// <param name="registrationNumber">Numero di protocollo associato all'item da inserire</param> /// <param name="adminCode">Codice dell'amministrazione</param> public static void InsertItem(String author, String text, String title, int userId, String channelLabel, int idProfile, int registrationNumber, String adminCode) { try { using (NotificationServiceOperationsClient notificationServiceOperationsClient = new NotificationServiceOperationsClient()) { // Recupero del canale Channel channel = notificationServiceOperationsClient.LoadChannelByLabel(new LoadChannelByLabelRequest(channelLabel)).LoadChannelByLabelResult; // Se il canale è stato trovato, viene costruito ed inserito un nuovo item if (channel != null) { Item item = new Item() { Author = author, FeedLink = "", Text = text, Title = title, MessageId = idProfile, MessageNumber = registrationNumber }; // Recupero delle informazioni sull'istanza Instance instance = notificationServiceOperationsClient.LoadInstanceByName(new LoadInstanceByNameRequest(adminCode)).LoadInstanceByNameResult; if (instance != null) { List <User> user = new List <User>() { new User() { UserId = userId, InstanceId = instance.Id } }; // Inserimento item nel centro notifiche notificationServiceOperationsClient.InsertItem(new InsertItemRequest(item, channel.Id, user)); } } } } catch (Exception e) { logger.Debug("Errore durante l'inserimento di una notifica nel centro notifiche.", e); } }
/// <summary> /// Metodo per la ricerca di item che soddisfano determinati parametri /// </summary> /// <param name="userId"></param> /// <param name="searchForMessageId"></param> /// <param name="lowMessageId"></param> /// <param name="hightMessageId"></param> /// <param name="searchForDate"></param> /// <param name="lowDate"></param> /// <param name="hightDate"></param> /// <param name="searchForTitle"></param> /// <param name="itemText"></param> /// <param name="adminCode"></param> /// <returns></returns> public static List <Item> SearchItem(int userId, bool searchForMessageId, int lowMessageId, int hightMessageId, bool searchForDate, DateTime lowDate, DateTime hightDate, bool searchForTitle, String itemText, String adminCode) { using (NotificationServiceOperationsClient client = new NotificationServiceOperationsClient()) { try { int instanceId = client.LoadInstanceByName(new LoadInstanceByNameRequest(adminCode)).LoadInstanceByNameResult.Id; return(client.SearchItem(new SearchItemRequest( userId, searchForMessageId, lowMessageId, hightMessageId, searchForDate, lowDate, hightDate, searchForTitle, itemText, instanceId)).SearchItemResult); } catch (Exception e) { return(null); } } }
/// <summary> /// Metodo per il caricamento degli item non visualizzati da un particolare utente. /// </summary> /// <param name="administrationId">Id dell'amministrazione cui appartiene l'utente</param> /// <param name="administrationCode">Codice dell'amministrazione cui appartiene l'utente</param> /// <param name="userId">Id dell'utente per cui caricare gli item</param> /// <param name="itemCount">Numero di item restituiti dalla ricerca</param> /// <param name="pageNumber">Numero di pagina da caricare</param> /// <param name="pageSize">Dimensione della pagina</param> /// <returns>Lista degli item non ancora visti da un utente</returns> public static List <Item> LoadItemsNotViewedByUser(int administrationId, String administrationCode, int userId, int pageNumber, int pageSize, out int itemCount) { List <Item> items = new List <Item>(); itemCount = 0; using (NotificationServiceOperationsClient client = new NotificationServiceOperationsClient()) { // Ricerca dell'istanza con codice administrationCode int instanceId = client.LoadInstanceByName(new LoadInstanceByNameRequest(administrationCode)).LoadInstanceByNameResult.Id; // Caricamento dei canali registrati per l'amministrazione passata per parametro List <Channel> channels = client.LoadChannelsRelatedToInstance( new LoadChannelsRelatedToInstanceRequest(instanceId)).LoadChannelsRelatedToInstanceResult; // Caricamento degli item per i canali individuati if (channels != null) { foreach (var channel in channels) { SearchItemsNotViewedByUserResponse itemsResponse = client.SearchItemsNotViewedByUser( new SearchItemsNotViewedByUserRequest( userId, channel.Id, pageSize, pageNumber, instanceId)); itemCount += itemsResponse.itemCount; items.AddRange(itemsResponse.SearchItemsNotViewedByUserResult); } } } return(items); }