public async Task <SocioDetailViewModel> CreateSocioAsync(SocioCreateInputModel inputModel)
        {
            var socio = new Socio();

            socio.ChangeTessera(inputModel.Tessera);
            socio.ChangeNominativo(inputModel.Nominativo);
            socio.ChangeIndirizzo(inputModel.Indirizzo);
            socio.ChangeCap(inputModel.Cap);
            socio.ChangeComune(inputModel.Comune);
            socio.ChangeProvincia(inputModel.Provincia);
            socio.ChangeLuogoNascita(inputModel.LuogoNascita);
            socio.ChangeDataNascita(inputModel.DataNascita);
            socio.ChangeCodiceFiscale(inputModel.CodiceFiscale);
            socio.ChangeTelefono(inputModel.Telefono);
            socio.ChangeEmail(inputModel.Email);
            socio.ChangeDataTesseramento(inputModel.DataTesseramento);
            socio.ChangeTrattamentoDati(inputModel.TrattamentoDati);
            socio.ChangeProfessione(inputModel.Professione);
            socio.ChangeZona(inputModel.Zona);

            dbContext.Add(socio);
            await dbContext.SaveChangesAsync();

            return(socio.ToSocioDetailViewModel());
        }
        public async Task <SocioDetailViewModel> EditSocioAsync(SocioEditInputModel inputModel)
        {
            Socio socio = await dbContext.Soci.FindAsync(inputModel.Id);

            if (socio == null)
            {
                logger.LogWarning("Socio {id} non trovato", inputModel.Id);
                throw new SocioNotFoundException(inputModel.Id);
            }

            socio.ChangeTessera(inputModel.Tessera);
            socio.ChangeNominativo(inputModel.Nominativo);
            socio.ChangeIndirizzo(inputModel.Indirizzo);
            socio.ChangeCap(inputModel.Cap);
            socio.ChangeComune(inputModel.Comune);
            socio.ChangeProvincia(inputModel.Provincia);
            socio.ChangeLuogoNascita(inputModel.LuogoNascita);
            socio.ChangeDataNascita(inputModel.DataNascita);
            socio.ChangeCodiceFiscale(inputModel.CodiceFiscale);
            socio.ChangeTelefono(inputModel.Telefono);
            socio.ChangeEmail(inputModel.Email);
            socio.ChangeDataTesseramento(inputModel.DataTesseramento);
            socio.ChangeTrattamentoDati(inputModel.TrattamentoDati);
            socio.ChangeProfessione(inputModel.Professione);
            socio.ChangeZona(inputModel.Zona);

            await dbContext.SaveChangesAsync();

            return(socio.ToSocioDetailViewModel());
        }