public static AssicurazioneContratto GetIstance(TipoPolizza tipo, DateTime dataScadenza, DateTime dataScadenzaPremio, int durata, TipoContratto tipoContratto)
        {
            AssicurazioneContratto contratto;

            switch (tipo)
            { 
                case TipoPolizza.Furto:
                    contratto = new FurtoAssicurazione(dataScadenza, dataScadenzaPremio, tipoContratto);
                    break;

                case TipoPolizza.GlobaleFabbricati:
                    contratto = new GlobaleAssicurazione(dataScadenza, dataScadenzaPremio, tipoContratto);
                    break;

                case TipoPolizza.Incendio:
                    contratto = new IncendioAssicurazione(dataScadenza, dataScadenzaPremio, tipoContratto);
                    break;

                case TipoPolizza.Infortuni:
                    contratto = new InfortuniAssicurazione(dataScadenza, dataScadenzaPremio, tipoContratto);
                    break;

                case TipoPolizza.ResponsabilitaCivile:
                    contratto = new ResponsabilitaCivileAssicurazione(dataScadenza, dataScadenzaPremio, tipoContratto);
                    break;

                default:
                    contratto = new AssicurazioneContratto(dataScadenza, dataScadenzaPremio, tipoContratto);
                    break;
            }

            contratto.MesiDurata = durata;

            return contratto;
        }
