<commit_before>﻿using Microsoft.Extensions.Configuration;
using SO115App.ExternalAPI.Client;
using SO115App.Models.Classi.ServiziEsterni.Gac;
using SO115App.Models.Servizi.Infrastruttura.Composizione;
using System.Collections.Generic;
using Newtonsoft.Json;
using SO115App.ExternalAPI.Fake.Classi;
using System;
using System.Linq;
using System.Net.Http;
using SO115App.Models.Servizi.Infrastruttura.SistemiEsterni.Territorio;

namespace SO115App.ExternalAPI.Fake.Servizi.Gac
{
    public class SetUscitaMezzo : ISetUscitaMezzo
    {
        private readonly IGetToken _getToken;
        private readonly IHttpRequestManager<List<Response>> _client;
        private readonly IConfiguration _configuration;
        private readonly IGetDescComuneProvincia _comuneService;

        public SetUscitaMezzo(IHttpRequestManager<List<Response>> client, IGetToken getToken, IConfiguration configuration, IGetDescComuneProvincia comuneService)
        {
            _getToken = getToken;
            _configuration = configuration;
            _client = client;
            _comuneService = comuneService;
        }

        public void Set(UscitaGAC uscita)
        {
            //OTTENGO PROVINCIA E COMUNE
            if (uscita.comune.descrizione.Length > 0)
            {
                var territorio = _comuneService.GetComuneBy(uscita.comune.descrizione).Result;
                uscita.comune.codice = territorio.FirstOrDefault(x => x.descrizione.ToLower().Contains(uscita.comune.descrizione.ToLower()))?.codice;
                uscita.provincia.codice = territorio.FirstOrDefault(x => x.provincia.descrizione.ToLower().Contains(uscita.provincia.descrizione.ToLower()))?.codice;
            }
            //USCITA GAC
            var lstUscite = new List<UscitaGAC>() { uscita };
            var jsonString = JsonConvert.SerializeObject(lstUscite);
            var content = new StringContent(jsonString);

            var uri = new Uri(_configuration.GetSection("UrlExternalApi").GetSection("GacApi").Value + Costanti.GacUscitaMezzo);

            var result = _client.PutAsync(uri, content, _getToken.GeneraToken()).Result;

            if (result != null && result.TrueForAll(item => item.codiceEsito != "200" && item.codiceEsito != "201"))
            {
                throw new Exception($"Errore servizio uscita GAC: {result.First().codiceEsito}, {result.First().descrizioneEsito}");<commit_msg>GAC - Fix<commit_after>﻿using Microsoft.Extensions.Configuration;
using SO115App.ExternalAPI.Client;
using SO115App.Models.Classi.ServiziEsterni.Gac;
using SO115App.Models.Servizi.Infrastruttura.Composizione;
using System.Collections.Generic;
using Newtonsoft.Json;
using SO115App.ExternalAPI.Fake.Classi;
using System;
using System.Linq;
using System.Net.Http;
using SO115App.Models.Servizi.Infrastruttura.SistemiEsterni.Territorio;

namespace SO115App.ExternalAPI.Fake.Servizi.Gac
{
    public class SetUscitaMezzo : ISetUscitaMezzo
    {
        private readonly IGetToken _getToken;
        private readonly IHttpRequestManager<List<Response>> _client;
        private readonly IConfiguration _configuration;
        private readonly IGetDescComuneProvincia _comuneService;

        public SetUscitaMezzo(IHttpRequestManager<List<Response>> client, IGetToken getToken, IConfiguration configuration, IGetDescComuneProvincia comuneService)
        {
            _getToken = getToken;
            _configuration = configuration;
            _client = client;
            _comuneService = comuneService;
        }

        public void Set(UscitaGAC uscita)
        {
            //OTTENGO PROVINCIA E COMUNE
            if (uscita.comune != null)
            {
                var territorio = _comuneService.GetComuneBy(uscita.comune.descrizione).Result;
                uscita.comune.codice = territorio.FirstOrDefault(x => x.descrizione.ToLower().Contains(uscita.comune.descrizione.ToLower()))?.codice;
                uscita.provincia.codice = territorio.FirstOrDefault(x => x.provincia.descrizione.ToLower().Contains(uscita.provincia.descrizione.ToLower()))?.codice;
            }
            //USCITA GAC
            var lstUscite = new List<UscitaGAC>() { uscita };
            var jsonString = JsonConvert.SerializeObject(lstUscite);
            var content = new StringContent(jsonString);

            var uri = new Uri(_configuration.GetSection("UrlExternalApi").GetSection("GacApi").Value + Costanti.GacUscitaMezzo);

            var result = _client.PutAsync(uri, content, _getToken.GeneraToken()).Result;

            if (result != null && result.TrueForAll(item => item.codiceEsito != "200" && item.codiceEsito != "201"))
            {
                throw new Exception($"Errore servizio uscita GAC: {result.First().codiceEsito}, {result.First().descrizioneEsito}");
{'fraction_non_alphanumeric': 0.09780564263322884, 'fraction_numerical': 0.010240334378265412, 'mean_word_length': 3.176265270506108, 'pattern_counts': {'":': 0, '<': 13, '<?xml version=': 0, '>': 20, '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': '832890', 'n_tokens_mistral': 1477, 'n_tokens_neox': 1416, 'n_words': 242}