<commit_before>﻿using MongoDB.Driver;
using Persistence.MongoDB;
using SO115App.API.Models.Classi.Autenticazione;
using SO115App.Models.Servizi.Infrastruttura.GestioneUtenti.GetUtenti;
using System;
using System.Collections.Generic;
using System.Linq;

namespace SO115App.Persistence.MongoDB.GestioneUtenti.GestioneUtente
{
    /// <summary>
    ///   classe che si occupa di reperire tutti gli utenti nei cui ruoli è presente uno o più
    ///   codice sede passati in firma
    /// </summary>
    public class GetUtentiByCodiciSede : IGetUtentiByCodiciSedi
    {
        private readonly DbContext _dbContext;

        /// <summary>
        ///   costruttore della classe
        /// </summary>
        /// <param name="dbContext">il contesto del db</param>
        public GetUtentiByCodiciSede(DbContext dbContext)
        {
            _dbContext = dbContext;
        }

        /// <summary>
        ///   metodo che reperisce gli utenti dal DB
        /// </summary>
        /// <param name="codiciSede">i codici sede</param>
        /// <param name="cercaBy">la stringa per la ricerca</param>
        /// <returns>una lista di utenti</returns>
        public List<Utente> Get(List<string> codiciSede, string cercaBy = null)
        {
            string[] lstNomi = new string[6];
            if (cercaBy != null)
                lstNomi = cercaBy.ToLower().Split(" ", StringSplitOptions.RemoveEmptyEntries);

            return string.IsNullOrEmpty(cercaBy)
                ? _dbContext.UtenteCollection.Find(Builders<Utente>.Filter.In("ruoli.codSede", codiciSede)).ToList()

                : _dbContext.UtenteCollection.Find(Builders<Utente>.Filter.In("ruoli.codSede", codiciSede)).ToList()
                    .FindAll(x => lstNomi.Any(c => x.Nome.ToLower().Contains(c)) || lstNomi.Any(c => x.Cognome.ToLower().Contains(c)));
        }
    }
}
<commit_msg>Fix - in "gestione utenti" la ricerca avviene anche per sede (es: "rm1000", "rm")<commit_after>﻿using MongoDB.Driver;
using Persistence.MongoDB;
using SO115App.API.Models.Classi.Autenticazione;
using SO115App.Models.Servizi.Infrastruttura.GestioneUtenti.GetUtenti;
using System;
using System.Collections.Generic;
using System.Linq;

namespace SO115App.Persistence.MongoDB.GestioneUtenti.GestioneUtente
{
    /// <summary>
    ///   classe che si occupa di reperire tutti gli utenti nei cui ruoli è presente uno o più
    ///   codice sede passati in firma
    /// </summary>
    public class GetUtentiByCodiciSede : IGetUtentiByCodiciSedi
    {
        private readonly DbContext _dbContext;

        /// <summary>
        ///   costruttore della classe
        /// </summary>
        /// <param name="dbContext">il contesto del db</param>
        public GetUtentiByCodiciSede(DbContext dbContext)
        {
            _dbContext = dbContext;
        }

        /// <summary>
        ///   metodo che reperisce gli utenti dal DB
        /// </summary>
        /// <param name="codiciSede">i codici sede</param>
        /// <param name="cercaBy">la stringa per la ricerca</param>
        /// <returns>una lista di utenti</returns>
        public List<Utente> Get(List<string> codiciSede, string cercaBy = null)
        {
            string[] lstSegmenti = new string[6];
            if (cercaBy != null)
                lstSegmenti = cercaBy.ToLower().Split(" ", StringSplitOptions.RemoveEmptyEntries);

            return string.IsNullOrEmpty(cercaBy)
                ? _dbContext.UtenteCollection.Find(Builders<Utente>.Filter.In("ruoli.codSede", codiciSede)).ToList()

                : _dbContext.UtenteCollection.Find(Builders<Utente>.Filter.In("ruoli.codSede", codiciSede)).ToList()
                    .FindAll(x =>
                        lstSegmenti.Any(c => x.Nome.ToLower().Contains(c)) 
                        || lstSegmenti.Any(c => x.Cognome.ToLower().Contains(c)
                        || lstSegmenti.Any(c => x.Sede.Codice.Replace(".", "").ToLower().Contains(c))));
        }
    }
}

{'fraction_non_alphanumeric': 0.12477943029997479, 'fraction_numerical': 0.00604991177211999, 'mean_word_length': 2.3972602739726026, 'pattern_counts': {'":': 0, '<': 39, '<?xml version=': 0, '>': 46, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '7064578', 'n_tokens_mistral': 1270, 'n_tokens_neox': 1239, 'n_words': 243}