Beispiel #2
0
        private bool insertAssicurazioneContratto(AssicurazioneContrattoDTO assicurazioneContrattoDto, out AssicurazioneContratto assc)
        {
            var daoFactory = _windsorRepository.GetDaoFactory(_info.Azienda);
            bool result;

            var tipo = daoFactory.GetTipoContrattoDao().Find(assicurazioneContrattoDto.IdTipoContratto.GetValueOrDefault(), false);
            if(tipo == null)
                _log.ErrorFormat("Non trovato il tipo contratto assicurativo - {0} - tipo:{1} - azienda:{2}", Utility.GetMethodDescription(), assicurazioneContrattoDto.IdTipoContratto.GetValueOrDefault(), _info.Azienda);

            try
            {
                switch(assicurazioneContrattoDto.Tipo)
                {
                    case TipoPolizza.GlobaleFabbricati:
                        assc = new GlobaleAssicurazione(assicurazioneContrattoDto.Scadenza, assicurazioneContrattoDto.ScadenzaPremio, tipo);
                        ((GlobaleAssicurazione)assc).DanniAcqua = assicurazioneContrattoDto.DanniAcqua;
                        ((GlobaleAssicurazione)assc).FranchigiaDanniAcqua = assicurazioneContrattoDto.FranchigiaDanniAcqua;
                        ((GlobaleAssicurazione)assc).FranchigiaRicercaGuasto = assicurazioneContrattoDto.FranchigiaRicercaGuasto;
                        ((GlobaleAssicurazione)assc).ImportoLimiteCoseRCT = assicurazioneContrattoDto.ImportoLimiteCoseRCT;
                        ((GlobaleAssicurazione)assc).ImportoMassimaleSinistroRCT = assicurazioneContrattoDto.ImportoMassimaleSinistroRCT;
                        ((GlobaleAssicurazione)assc).ImportoUnicoRCT = assicurazioneContrattoDto.ImportoUnicoRCT;
                        ((GlobaleAssicurazione)assc).RicercaGuasto = assicurazioneContrattoDto.RicercaGuasto;
                        ((GlobaleAssicurazione)assc).ValoreRicostruzioneNuovo = assicurazioneContrattoDto.ValoreRicostruzioneNuovo;
                        ((GlobaleAssicurazione)assc).ImportoLimitePersonaRCT = assicurazioneContrattoDto.ImportoLimitePersonaRCT;
                        break;

                    case TipoPolizza.Incendio:
                        assc = new IncendioAssicurazione(assicurazioneContrattoDto.Scadenza, assicurazioneContrattoDto.ScadenzaPremio, tipo);
                        ((IncendioAssicurazione)assc).DanniAcqua = assicurazioneContrattoDto.DanniAcqua;
                        ((IncendioAssicurazione)assc).FranchigiaDanniAcqua = assicurazioneContrattoDto.FranchigiaDanniAcqua;
                        ((IncendioAssicurazione)assc).FranchigiaRicercaGuasto = assicurazioneContrattoDto.FranchigiaRicercaGuasto;
                        ((IncendioAssicurazione)assc).ImportoLimiteCoseRCT = assicurazioneContrattoDto.ImportoLimiteCoseRCT;
                        ((IncendioAssicurazione)assc).ImportoMassimaleSinistroRCT = assicurazioneContrattoDto.ImportoMassimaleSinistroRCT;
                        ((IncendioAssicurazione)assc).ImportoUnicoRCT = assicurazioneContrattoDto.ImportoUnicoRCT;
                        ((IncendioAssicurazione)assc).RicercaGuasto = assicurazioneContrattoDto.RicercaGuasto;
                        ((IncendioAssicurazione)assc).ValoreRicostruzioneNuovo = assicurazioneContrattoDto.ValoreRicostruzioneNuovo;
                        ((IncendioAssicurazione)assc).ImportoLimitePersonaRCT = assicurazioneContrattoDto.ImportoLimitePersonaRCT;
                        break;

                    case TipoPolizza.Furto:
                        assc = new FurtoAssicurazione(assicurazioneContrattoDto.Scadenza, assicurazioneContrattoDto.ScadenzaPremio, tipo);
                        break;

                    case TipoPolizza.Infortuni:
                        assc = new InfortuniAssicurazione(assicurazioneContrattoDto.Scadenza, assicurazioneContrattoDto.ScadenzaPremio, tipo);
                        break;

                    case TipoPolizza.ResponsabilitaCivile:
                        assc = new ResponsabilitaCivileAssicurazione(assicurazioneContrattoDto.Scadenza, assicurazioneContrattoDto.ScadenzaPremio, tipo);
                        break;

                    default:
                        assc = new AssicurazioneContratto(assicurazioneContrattoDto.Scadenza, assicurazioneContrattoDto.ScadenzaPremio, tipo);
                        break;
                }

                // Save Or Update immediato per ottenere subito l'ID del contratto
                daoFactory.GetAssicurazioneContrattoDao().SaveOrUpdate(assc);

                assc.AlertPremioAbilitato = assicurazioneContrattoDto.AlertPremioAbilitato;
                assc.AlertScadenzaAbilitato = assicurazioneContrattoDto.AlertScadenzaAbilitato;
                assc.Descrizione = assicurazioneContrattoDto.Descrizione;
                assc.ImportoPremio = assicurazioneContrattoDto.ImportoPremio;
                assc.MesiDurata = assicurazioneContrattoDto.MesiDurata;
                assc.Note = assicurazioneContrattoDto.Note;
                assc.PresenzaAppalto = assicurazioneContrattoDto.PresenzaAppalto;
                assc.NumeroContratto = assicurazioneContrattoDto.NumeroPolizza;

                // -------------------------------------
                // Alert Premio
                // -------------------------------------
                foreach (AlertContrattoDTO t in assicurazioneContrattoDto.AlertPremio)
                {
                    if (t != null)
                    {
                        int? id = t.ID;
                        if (t.Stato.ToUpper() == "U" || t.Stato.ToUpper() == "I")
                            id = getAlertRepository().ManageDomainEntity(t);

                        var alert = daoFactory.GetAlertPremioContrattoDao().GetById(id.GetValueOrDefault(), false);
                        assc.AlertPremio.Add(alert);
                        alert.ContrattoAssicurativoRiferimento = assc;
                    }
                }

                // -------------------------------------
                // Alert Scadenza
                // -------------------------------------
                foreach (AlertContrattoDTO t in assicurazioneContrattoDto.AlertScadenza)
                {
                    if (t != null)
                    {
                        int? id = t.ID;
                        if (t.Stato.ToUpper() == "U" || t.Stato.ToUpper() == "I")
                            id = getAlertRepository().ManageDomainEntity(t);


                        var alert = daoFactory.GetAlertScadenzaContrattoDao().GetById(id.GetValueOrDefault(), false);
                        assc.AlertScadenza.Add(alert);
                        alert.ContrattoRiferimento = assc;
                    }
                }

                // -------------------------------------
                // Condominio Riferimento
                // -------------------------------------
                if (assicurazioneContrattoDto.IdCondominio != null && assicurazioneContrattoDto.IdCondominio > 0)
                {
                    assc.CondominioRiferimento = daoFactory.GetCondominioDao().Find(assicurazioneContrattoDto.IdCondominio.Value, false);
                }

                // -------------------------------------
                // Fornitore
                // -------------------------------------
                if (assicurazioneContrattoDto.IdFornitore != null && assicurazioneContrattoDto.IdFornitore > 0)
                {
                    assc.FornitoreAttuale = daoFactory.GetFornitoreDao().Find(assicurazioneContrattoDto.IdFornitore.Value, false);
                }

                // -------------------------------------
                // Tipo
                // -------------------------------------
                if (assicurazioneContrattoDto.IdTipoContratto != null && assicurazioneContrattoDto.IdTipoContratto > 0)
                {
                    assc.Tipo = daoFactory.GetTipoContrattoDao().Find(assicurazioneContrattoDto.IdTipoContratto.Value, false);
                }

                // -------------------------------------
                // Documenti
                // -------------------------------------
                assc.Documenti.Clear();
                foreach (var t in assicurazioneContrattoDto.Documenti)
                {
                    if (t != null)
                    {
                        t.IdContratto = assc.ID;
                        int? id = t.ID;
                        if (t.Stato.ToUpper() == "U" || t.Stato.ToUpper() == "I")
                            id = getDocumentoRepository().ManageDomainEntity(t, assc.CondominioRiferimento.Azienda.ID);

                        assc.Documenti.Add(daoFactory.GetDocumentoDao().GetById(id.Value, false));
                    }
                }

                // -------------------------------------
                // Premi Pagati
                // -------------------------------------
                assc.PremiPagati.Clear();
                foreach (var t in assicurazioneContrattoDto.PremiPagati)
                {
                    if (t != null)
                    {
                        t.IdContratto = assc.ID;
                        int? id = t.ID;
                        if (t.Stato.ToUpper() == "U" || t.Stato.ToUpper() == "I")
                            id = getPremioAssicurativoRepository().ManageDomainEntity(t);

                        assc.PremiPagati.Add(daoFactory.GetPremioAssicurativoDao().GetById(id.Value, false));
                    }
                }

                result = true;
            }
            catch (Exception ex)
            {
                
                _log.Error("Errore nell'inserimento del contratto assicurativo: " + Utility.GetMethodDescription() + " - id:" + assicurazioneContrattoDto.ID, ex);
                throw;
            }

            return result;
        }
