public void FormalizzaEsclusioniSoggettiImportati(AmministrazioneAsdepEntities db, SoggettiImportAppoggio _s)
 {
     try
     {
         using (db = new AmministrazioneAsdepEntities())
         {
             using (var transaction = db.Database.BeginTransaction())
             {
                 try
                 {
                     Adesione _adesioneCN = new Adesione();
                     _adesioneCN = (from AdesioneTable in db.Adesione join SoggettoTable in db.Soggetto on AdesioneTable.IdSoggetto equals SoggettoTable.IdSoggetto
                                    join StatoAdesioneTable in db.T_StatoAdesione on AdesioneTable.StatoAdesione equals StatoAdesioneTable.CodStatoAdesione
                                    where AdesioneTable.IdSoggetto.Equals(_s.IdSoggetto) &&
                                    AdesioneTable.DataInizio < DateTime.Now &&
                                    DateTime.Now < AdesioneTable.DataFine &&
                                    StatoAdesioneTable.CodStatoAdesione.Equals("02") &&
                                    SoggettoTable.CodiceFiscale.Equals(_s.CodiceFiscaleAssicurato)
                                    select AdesioneTable).FirstOrDefault();
                     _adesioneCN.DataFine       = new DateTime(2019, 7, 1);
                     _adesioneCN.DataCessazione = new DateTime(2019, 7, 1);
                 }
                 catch
                 {
                     transaction.Rollback();
                 }
             }
         }
     }
     catch { }
 }
Exemplo n.º 2
0
        public int CessazioneAdesione(AdesioneDao dao)
        {
            int result = -1;

            if (dao.CodLegame.Equals("001"))
            {
                List <AdesioneDao> adesioniNucleo = SelectByIdCapoNucleo(dao.IdSoggetto);
                foreach (AdesioneDao _dao in adesioniNucleo)
                {
                    using (db = new AmministrazioneAsdepEntities())
                    {
                        Adesione _ad = new Adesione();
                        Asdep.Common.DAO.ExtraDao.PropertyCopier <AdesioneDao, Adesione> .Copy(_dao, _ad);

                        result = provider.CessazioneAdesioneCollettiva(db, _ad);
                    }
                }
            }
            else
            {
                using (db = new AmministrazioneAsdepEntities())
                {
                    Adesione _ad = new Adesione();
                    Asdep.Common.DAO.ExtraDao.PropertyCopier <AdesioneDao, Adesione> .Copy(dao, _ad);

                    result = provider.CessazioneAdesioneCollettiva(db, _ad);
                }
            }
            return(result);
        }
Exemplo n.º 3
0
        public AdesioneDao ModificaAdesione(long id)
        {
            Adesione    _ad        = new Adesione();
            AdesioneDao _dao       = new AdesioneDao();
            AdesioneDao _daoValido = new AdesioneDao();

            _dao = SelectById(id);
            ErroriIOService service = new ErroriIOService();

            _dao.ErroriList = service.ValidaAdesioneCollettiva(_dao);
            return(_dao);
        }
Exemplo n.º 4
0
        public AdesioneDao SelectById(long id)
        {
            Adesione    _ad  = new Adesione();
            AdesioneDao _dao = new AdesioneDao();

            using (db = new AmministrazioneAsdepEntities())
            {
                _ad      = provider.SelectById(db, id);
                _dao.Eta = Helper.CalculateAge(_ad.Soggetto.DataNascita);
                Asdep.Common.DAO.ExtraDao.PropertyCopier <Adesione, AdesioneDao> .Copy(_ad, _dao);

                EnteDao EnteDao = new EnteDao();
                Asdep.Common.DAO.ExtraDao.PropertyCopier <Ente, EnteDao> .Copy(_ad.Ente, EnteDao);

                _dao.Ente = EnteDao;
                SoggettoDao Soggetto = new SoggettoDao();
                Asdep.Common.DAO.ExtraDao.PropertyCopier <Soggetto, SoggettoDao> .Copy(_ad.Soggetto, Soggetto);

                _dao.Soggetto = Soggetto;
                SoggettoDao Soggetto1 = new SoggettoDao();
                Asdep.Common.DAO.ExtraDao.PropertyCopier <Soggetto, SoggettoDao> .Copy(_ad.Soggetto1, Soggetto1);

                _dao.Soggetto1 = Soggetto1;
                T_StatoAdesioneDao T_StatoAdesione = new T_StatoAdesioneDao();
                Asdep.Common.DAO.ExtraDao.PropertyCopier <T_StatoAdesione, T_StatoAdesioneDao> .Copy(_ad.T_StatoAdesione, T_StatoAdesione);

                _dao.T_StatoAdesione = T_StatoAdesione;
                T_TipiLegameDao T_TipiLegame = new T_TipiLegameDao();
                Asdep.Common.DAO.ExtraDao.PropertyCopier <T_TipiLegame, T_TipiLegameDao> .Copy(_ad.T_TipiLegame, T_TipiLegame);

                _dao.T_TipiLegame = T_TipiLegame;
                T_TipoAdesioneDao T_TipoAdesione = new T_TipoAdesioneDao();
                Asdep.Common.DAO.ExtraDao.PropertyCopier <T_TipoAdesione, T_TipoAdesioneDao> .Copy(_ad.T_TipoAdesione, T_TipoAdesione);

                _dao.T_TipoAdesione = T_TipoAdesione;
                T_TipoSoggettoDao T_TipoSoggetto = new T_TipoSoggettoDao();
                Asdep.Common.DAO.ExtraDao.PropertyCopier <T_TipoSoggetto, T_TipoSoggettoDao> .Copy(_ad.T_TipoSoggetto, T_TipoSoggetto);

                _dao.T_TipoSoggetto = T_TipoSoggetto;
                _dao.ErroriList     = new List <T_ErroriIODao>();
            }
            return(_dao);
        }