Beispiel #3
0
        public AssicurazioneContrattoDTO GetNewContrattoAssicurativo(int idCondominio, TipoPolizza tipoPolizza, int idTipoContratto, int idAzienda)
        {
            try
            {
                var daoFactory = _windsorRepository.GetDaoFactory(_info.Azienda);
                AssicurazioneContratto contratto;

                var tipo = daoFactory.GetTipoContrattoDao().Find(idTipoContratto, false);
                if(tipo == null)
                    _log.WarnFormat("Tipo contratto non trovato - {0} - tipo:{1} - azienda:{2}", Utility.GetMethodDescription(), idTipoContratto, idAzienda);

                switch (tipoPolizza)
                { 
                    case TipoPolizza.Furto:
                        contratto = new FurtoAssicurazione(null, null, tipo);
                        break;
                    case TipoPolizza.GlobaleFabbricati:
                        contratto = new GlobaleAssicurazione(null, null, tipo);
                        break;
                    case TipoPolizza.Incendio:
                        contratto = new IncendioAssicurazione(null, null, tipo);
                        break;
                    case TipoPolizza.Infortuni:
                        contratto = new InfortuniAssicurazione(null, null, tipo);
                        break;
                    case TipoPolizza.ResponsabilitaCivile:
                        contratto = new ResponsabilitaCivileAssicurazione(null, null, tipo);
                        break;
                    default:
                        contratto = new AssicurazioneContratto(null, null, tipo);
                        break;
                }

                contratto.CondominioRiferimento = daoFactory.GetCondominioDao().GetById(idCondominio, false);

                Common.AssicurazioneContrattoHelper.SetDefault(contratto);
                return setAssicurazioniContrattiDto(contratto);
            }
            catch (Exception ex)
            {
                _log.ErrorFormat("Errore nella creazione di un nuovo contratto assicurativo - {0} - condominio:{1} - tipo:{2} - azienda:{3}", ex, Utility.GetMethodDescription(), idCondominio, tipoPolizza, idAzienda);
                throw;
            }

        }
        public void SetUp()
        {
            _azienda = new Azienda("PROVA", "Azienda di prova") {ID=1};
            _aziendaDestinazione = new Azienda("DEST", "Azienda di destinazione") { ID = 2 };
            _condominio = new Condominio("Condominio ABC", 31, 12, 2015, _azienda)
            {
                ID = 1,
                Codice = "COND01",
                CodiceCUC = "CUC123456",
                CodiceSIA = "SIA12",
                AnnoInizio = 2015,
                CodiceFiscale = "012365477859",
                CodiceCalcoloTariffaAcqua = "TAR01"
            };
            _condominio.Palazzine.Clear();

            _esercizio = new EsercizioDTO
            {
                Descrizione = "Primo Esercizio",
                DataApertura = new DateTime(2016, 6, 1),
                DataChiusura = new DateTime(2017, 5, 31)
            };

            _banca01 = new DatiBancariCondomini("12345", "12345", "123456789012", "A", _condominio) {Iban = "IT02L1234512345123456789012" };
            _banca02 = new DatiBancariCondomini("03268", "10001", "100000000000", "A", _condominio) { Iban = "IT11X03268100001100000000000" };

            _stabile01 = new Palazzina(_condominio, "Stabile 01") {ID=1};
            _stabile01.GruppiStabile.Clear();
            _condominio.Palazzine.Add(_stabile01);

            var comune = new Comune("A944", "Bologna", new Provincia("BO", new Regione("Emilia Romagna")));

            _gruppoStabile01 = new GruppoStabile(_stabile01, "Scala 01") { ID = 1, Ordine = 1, Note = "Note per Scala01", Indirizzo = new Address { Cap = "40131", Civico = "SCA/1", Indirizzo = "Via Scala01", Localita = "Scaletta01", Comune = comune } };
            _gruppoStabile02 = new GruppoStabile(_stabile01, "Scala 02") { ID = 2, Ordine = 2, Note = "Note per Scala02", Indirizzo = new Address { Cap = "40132", Civico = "SCA/2", Indirizzo = "Via Scala02", Localita = "Scaletta02", Comune = comune } };

            _condominio.Indirizzo = new Address
            {
                Indirizzo = "via dei Fiori",
                Cap = "40100",
                Civico = "23",
                Localita = "Pioppa",
                Comune = comune
            };

            var listaTipoUnitaImmobiliare = new List<TipoUnitaImmobiliare>
            {
                new TipoUnitaImmobiliare("Tipo01") {ID = 1},
                new TipoUnitaImmobiliare("Tipo02") {ID = 2}
            };

            var fornitore = new Fornitore(new Persona(TipoPersonaEnum.Giuridica, "Franco", "Livoresi", _azienda.ID, true) {PartitaIva = "01867511204"}, _azienda.ID) {ID =1};
            var fornitore01 = new Fornitore(new Persona(TipoPersonaEnum.Giuridica, "Luigi", "Majorana", _azienda.ID, true) { PartitaIva = "01230460394" }, _azienda.ID) {ID = 2};
            var agenziaAssicurativa = new AgenziaAssicurativa(new Persona(TipoPersonaEnum.Giuridica, "", "Agenzia Bologna", _azienda.ID, true) { PartitaIva = "03211600402" }, fornitore01, "Agenzia BO", _azienda.ID) {ID = 3};
            var tipoContratto = new TipoContratto("Pulizia Scale") {ID=1};
            var tipoContrattoAssicurativo = new TipoContratto("Assicurazione") {ID=2};

            _unitaImmobiliare01 = new UnitaImmobiliare(_gruppoStabile01, listaTipoUnitaImmobiliare[0]) { ID = 1, Descrizione = "Unità 01", Ordine = 1};
            _unitaImmobiliare02 = new UnitaImmobiliare(_gruppoStabile01, new TipoUnitaImmobiliare("Tipo02")) { ID = 2, Descrizione = "Unità 02", Ordine = 2 }; 
            _unitaImmobiliare03 = new UnitaImmobiliare(_gruppoStabile02, listaTipoUnitaImmobiliare[1]) { ID = 3, Descrizione = "Unità 03", Ordine = null }; 
            _unitaImmobiliare04 = new UnitaImmobiliare(_gruppoStabile02, new TipoUnitaImmobiliare("Tipo NEW")) { ID = 4, Descrizione = "Unità 04", Ordine = 4 };

            _unitaImmobiliare01.CondizioniSicurezzaImpianto = new SicurezzaImpianto
            {
                Norma = true,
                Note = "Note01"
            };

            _unitaImmobiliareImpiantistica01 = new UnitaImmobiliareImpiantistica(_unitaImmobiliare01, "TipoImpianto01", true) { ID = 1, Descrizione = "Impianto 01"};
            _unitaImmobiliareImpiantistica02 = new UnitaImmobiliareImpiantistica(_unitaImmobiliare01, "TipoImpianto02", false) {ID = 2, Descrizione = "Impianto 02"};

            _persona01 = new Persona(TipoPersonaEnum.Fisica, "Mario", "Rossi", _azienda.ID, false)
            {
                ID = 1,
                ComuneNascita = comune,
                IndirizzoResidenza =
                    new Address
                    {
                        Indirizzo = "via residenza01",
                        Cap = "40101",
                        Civico = "1",
                        Comune = comune,
                        Localita = "Pioppa 01"
                    },
                Domicilio =
                    new Address
                    {
                        Indirizzo = "via domicilio01",
                        Cap = "40101",
                        Civico = "1",
                        Comune = comune,
                        Localita = "Pioppa 01"
                    },
                Recapito =
                    new Address
                    {
                        Indirizzo = "via recapito01",
                        Cap = "40101",
                        Civico = "1",
                        Comune = comune,
                        Localita = "Pioppa 01"
                    }
            };

            _proprietario01 = new Proprietario(_unitaImmobiliare01, _persona01) {ID = 1, Descrizione = "Mario Rossi", VersamentoMav = true, Consigliere = true, Principale = true};

            _persona02 = new Persona(TipoPersonaEnum.Giuridica, "Giulio", "Verdi", _azienda.ID, false)
            {
                ID = 2,
                ComuneNascita = comune,
                IndirizzoResidenza =
                    new Address
                    {
                        Indirizzo = "via residenza02",
                        Cap = "40102",
                        Civico = "2",
                        Comune = comune,
                        Localita = "Pioppa 02"
                    },
                Domicilio =
                    new Address
                    {
                        Indirizzo = "via domicilio02",
                        Cap = "40102",
                        Civico = "2",
                        Comune = comune,
                        Localita = "Pioppa 02"
                    },
                Recapito =
                    new Address
                    {
                        Indirizzo = "via recapito02",
                        Cap = "40102",
                        Civico = "2",
                        Comune = comune,
                        Localita = "Pioppa 02"
                    }
            };
            _proprietario02 = new Proprietario(_unitaImmobiliare02, _persona02) {ID = 2, Descrizione = "Giulio Verdi", DataInizio = new DateTime(2015, 1, 1)};

            _persona03 = new Persona(TipoPersonaEnum.Fisica, "Franco", "Bianchi", _azienda.ID, false)
            {
                ID = 3,
                IndirizzoResidenza =
                    new Address
                    {
                        Indirizzo = "via residenza03",
                        Cap = "40103",
                        Civico = "3",
                        Comune = comune,
                        Localita = "Pioppa 03"
                    },
                Domicilio =
                    new Address
                    {
                        Indirizzo = "via domicilio03",
                        Cap = "40103",
                        Civico = "3",
                        Comune = comune,
                        Localita = "Pioppa 03"
                    }
            };
            _persona01.Recapito = new Address { Indirizzo = "via recapito03", Cap = "40103", Civico = "3", Comune = comune, Localita = "Pioppa 03" };
            _proprietario03 = new Proprietario(_unitaImmobiliare03, _persona03) {ID = 3, Descrizione = "Franco Bianchi"};

            _proprietario04 = new Proprietario(_unitaImmobiliare04, _persona01)
            {
                ID = 4,
                SoggettoPrincipale = _proprietario01
            };

            _persona04 = new Persona(TipoPersonaEnum.Fisica, "Primo", "Conduttore", _azienda.ID, false)
            {
                ID = 4,
                IndirizzoResidenza =
                    new Address
                    {
                        Indirizzo = "via residenza04",
                        Cap = "40104",
                        Civico = "4",
                        Comune = comune,
                        Localita = "Pioppa 04"
                    },
                Domicilio =
                    new Address
                    {
                        Indirizzo = "via domicilio04",
                        Cap = "40104",
                        Civico = "4",
                        Comune = comune,
                        Localita = "Pioppa 04"
                    },
                Recapito =
                    new Address
                    {
                        Indirizzo = "via recapito04",
                        Cap = "40104",
                        Civico = "4",
                        Comune = comune,
                        Localita = "Pioppa 04"
                    }
            };
            _conduttore01 = new Conduttore(_unitaImmobiliare01, _persona04) {ID = 5, Descrizione = "Primo Conduttore"};

            _persona05 = new Persona(TipoPersonaEnum.Fisica, "Secondo", "Conduttore", _azienda.ID, false)
            {
                ID = 5,
                IndirizzoResidenza =
                    new Address
                    {
                        Indirizzo = "via residenza05",
                        Cap = "40105",
                        Civico = "5",
                        Comune = comune,
                        Localita = "Pioppa 05"
                    },
                Domicilio =
                    new Address
                    {
                        Indirizzo = "via domicilio05",
                        Cap = "40105",
                        Civico = "5",
                        Comune = comune,
                        Localita = "Pioppa 05"
                    },
                Recapito =
                    new Address
                    {
                        Indirizzo = "via recapito05",
                        Cap = "40105",
                        Civico = "5",
                        Comune = comune,
                        Localita = "Pioppa 05"
                    }
            };
            _conduttore02 = new Conduttore(_unitaImmobiliare02, _persona05) {ID = 6, Descrizione = "Secondo Conduttore"};

            _contatto01 = new Email("*****@*****.**", true, _persona01) { ID = 1, Descrizione = "mail principale persona 01"};
            _contatto02 = new Email("*****@*****.**", false, _persona01) { ID = 2, Descrizione = "mail secondaria persona 01" };
            _contatto03 = new Cellulare("1234567890", true, _persona01) { ID = 3, Descrizione = "cellulare principale persona 01" };
            _contatto04 = new Fax("9876543210", false, _persona02) { ID = 4, Descrizione = "fax persona 02" };
            _contatto05 = new Telefono("1357924680", true, _persona03) { ID = 5, Descrizione = "telefono persona 03" }; 
            _contatto06 = new EmailCertificata("*****@*****.**", true, _persona01) { ID = 6, Descrizione = "mail certificata persona 01" };
            _contatto07 = new SitoInternet("www.bianchi.it", false, _persona03) { ID = 7, Descrizione = "sito internet persona03" };
            _contatto08 = new Telefono("3333333333", false, _persona04) { ID = 8, Descrizione = "telefono persona 04" };
            _contatto09 = new Cellulare("9999999999", true, _persona05) { ID = 9, Descrizione = "cellulare persona 05" };
            _contatto10 = new Email("*****@*****.**", false, _persona05) { ID=10 };

            _condominio.PersoneDaNonSollecitare.Add(new PersonaDaNonSollecitare(_persona01, _condominio) { Motivo = "persona01 non paga" });
            _condominio.PersoneDaNonSollecitare.Add(new PersonaDaNonSollecitare(_persona03, _condominio) { Motivo = "persona02 è simpatica" });

            // Contratto Appalto
            _documentocontrattoAppalto01 = new Documento(201, "Appalto", true, _azienda) { ID = 1, CondominioRiferimento = _condominio, Checksum = "CHK001", FileName = "appalto01", FileExtension = "pdf", Descrizione = "Appalto001" };
            _documentocontrattoAppalto02 = new Documento(202, "Appalto", true, _azienda) { ID = 2, CondominioRiferimento = _condominio, Checksum = "CHK002", FileName = "appalto02", FileExtension = "pdf", Descrizione = "Appalto002" };

            _contrattoAppalto = new ContrattoAppalto(tipoContratto, _condominio, fornitore)
            {
                ID = 1,
                NumeroContratto = "CONTRA001",
                Scadenza = new DateTime(2016, 12, 31),
                Descrizione = "Contratto di Appalto di prova",
                Note = "Nota per contratto appalto",
                Documenti = { _documentocontrattoAppalto01, _documentocontrattoAppalto02 }
            };

            _documentocontrattoAppalto01.ContrattoRiferimento = _contrattoAppalto;
            _documentocontrattoAppalto02.ContrattoRiferimento = _contrattoAppalto;

            // Contratto Assicurativo
            _documentocontrattoAssicurativo01 = new Documento(203, "Assicurativo01", true, _azienda) { ID = 3, CondominioRiferimento = _condominio, Checksum = "CHK003", FileName = "assicurazione01", FileExtension = "pdf", Descrizione = "Assicurazione001" };
            _documentocontrattoAssicurativo02 = new Documento(204, "Assicurativo02", true, _azienda) { ID = 4, CondominioRiferimento = _condominio, Checksum = "CHK004", FileName = "assicurazione02", FileExtension = "pdf", Descrizione = "Assicurazione002" };

            _contrattoAssicurativo = new AssicurazioneContratto(new DateTime(2016, 11, 30), new DateTime(2016, 07, 15), tipoContrattoAssicurativo)
            {
                ID = 2,
                FornitoreAttuale = agenziaAssicurativa,
                NumeroContratto = "CONTR_ASS_001",
                Scadenza = new DateTime(2016, 12, 31),
                Descrizione = "Contratto Assicurativo di prova",
                Note = "Nota per contratto assicurativo",
                Documenti = { _documentocontrattoAssicurativo01, _documentocontrattoAssicurativo02 }
            };

            _contrattoAssicurativoGlobale = new GlobaleAssicurazione(new DateTime(2016, 11, 30),
                new DateTime(2016, 07, 15), tipoContrattoAssicurativo)
            {
                ID = 3,
                FornitoreAttuale = agenziaAssicurativa,
                NumeroContratto = "CONTR_GLOB_001",
                Scadenza = new DateTime(2016, 12, 31),
                ImportoLimiteCoseRCT = 50000,
                ImportoMassimaleSinistroRCT = 60000,
                ImportoUnicoRCT = 70000,
                ImportoPremio = 80000,
                Descrizione = "Contratto Globale di prova",
                Note = "Nota per contratto globale",
                FranchigiaDanniAcqua = 90000,
                FranchigiaRicercaGuasto = 100000,
                ValoreRicostruzioneNuovo = 110000,
                DanniAcqua = true,
                RicercaGuasto = true
            };

            _contrattoAssicurativoIncendio = new IncendioAssicurazione(new DateTime(2016, 11, 30), new DateTime(2016, 07, 15), tipoContrattoAssicurativo)
            {
                ID = 4,
                FornitoreAttuale = agenziaAssicurativa,
                NumeroContratto = "CONTR_INC_001",
                ImportoLimiteCoseRCT = 150000,
                ImportoMassimaleSinistroRCT = 160000,
                ImportoUnicoRCT = 170000,
                ImportoPremio = 180000,
                FranchigiaDanniAcqua = 120000,
                FranchigiaRicercaGuasto = 130000,
                ValoreRicostruzioneNuovo = 140000,
                DanniAcqua = true,
                RicercaGuasto = false,
                Scadenza = new DateTime(2016, 12, 31),
                Descrizione = "Contratto Incendio di prova",
                Note = "Nota per contratto incendio"
            };

            _contrattoAssicurativoFurto = new FurtoAssicurazione(new DateTime(2016, 11, 30), new DateTime(2016, 07, 15), tipoContrattoAssicurativo)
            {
                ID = 5,
                FornitoreAttuale = agenziaAssicurativa,
                NumeroContratto = "CONTR_FURTO_001",
                Scadenza = new DateTime(2016, 12, 31),
                Descrizione = "Contratto Furto di prova",
                Note = "Nota per contratto furto"
            };

            _contrattoAssicurativoInfortuni = new InfortuniAssicurazione(new DateTime(2016, 11, 30), new DateTime(2016, 07, 15), tipoContrattoAssicurativo)
            {
                ID = 6,
                FornitoreAttuale = agenziaAssicurativa,
                NumeroContratto = "CONTR_INFORTUNI_001",
                Scadenza = new DateTime(2016, 12, 31),
                Descrizione = "Contratto Infortuni di prova",
                Note = "Nota per contratto infortuni"
            };

            _contrattoAssicurativoResponsabilitaCivile = new ResponsabilitaCivileAssicurazione(new DateTime(2016, 11, 30), new DateTime(2016, 07, 15), tipoContrattoAssicurativo)
            {
                ID = 7,
                FornitoreAttuale = agenziaAssicurativa,
                NumeroContratto = "CONTR_RESPCIV_001",
                Scadenza = new DateTime(2016, 12, 31),
                Descrizione = "Contratto Responsabilità civile di prova",
                Note = "Nota per contratto responsabilità civile"
            };

            _condominio.ContrattiAssicurativi.Add(_contrattoAssicurativo);
            _condominio.ContrattiAssicurativi.Add(_contrattoAssicurativoGlobale);
            _condominio.ContrattiAssicurativi.Add(_contrattoAssicurativoIncendio);
            _condominio.ContrattiAssicurativi.Add(_contrattoAssicurativoFurto);
            _condominio.ContrattiAssicurativi.Add(_contrattoAssicurativoInfortuni);
            _condominio.ContrattiAssicurativi.Add(_contrattoAssicurativoResponsabilitaCivile);

            _contrattoAssicurativo.CondominioRiferimento = _condominio;
            _contrattoAssicurativoGlobale.CondominioRiferimento = _condominio;
            _contrattoAssicurativoIncendio.CondominioRiferimento = _condominio;
            _contrattoAssicurativoFurto.CondominioRiferimento = _condominio;
            _contrattoAssicurativoInfortuni.CondominioRiferimento = _condominio;
            _contrattoAssicurativoResponsabilitaCivile.CondominioRiferimento = _condominio;

            _documentocontrattoAssicurativo01.ContrattoRiferimento = _contrattoAssicurativo;
            _documentocontrattoAssicurativo02.ContrattoRiferimento = _contrattoAssicurativo;
            
            // Conti / Millesimi
            _conto01 = new Conto(_condominio, TipoContoEconomicoEnum.Economico, TipoPeriodoCompetenzaContabile.Esercizio, "SPESE GENERALI PROPRIETA'", true, true, false) {DescrizioneBilancio = "SPE GEN", Codice = "001", ID = 1};
            _conto02 = new Conto(_condominio, TipoContoEconomicoEnum.Economico, TipoPeriodoCompetenzaContabile.Riscaldamento, "SPESE RISCALDAMENTO", true, true, false) { DescrizioneBilancio = "SPE RIS", Codice = "002",  ID = 2 };

            _sottoconto01 = new SottoConto(_conto01, "SPESE SCALA 01") { Codice = "001.001", ID = 1 };
            _sottoconto02 = new SottoConto(_conto01, "SPESE SCALA 02") { Codice = "001.002", ID = 2 };
            _sottoconto03 = new SottoConto(_conto02, "SPESE ABITAZIONI") { Codice = "002.001", ID = 3 };
            _sottoconto04 = new SottoConto(_conto02, "SPESE GARAGE") { Codice = "002.002", ID = 4 };

            _millesimo01 = new Millesimo(_conto01, _unitaImmobiliare01) { ID = 1, Valore = 100 };
            _millesimo02 = new Millesimo(_conto01, _unitaImmobiliare02) { ID = 2, Valore = 200 };
            _millesimo03 = new Millesimo(_conto02, _unitaImmobiliare01) { ID = 3, Valore = 300 };
            _millesimo04 = new Millesimo(_conto02, _unitaImmobiliare02) { ID = 4, Valore = 400 };

            _fascicoloImmobiliare = new FascicoloImmobiliare("Prova Fascicolo", "PRO", "01") {ID=1};
            _fascicoloCondominio = new FascicoloCondominio(_fascicoloImmobiliare, _condominio) { ID =1, Necessario = true, Presente = false };
            _fascicoloCondominio.Documenti.Add(_documentocontrattoAppalto01);
            _fascicoloCondominio.Documenti.Add(_documentocontrattoAssicurativo02);
            _documentocontrattoAppalto01.Fascicoli.Add(_fascicoloCondominio);
            _documentocontrattoAssicurativo02.Fascicoli.Add(_fascicoloCondominio);

            // Stub per IDaoFactory
            _daoFactory = MockRepository.GenerateStub<IDaoFactory>();

            // Stub per azienda
            var aziendaDao = MockRepository.GenerateStub<IAziendaDao>();
            aziendaDao.Stub(x => x.Find(2, false)).Return(_aziendaDestinazione);
            _daoFactory.Stub(x => x.GetAziendaDao()).Return(aziendaDao);

            // Stub per tipo unità immobiliare
            var tipoUnitaImmobiliareDao = MockRepository.GenerateStub<ITipoUnitaImmobiliareDao>();
            tipoUnitaImmobiliareDao.Stub(x => x.GetByAzienda(Arg<int>.Is.Anything)).Return(listaTipoUnitaImmobiliare);
            _daoFactory.Stub(x => x.GetTipoUnitaImmobiliareDao()).Return(tipoUnitaImmobiliareDao);

            // Stub per fornitore
            var fornitoreDao = MockRepository.GenerateStub<IFornitoreDao>();
            fornitoreDao.Stub(x => x.Find(1, false)).Return(fornitore);
            fornitoreDao.Stub(x => x.Find(2, false)).Return(fornitore01);
            fornitoreDao.Stub(x => x.GetByPartitaIva("01867511204", _aziendaDestinazione.ID)).Return(fornitore);
            fornitoreDao.Stub(x => x.GetByPartitaIva("01230460394", _aziendaDestinazione.ID)).Return(fornitore01);
            fornitoreDao.Stub(x => x.GetByPartitaIva("03211600402", _aziendaDestinazione.ID)).Return(agenziaAssicurativa);
            _daoFactory.Stub(x => x.GetFornitoreDao()).Return(fornitoreDao);

            // Stub per tipo contratto
            var tipoContrattoDao = MockRepository.GenerateStub<ITipoContrattoDao>();
            tipoContrattoDao.Stub(x => x.GetByDescrizione("Pulizia Scale", _aziendaDestinazione.ID)).Return(tipoContratto);
            tipoContrattoDao.Stub(x => x.GetByDescrizione("Assicurazione", _aziendaDestinazione.ID)).Return(tipoContrattoAssicurativo);
            _daoFactory.Stub(x => x.GetTipoContrattoDao()).Return(tipoContrattoDao);

            // Stub per Comune
            var comuneDao = MockRepository.GenerateStub<IComuneDao>();
            comuneDao.Stub(x => x.Find(comune.Codice, false)).Return(comune);
            comuneDao.Stub(x => x.Find(null, false)).Throw(new NullReferenceException("Id non può essere null"));
            _daoFactory.Stub(x => x.GetComuneDao()).Return(comuneDao);
            
            // Stub per fascicolo immobiliare
            _fascicoloImmobiliareDao = MockRepository.GenerateStub<IFascicoloImmobiliareDao>();
            _fascicoloImmobiliareDao.Stub(x => x.GetByAzienda(_aziendaDestinazione.ID)).Return(new List<FascicoloImmobiliare> { _fascicoloImmobiliare });
            _daoFactory.Stub(x => x.GetFascicoloImmobiliareDao()).Return(_fascicoloImmobiliareDao);

            _documentService = MockRepository.GenerateStub<IDocumentService>();
            _exportCsvCondominiService = new ExportCsvCondominiService();
            _importCsvCondominiService = new ImportCsvCondominiService(_daoFactory, _documentService);
        }