Exemplo n.º 5
0
        public int SalvaAdesione(AdesioneDao dao)
        {
            Adesione _ad = new Adesione();

            Asdep.Common.DAO.ExtraDao.PropertyCopier <AdesioneDao, Adesione> .Copy(dao, _ad);

            Soggetto Soggetto = new Soggetto();

            Asdep.Common.DAO.ExtraDao.PropertyCopier <SoggettoDao, Soggetto> .Copy(dao.Soggetto, Soggetto);

            _ad.Soggetto = Soggetto;
            Soggetto Soggetto1 = new Soggetto();

            Asdep.Common.DAO.ExtraDao.PropertyCopier <SoggettoDao, Soggetto> .Copy(dao.Soggetto1, Soggetto1);

            _ad.Soggetto1 = Soggetto1;

            using (db = new AmministrazioneAsdepEntities())
            {
                return(provider.SalvaAdesioneCollettiva(db, _ad));
            }
        }
        public void FormalizzaAdesione(AmministrazioneAsdepEntities db, List <SoggettiImportAppoggio> famiglia)
        {
            //List<string> codiciAdesioneCollettive = new List<string> { "004", "005" };
            try
            {
                using (db = new AmministrazioneAsdepEntities())
                {
                    using (var transaction = db.Database.BeginTransaction())
                    {
                        try
                        {
                            SoggettiImportAppoggio _soggCN = famiglia.Where(x => x.CodiceFiscaleAssicurato.Equals(x.CodiceFiscaleCapoNucleo)).SingleOrDefault();
                            #region old
                            //Soggetto _cn = new Soggetto();

                            /*commentato*/
                            #region Esiste il soggetto capo nucleo importato nella tabella Soggetto

                            ////Trovare il capo nucleo nella tabella Soggetto (CF, Nome, Cognome)
                            //_cn = (from SoggTable in db.Soggetto
                            //           where SoggTable.CodiceFiscale.Equals(_soggCN.CodiceFiscaleAssicurato)
                            //               && SoggTable.Nome.Equals(_soggCN.Nome) && SoggTable.Cognome.Equals(_soggCN.Cognome)
                            //               && SoggTable.IdDanteCausa == null
                            //           select SoggTable).FirstOrDefault();

                            ///*******  Soggetto esistente, aggiorno i dati   *******/
                            //if (_cn != null)
                            //{
                            //    #region Soggetto esistente
                            //    _cn.IdDanteCausa = _soggCN.IdSoggetto;
                            //    if (_soggCN.DataNascitaAssicurato != null)
                            //    {
                            //        _cn.DataNascita = DateTime.Parse(_soggCN.DataNascitaAssicurato.ToString());
                            //    }
                            //    _cn.IndirizzoResidenza = _soggCN.IndirizzoResidenza;
                            //    _cn.SiglaProvinciaResidenza = _soggCN.SiglaProvResidenza;
                            //    _cn.CapResidenza = _soggCN.CapResidenza;
                            //    _cn.Email = _soggCN.Email;
                            //    _cn.IBAN = _soggCN.Iban;
                            //    _cn.Telefono = _soggCN.Telefono;
                            //    #endregion
                            //}
                            //else
                            //{
                            //    /****        Nuovo record nella tabella soggetti           ***/

                            //    #region Nuovo soggetto
                            //    _soggCN.CodiceFiscale = _capoNucleo.CodiceFiscaleAssicurato;
                            //    _soggCN.Nome = _capoNucleo.Nome;
                            //    _soggCN.CodiceFiscale = _capoNucleo.Cognome;
                            //    if (_capoNucleo.DataNascitaAssicurato != null)
                            //    {
                            //        _soggCN.DataNascita = DateTime.Parse(_capoNucleo.DataNascitaAssicurato.ToString());
                            //    }
                            //    _soggCN.IndirizzoResidenza = _capoNucleo.IndirizzoResidenza;
                            //    _soggCN.SiglaProvinciaResidenza = _capoNucleo.SiglaProvResidenza;
                            //    _soggCN.CapResidenza = _capoNucleo.CapResidenza;
                            //    _soggCN.Email = _capoNucleo.Email;
                            //    _soggCN.IBAN = _capoNucleo.Iban;
                            //    _soggCN.Telefono = _capoNucleo.Telefono;
                            //    #endregion

                            //    db.Soggetto.Add(_soggCN);
                            //}
                            #endregion

                            //EnteAppartenenza _soggCapo = new EnteAppartenenza();
                            //EnteAppartenenza _enteApp = new EnteAppartenenza();
                            /*commentato*/
                            #region Tabella EnteAppartenenza
                            ////Verificare presenza del record Soggetto Capo nucleo nella tabella ente appartenenza
                            //_soggCapo = (from EnteApp in db.EnteAppartenenza
                            //             where
                            //                 EnteApp.IdSoggetto.Equals(_soggCN.IdSoggetto)
                            //                 && EnteApp.DataInizio < _capoNucleo.Effetto
                            //                 && _capoNucleo.Effetto < EnteApp.DataFine
                            //             select EnteApp).SingleOrDefault();

                            //if (_soggCapo != null)
                            //{
                            //    /***  Se il record è presente controllare il valore dell'Ente che sia congruente con il valore del soggetto importato     *
                            //     *    altrimenti significa che lo stesso soggetto ha cambiato ente di appartenenza e vanno aggiornate alcune info         ***/

                            //    string ente = (from EnteApp in db.EnteAppartenenza join EnteT in db.Ente on EnteApp.IdEnte equals EnteT.IdEnte select EnteT.CodiceEnte).ToString();

                            //    if (!ente.Equals(_capoNucleo.Ente))
                            //    {
                            //        /***** Chiudere occorrenza esistente aggiornare data effetto,inserire nuovo record in EnteApp per il nuovo ente , aggiornare adesioni collettive    *****/
                            //        _soggCapo.DataFine = _capoNucleo.Effetto.Subtract(new TimeSpan(1, 0, 0, 0));

                            //        /***Aggiungo nuova occorrenza Ente Appartenenza per il nuovo ente**/

                            //        _enteApp.IdEnte = long.Parse((from EnteTab in db.Ente where EnteTab.CodiceEnte.Equals(_capoNucleo.Ente) select EnteTab.IdEnte).ToString());
                            //        _enteApp.IdSoggetto = _soggCN.IdSoggetto;
                            //        _enteApp.DataInizio = _capoNucleo.Effetto;
                            //        _enteApp.DataFine = _capoNucleo.Effetto.AddDays(1).AddYears(1);
                            //        db.EnteAppartenenza.Add(_enteApp);



                            //        List<Adesione> adesioniSoggetti = (from AdesioniTable in db.Adesione
                            //                                           where
                            //                                               AdesioniTable.IdCaponucleo.Equals(_soggCN.IdSoggetto)
                            //                                               && codiciAdesioneCollettive.Contains(AdesioniTable.CodTipoAdesione)
                            //                                               && AdesioniTable.DataInizio < _capoNucleo.Effetto
                            //                                               && _capoNucleo.Effetto < AdesioniTable.DataFine
                            //                                           select AdesioniTable
                            //                                           ).ToList();

                            //        foreach (Adesione Ad in adesioniSoggetti)
                            //        {
                            //            Ad.DataCessazione = _capoNucleo.Effetto.Subtract(new TimeSpan(1, 0, 0, 0));
                            //            Ad.DataFine = _capoNucleo.Effetto.Subtract(new TimeSpan(1, 0, 0, 0));
                            //        }

                            //    }

                            //}
                            #endregion

                            //Adesione _nuovaAdesione = new Adesione();
                            /*commentato*/
                            #region Adesione caponucelo
                            //*** adesione del capo nucleo    ***///
                            //Adesione adesioniSoggetto = (from AdesioniTable in db.Adesione
                            //                             where
                            //                                 AdesioniTable.IdSoggetto.Equals(_soggCN.IdSoggetto)
                            //                                 && codiciAdesioneCollettive.Contains(AdesioniTable.CodTipoAdesione)
                            //                                 && AdesioniTable.DataInizio < _capoNucleo.Effetto
                            //                                 && _capoNucleo.Effetto < AdesioniTable.DataFine
                            //                             select AdesioniTable
                            //                                   ).FirstOrDefault();


                            //if (adesioniSoggetto != null)
                            //{
                            //    adesioniSoggetto.DataCessazione = new DateTime(2019, 7, 1);//_capoNucleo.Effetto.Subtract(new TimeSpan(1, 0, 0, 0));
                            //    adesioniSoggetto.DataFine = new DateTime(2019, 7, 1);//_capoNucleo.Effetto.Subtract(new TimeSpan(1, 0, 0, 0));
                            //}
                            //else
                            //{
                            //    _nuovaAdesione.IdCaponucleo = _soggCN.IdSoggetto;
                            //    _nuovaAdesione.IdSoggetto = _soggCN.IdSoggetto;
                            //    _nuovaAdesione.CodTipoAdesione = (from TipoAdesione in db.T_TipoAdesione
                            //                                      where TipoAdesione.DescBreve.ToUpper().Equals(_capoNucleo.NumeroPolizza.ToUpper())
                            //                                      select TipoAdesione.CodTipoAdesione).ToString();
                            //    _nuovaAdesione.DataCessazione = new DateTime(2019, 7, 1);//_capoNucleo.Effetto.Subtract(new TimeSpan(1, 0, 0, 0));
                            //    _nuovaAdesione.DataFine = new DateTime(2019, 7, 1);//_capoNucleo.Effetto.Subtract(new TimeSpan(1, 0, 0, 0));
                            //    _nuovaAdesione.DataInizio = _capoNucleo.Effetto;
                            //    db.Adesione.Add(_nuovaAdesione);
                            //}
                            #endregion
                            //****** inserire STORICO ADESIONI capo nucleo*****//
                            #endregion
                            Soggetto _capoNucleo = new Soggetto();
                            Adesione _adesioneCN = new Adesione();

                            #region Soggetto Tabella
                            _capoNucleo = (from SoggTable in db.Soggetto
                                           where SoggTable.CodiceFiscale.Equals(_soggCN.CodiceFiscaleAssicurato) &&
                                           SoggTable.Nome.Equals(_soggCN.Nome) && SoggTable.Cognome.Equals(_soggCN.Cognome)
                                           select SoggTable).FirstOrDefault();
                            if (_capoNucleo != null)
                            {
                                //Aggiornare il capo nucleo
                                _capoNucleo.Nome                    = !string.IsNullOrEmpty(_soggCN.Nome) ? _soggCN.Nome : _capoNucleo.Nome;
                                _capoNucleo.SecondoNome             = !string.IsNullOrEmpty(_soggCN.SecondoNome) ? _soggCN.SecondoNome : _capoNucleo.SecondoNome;
                                _capoNucleo.Cognome                 = !string.IsNullOrEmpty(_soggCN.Cognome) ? _soggCN.Cognome : _capoNucleo.Cognome;
                                _capoNucleo.CodiceFiscale           = !string.IsNullOrEmpty(_soggCN.CodiceFiscaleAssicurato) ? _soggCN.CodiceFiscaleAssicurato : _capoNucleo.CodiceFiscale;
                                _capoNucleo.CapResidenza            = !string.IsNullOrEmpty(_soggCN.CapResidenza) ? _soggCN.CapResidenza : _capoNucleo.CapResidenza;
                                _capoNucleo.DataAggiornamento       = DateTime.Now;
                                _capoNucleo.DataNascita             = DateTime.Parse(_soggCN.DataNascitaAssicurato.ToString());
                                _capoNucleo.Email                   = !string.IsNullOrEmpty(_soggCN.Email) ? _soggCN.Email : _capoNucleo.Email;
                                _capoNucleo.IBAN                    = !string.IsNullOrEmpty(_soggCN.Iban) ? _soggCN.Iban : _capoNucleo.IBAN;
                                _capoNucleo.IndirizzoResidenza      = !string.IsNullOrEmpty(_soggCN.IndirizzoResidenza) ? _soggCN.IndirizzoResidenza : _capoNucleo.IndirizzoResidenza;
                                _capoNucleo.LuogoNascita            = !string.IsNullOrEmpty(_soggCN.LuogoNascitaAssicurato) ? _soggCN.LuogoNascitaAssicurato : _capoNucleo.LuogoNascita;
                                _capoNucleo.SiglaProvinciaResidenza = !string.IsNullOrEmpty(_soggCN.LuogoNascitaAssicurato) ? _soggCN.SiglaProvResidenza : _capoNucleo.SiglaProvinciaResidenza;
                                _capoNucleo.StatoRecord             = "02";
                                _capoNucleo.Telefono                = !string.IsNullOrEmpty(_soggCN.Telefono) ? _soggCN.Telefono : _capoNucleo.Telefono;
                                _capoNucleo.Fonte                   = "AC";
                                _capoNucleo.FonteModifica           = "AC";
                                _capoNucleo.DataInizio              = DateTime.Now;
                                _capoNucleo.DataFine                = DateTime.MaxValue;
                                _capoNucleo.CodiceUtente            = "xxx";
                            }
                            else
                            {
                                //Creare il soggetto caponucleo
                                _capoNucleo.Nome                    = _soggCN.Nome;
                                _capoNucleo.SecondoNome             = _soggCN.SecondoNome;
                                _capoNucleo.Cognome                 = _soggCN.Cognome;
                                _capoNucleo.CodiceFiscale           = _soggCN.CodiceFiscaleAssicurato;
                                _capoNucleo.CapResidenza            = _soggCN.CapResidenza;
                                _capoNucleo.DataAggiornamento       = DateTime.Now;
                                _capoNucleo.DataNascita             = DateTime.Parse(_soggCN.DataNascitaAssicurato.ToString());
                                _capoNucleo.Email                   = _soggCN.Email;
                                _capoNucleo.IBAN                    = _soggCN.Iban;
                                _capoNucleo.IndirizzoResidenza      = _soggCN.IndirizzoResidenza;
                                _capoNucleo.LuogoNascita            = _soggCN.LuogoNascitaAssicurato;
                                _capoNucleo.SiglaProvinciaResidenza = _soggCN.SiglaProvResidenza;
                                _capoNucleo.StatoRecord             = "02";
                                _capoNucleo.Telefono                = _soggCN.Telefono;
                                _capoNucleo.Fonte                   = "AC";
                                _capoNucleo.FonteModifica           = "AC";
                                _capoNucleo.DataInizio              = DateTime.Now;
                                _capoNucleo.DataFine                = DateTime.MaxValue;
                                _capoNucleo.CodiceUtente            = "xxx";
                                db.Soggetto.Add(_capoNucleo);
                            }
                            #endregion

                            //Cercare adesione valida

                            #region Adesione Tabella

                            _adesioneCN = (from AdesioneTable in db.Adesione
                                           join StatoAdesioneTable in db.T_StatoAdesione on AdesioneTable.StatoAdesione equals StatoAdesioneTable.CodStatoAdesione
                                           where AdesioneTable.IdSoggetto.Equals(_capoNucleo.IdSoggetto) &&
                                           AdesioneTable.IdCaponucleo.Equals(_capoNucleo.IdSoggetto) &&
                                           AdesioneTable.DataInizio < DateTime.Now &&
                                           DateTime.Now < AdesioneTable.DataFine &&
                                           StatoAdesioneTable.CodStatoAdesione.Equals("02")
                                           select AdesioneTable).FirstOrDefault();

                            //Se esiste verificare l'ente
                            if (_adesioneCN != null)
                            {
                                string enteAdesioneValidaTrovata = _adesioneCN.Ente.CodiceEnte;
                                #region if Soggetto cambia ente
                                if (!enteAdesioneValidaTrovata.Equals(_soggCN.Ente))
                                {
                                    //Sono nel caso in cui il soggetto ha cambiato ente di appartenenza
                                    //Chiudere adesioni riferite al vecchio ente comprese quelle del nucleo ed aprirne una nuova per lui
                                    //Chiudere record EnteDiAppartenenza riferito al vecchio ente

                                    //Adesioni famigliari
                                    List <Adesione> _adesioniNucleo = (from AdesioneTable in db.Adesione
                                                                       where AdesioneTable.IdCaponucleo.Equals(_capoNucleo.IdSoggetto) &&
                                                                       AdesioneTable.Ente.CodiceEnte.Equals(_adesioneCN.Ente.CodiceEnte)
                                                                       select AdesioneTable).ToList();
                                    foreach (Adesione _ad in _adesioniNucleo)
                                    {
                                        _ad.DataFine       = _soggCN.Effetto.Subtract(new TimeSpan(1, 0, 0, 0));
                                        _ad.DataCessazione = _soggCN.Effetto.Subtract(new TimeSpan(1, 0, 0, 0));
                                        _ad.StatoAdesione  = (from StatoAdesioniTable in db.T_StatoAdesione where StatoAdesioniTable.CodStatoAdesione.Equals("03") select StatoAdesioniTable).Select(x => x.CodStatoAdesione).ToString();
                                    }

                                    //EnteAppartenenza
                                    EnteAppartenenza _soggCapo = new EnteAppartenenza();
                                    _soggCapo = (from EnteAppTable in db.EnteAppartenenza
                                                 where
                                                 EnteAppTable.IdSoggetto.Equals(_capoNucleo.IdSoggetto) &&
                                                 EnteAppTable.IdEnte.Equals(_adesioneCN.IdEnte)
                                                 select EnteAppTable).FirstOrDefault();
                                    if (_soggCapo != null)
                                    {
                                        _soggCapo.DataFine = _soggCN.Effetto.Subtract(new TimeSpan(1, 0, 0, 0));

                                        //Aggiungere nuovo Ente appartenenza
                                        EnteAppartenenza _enteApp = new EnteAppartenenza();
                                        _enteApp.IdEnte            = long.Parse((from EnteTab in db.Ente where EnteTab.CodiceEnte.Equals(_soggCN.Ente) select EnteTab.IdEnte).ToString());
                                        _enteApp.IdSoggetto        = _capoNucleo.IdSoggetto;
                                        _enteApp.DataInizio        = _soggCN.Effetto;
                                        _enteApp.DataFine          = _soggCN.Effetto.AddDays(1).AddYears(1);
                                        _enteApp.DataAggiornamento = DateTime.Now;
                                        _enteApp.CodiceUtente      = "xxx";
                                        _enteApp.CodAppl           = "xxx";
                                        db.EnteAppartenenza.Add(_enteApp);
                                    }

                                    //Aggiungere nuova adesione caponucleo
                                    Adesione newAdesione = new Adesione();

                                    newAdesione.CodLegame         = (from TableLegame in  db.T_TipiLegame where TableLegame.DescLegame.Equals(_soggCN.LegameNucleo) select TableLegame.CodLegame).ToString();
                                    newAdesione.CodTipoAdesione   = (from TableAdesione in db.T_TipoAdesione where TableAdesione.DescBreve.Equals(_soggCN.NumeroPolizza) select TableAdesione.CodTipoAdesione).ToString();
                                    newAdesione.CodTipoSoggetto   = (from TableSoggetto in db.T_TipoSoggetto where TableSoggetto.DescTipoSoggetto.Equals(_soggCN.Categoria) select TableSoggetto.CodTipoSoggetto).ToString();
                                    newAdesione.DataAggiornamento = DateTime.Now;
                                    newAdesione.DataInizio        = _soggCN.Effetto;
                                    newAdesione.IdEnte            = long.Parse((from EnteTab in db.Ente where EnteTab.CodiceEnte.Equals(_soggCN.Ente) select EnteTab.IdEnte).ToString());
                                    newAdesione.StatoAdesione     = "02";
                                    newAdesione.IdCaponucleo      = _capoNucleo.IdSoggetto;
                                    newAdesione.IdSoggetto        = _capoNucleo.IdSoggetto;
                                    newAdesione.MeseDecorrenza    = 0;
                                    newAdesione.AnnoDecorrenza    = 0;
                                    newAdesione.AnnoScadenza      = 0;
                                    newAdesione.DataFine          = DateTime.Now;
                                    newAdesione.CodiceUtente      = "xxx";
                                    newAdesione.CodAppl           = "xxx";
                                    db.Adesione.Add(newAdesione);
                                }
                                #endregion
                                #region else
                                else
                                {
                                    _adesioneCN.DataFine = FineAdesione;
                                }
                                #endregion
                            }
                            //Se non esiste creare una nuova adesione
                            else
                            {
                                _adesioneCN.DataInizio     = InizioAdesione;
                                _adesioneCN.DataFine       = FineAdesione;
                                _adesioneCN.IdSoggetto     = _capoNucleo.IdSoggetto;
                                _adesioneCN.IdCaponucleo   = _capoNucleo.IdSoggetto;
                                _adesioneCN.StatoAdesione  = (from StatoAdesioniTable in db.T_StatoAdesione where StatoAdesioniTable.CodStatoAdesione.Equals("02") select StatoAdesioniTable).Select(x => x.CodStatoAdesione).ToString();
                                _adesioneCN.IdEnte         = long.Parse((from EnteTab in db.Ente where EnteTab.CodiceEnte.Equals(_soggCN.Ente) select EnteTab.IdEnte).ToString());
                                _adesioneCN.StatoAdesione  = "02";
                                _adesioneCN.MeseDecorrenza = 0;
                                _adesioneCN.AnnoDecorrenza = 0;
                                _adesioneCN.AnnoScadenza   = 0;
                                _adesioneCN.CodiceUtente   = "xxx";
                                _adesioneCN.CodAppl        = "xxx";
                                db.Adesione.Add(_adesioneCN);
                            }

                            #endregion

                            /*******************    Ciclo per i famigliari           **********************/

                            #region Famigliari

                            famiglia.Remove(_soggCN);

                            foreach (SoggettiImportAppoggio _fami in famiglia)
                            {
                                Soggetto _famigliare = new Soggetto();


                                #region Tabella Soggetto
                                _famigliare = (from SoggTable in db.Soggetto
                                               where SoggTable.CodiceFiscale.Equals(_fami.CodiceFiscaleAssicurato) &&
                                               SoggTable.Nome.Equals(_fami.Nome) && SoggTable.Cognome.Equals(_fami.Cognome)
                                               select SoggTable).FirstOrDefault();

                                if (_famigliare != null)
                                {
                                    //Aggiornare
                                    _famigliare.Nome                    = !string.IsNullOrEmpty(_fami.Nome)? _fami.Nome : _famigliare.Nome;
                                    _famigliare.SecondoNome             = !string.IsNullOrEmpty(_fami.SecondoNome) ? _fami.SecondoNome : _famigliare.SecondoNome;
                                    _famigliare.Cognome                 = !string.IsNullOrEmpty(_fami.Cognome) ? _fami.Cognome : _famigliare.Cognome;
                                    _famigliare.CodiceFiscale           = !string.IsNullOrEmpty(_fami.CodiceFiscaleAssicurato) ? _fami.CodiceFiscaleAssicurato : _famigliare.CodiceFiscale;
                                    _famigliare.CapResidenza            = !string.IsNullOrEmpty(_fami.CapResidenza) ?_fami.CapResidenza : _famigliare.CapResidenza;
                                    _famigliare.DataAggiornamento       = DateTime.Now;
                                    _famigliare.DataNascita             = DateTime.Parse(_fami.DataNascitaAssicurato.ToString());
                                    _famigliare.Email                   = !string.IsNullOrEmpty(_fami.Email) ? _fami.Email : _famigliare.Email;
                                    _famigliare.IBAN                    = !string.IsNullOrEmpty(_fami.Iban) ?  _fami.Iban : _famigliare.IBAN;
                                    _famigliare.IndirizzoResidenza      = !string.IsNullOrEmpty(_fami.IndirizzoResidenza) ?  _fami.IndirizzoResidenza : _famigliare.IndirizzoResidenza;
                                    _famigliare.LuogoNascita            = !string.IsNullOrEmpty(_fami.LuogoNascitaAssicurato) ?  _fami.LuogoNascitaAssicurato : _famigliare.LuogoNascita;
                                    _famigliare.SiglaProvinciaResidenza = !string.IsNullOrEmpty(_fami.LuogoNascitaAssicurato) ? _fami.SiglaProvResidenza : _famigliare.SiglaProvinciaResidenza;
                                    _famigliare.StatoRecord             = "02";
                                    _famigliare.Telefono                = !string.IsNullOrEmpty(_fami.Telefono) ? _fami.Telefono : _famigliare.Telefono;
                                    _famigliare.Fonte                   = "AC";
                                    _famigliare.FonteModifica           = "AC";
                                    _famigliare.DataInizio              = DateTime.Now;
                                    _famigliare.DataFine                = DateTime.MaxValue;
                                    _famigliare.CodiceUtente            = "xxx";
                                }
                                else
                                {
                                    //Creare
                                    _famigliare.Nome                    = _fami.Nome;
                                    _famigliare.SecondoNome             = _fami.SecondoNome;
                                    _famigliare.Cognome                 = _fami.Cognome;
                                    _famigliare.CodiceFiscale           = _fami.CodiceFiscaleAssicurato;
                                    _famigliare.CapResidenza            = _fami.CapResidenza;
                                    _famigliare.DataAggiornamento       = DateTime.Now;
                                    _famigliare.DataNascita             = DateTime.Parse(_fami.DataNascitaAssicurato.ToString());
                                    _famigliare.Email                   = _fami.Email;
                                    _famigliare.IBAN                    = _fami.Iban;
                                    _famigliare.IndirizzoResidenza      = _fami.IndirizzoResidenza;
                                    _famigliare.LuogoNascita            = _fami.LuogoNascitaAssicurato;
                                    _famigliare.SiglaProvinciaResidenza = _fami.SiglaProvResidenza;
                                    _famigliare.StatoRecord             = "02";
                                    _famigliare.Telefono                = _fami.Telefono;
                                    _famigliare.Fonte                   = "AC";
                                    _famigliare.FonteModifica           = "AC";
                                    _famigliare.DataInizio              = DateTime.Now;
                                    _famigliare.DataFine                = DateTime.MaxValue;
                                    _famigliare.CodiceUtente            = "xxx";
                                    db.Soggetto.Add(_famigliare);
                                }
                                #endregion

                                #region Tabella Adesione

                                Adesione adesioniSoggettoFami = (from AdesioniTable in db.Adesione
                                                                 join StatoAdesioniTable in db.T_StatoAdesione
                                                                 on AdesioniTable.StatoAdesione equals StatoAdesioniTable.CodStatoAdesione
                                                                 where
                                                                 AdesioniTable.IdSoggetto.Equals(_famigliare.IdSoggetto) &&
                                                                 AdesioniTable.IdCaponucleo.Equals(_capoNucleo.IdSoggetto) &&
                                                                 AdesioniTable.Ente.CodiceEnte.Equals(_fami.Ente) &&
                                                                 AdesioniTable.DataInizio < DateTime.Now &&
                                                                 DateTime.Now < AdesioniTable.DataFine &&
                                                                 StatoAdesioniTable.CodStatoAdesione.Equals("02")
                                                                 #region old

                                                                 /*AdesioniTable.IdSoggetto.Equals(_fami.IdSoggetto)
                                                                  *  && codiciAdesioneCollettive.Contains(AdesioniTable.CodTipoAdesione)
                                                                  *  && AdesioniTable.DataInizio < _fami.Effetto
                                                                  *  && _fami.Effetto < AdesioniTable.DataFine */
                                                                 #endregion
                                                                 select AdesioniTable
                                                                 ).FirstOrDefault();


                                if (adesioniSoggettoFami != null)
                                {
                                    adesioniSoggettoFami.DataFine = new DateTime(2019, 7, 1);//_capoNucleo.Effetto.Subtract(new TimeSpan(1, 0, 0, 0));
                                }
                                else
                                {
                                    adesioniSoggettoFami.IdCaponucleo    = _soggCN.IdSoggetto;
                                    adesioniSoggettoFami.IdSoggetto      = _famigliare.IdSoggetto;
                                    adesioniSoggettoFami.CodTipoAdesione = (from TipoAdesione in db.T_TipoAdesione
                                                                            where TipoAdesione.DescBreve.ToUpper().Equals(_fami.NumeroPolizza.ToUpper())
                                                                            select TipoAdesione.CodTipoAdesione).ToString();
                                    adesioniSoggettoFami.DataFine       = new DateTime(2019, 7, 1);//_capoNucleo.Effetto.Subtract(new TimeSpan(1, 0, 0, 0));
                                    adesioniSoggettoFami.IdEnte         = long.Parse((from EnteTab in db.Ente where EnteTab.CodiceEnte.Equals(_soggCN.Ente) select EnteTab.IdEnte).ToString());
                                    adesioniSoggettoFami.StatoAdesione  = "02";
                                    adesioniSoggettoFami.MeseDecorrenza = 0;
                                    adesioniSoggettoFami.AnnoDecorrenza = 0;
                                    adesioniSoggettoFami.AnnoScadenza   = 0;
                                    adesioniSoggettoFami.DataFine       = DateTime.Now;
                                    adesioniSoggettoFami.CodiceUtente   = "xxx";
                                    adesioniSoggettoFami.CodAppl        = "xxx";
                                    adesioniSoggettoFami.DataInizio     = _fami.Effetto;
                                    db.Adesione.Add(adesioniSoggettoFami);
                                }
                                #endregion
                            }
                            #endregion


                            db.SaveChanges();
                            transaction.Commit();
                        }
                        catch
                        {
                            transaction.Rollback();
                        }
                    }
                }
            }
            catch (Exception e)
            {
            }
        }