Beispiel #1
0
        public ResultDocumento Save(Appalto appalto, byte[] data, string nomeFile)
        {
            // Oggetto contratto
            var contratto = new ContrattoAppalto(_daoFactory.GetTipoContrattoDao().GetById(appalto.TipoContratto, false), _daoFactory.GetCondominioDao().GetById(appalto.CodiceStabile.GetValueOrDefault(), false), _daoFactory.GetFornitoreDao().GetById(appalto.CodiceFornitore.GetValueOrDefault(), false));
            Common.ContrattoGenericoHelper.SetDefault(contratto);
            contratto.Descrizione = "Appalto: " + appalto.DescrizioneStabile + " - " + appalto.Appaltatore;
            contratto.DataInizioLavori = appalto.DataInizioLavori;
            contratto.Scadenza = appalto.DataInizioLavori.GetValueOrDefault().AddDays(Convert.ToDouble(appalto.GiorniFineLavori));
            contratto.Importo = appalto.ImportoAppalto;
            contratto.Penale = appalto.ImportoPenalitaAppalto;
            contratto.PresenzaAppalto = true;

            // Salvataggio documento
            var documentMessage = _documentService.SaveDocument(data, nomeFile, ".rtf", null, contratto.CondominioRiferimento.Azienda.ID);
            if (documentMessage.Documento != null)
            {
                var checksum = documentMessage.Documento.Checksum;
                var doc = new Documento(checksum, nomeFile, ".rtf", "", false, contratto.CondominioRiferimento.Azienda) { ContrattoRiferimento = contratto };
                _daoFactory.GetDocumentoDao().SaveOrUpdate(doc);

                _daoFactory.GetContrattoAppaltoDao().SaveOrUpdate(contratto);
                return new ResultDocumento { Documento = doc };
            }

            return new ResultDocumento { Message = documentMessage.Message };
        }
        private bool insert(ContrattoAppaltoDTO contrattoAppaltoDto, out ContrattoAppalto cont)
        {
            var daoFactory = _windsorRepository.GetDaoFactory(_info.Azienda);

            try
            {
                DateTime? dataInizioLavori = null;
                if (contrattoAppaltoDto.DataInizioLavori != null && Conversione.IsSqlSmallDateTime(contrattoAppaltoDto.DataInizioLavori.Value))
                    dataInizioLavori = contrattoAppaltoDto.DataInizioLavori;

                DateTime? scadenza = null;
                if (contrattoAppaltoDto.Scadenza != null && Conversione.IsSqlSmallDateTime(contrattoAppaltoDto.Scadenza.Value))
                    scadenza = contrattoAppaltoDto.Scadenza;

                cont = contrattoAppaltoDto.ContrattoPreventivo == Gipasoft.Sfera.Enums.ContrattoPreventivoEnum.Contratto ? new ContrattoAppalto(daoFactory.GetTipoContrattoDao().GetById(contrattoAppaltoDto.IdTipoContratto.GetValueOrDefault(), false), daoFactory.GetCondominioDao().GetById(contrattoAppaltoDto.IdCondominio.GetValueOrDefault(), false), daoFactory.GetFornitoreDao().GetById(contrattoAppaltoDto.IdFornitore.GetValueOrDefault(), false)) : new Preventivo(daoFactory.GetTipoContrattoDao().GetById(contrattoAppaltoDto.IdTipoContratto.GetValueOrDefault(), false), daoFactory.GetCondominioDao().GetById(contrattoAppaltoDto.IdCondominio.GetValueOrDefault(), false), daoFactory.GetFornitoreDao().GetById(contrattoAppaltoDto.IdFornitore.GetValueOrDefault(), false));
                cont.Descrizione = contrattoAppaltoDto.Descrizione;
                cont.Penale = contrattoAppaltoDto.Penale;
                cont.Importo = contrattoAppaltoDto.Importo;
                cont.DataInizioLavori = dataInizioLavori;
                cont.Scadenza = scadenza;
                cont.MesiDurata = contrattoAppaltoDto.MesiDurata;
                cont.AlertScadenzaAbilitato = contrattoAppaltoDto.AlertScadenzaAbilitato;
                cont.PresenzaAppalto = contrattoAppaltoDto.PresenzaAppalto;
                cont.Note = contrattoAppaltoDto.Note;

                // -------------------------------------
                // Alert Scadenza
                // -------------------------------------
                for (var i = 0; i < contrattoAppaltoDto.AlertScadenza.Length; i++)
                {
                    if (contrattoAppaltoDto.AlertScadenza[i] != null)
                    {
                        int? id = contrattoAppaltoDto.AlertScadenza[i].ID;
                        if (contrattoAppaltoDto.AlertScadenza[i].Stato.ToUpper() == "U" || contrattoAppaltoDto.AlertScadenza[i].Stato.ToUpper() == "I")
                            id = getAlertRepository().ManageDomainEntity(contrattoAppaltoDto.AlertScadenza[i]);


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

                daoFactory.GetContrattoAppaltoDao().SaveOrUpdate(cont);
            }
            catch (Exception ex)
            {
                _log.ErrorFormat("Errore nell'inserimento del contratto appalto - {0} - idContratto:{1}", ex, Utility.GetMethodDescription(), contrattoAppaltoDto.ID);
                throw;
            }
            return true;
        }
        private ContrattoAppaltoDTO setDto(ContrattoAppalto item)
        {
            var dto = new ContrattoAppaltoDTO
            {
                Descrizione = item.Descrizione ?? "",
                AlertScadenzaAbilitato = item.AlertScadenzaAbilitato,
                ID = item.ID,
                Note = item.Note,
                PresenzaAppalto = item.PresenzaAppalto,
                Version = item.Version
            };


            // -----------------------------------
            // Documenti
            // -----------------------------------
            int indexDocumenti = 0;
            foreach (Documento documento in item.Documenti)
            {
                var docDto = getDocumentoRepository().GetByDomainEntity(documento);
                if (dto.Documenti.Length == 0)
                    dto.Documenti = new DocumentoDTO[item.Documenti.Count];
                dto.Documenti[indexDocumenti] = docDto;
                indexDocumenti++;
            }

            // --------------------------------------------------------
            // Alert scadenza contratto
            // --------------------------------------------------------
            var indexAlertScadenza = 0;
            var repAlert = new AlertContrattoRepository(_info, _windsorRepository);
            foreach (var alertScadenza in item.AlertScadenza)
            {
                if (dto.AlertScadenza.Length == 0)
                    dto.AlertScadenza = new AlertContrattoDTO[item.AlertScadenza.Count];
                dto.AlertScadenza[indexAlertScadenza] = repAlert.GetByDomainEntity(alertScadenza);
                indexAlertScadenza++;
            }

            if (item.MesiDurata != null)
            dto.MesiDurata = item.MesiDurata.Value;

            if (item.AnniDurata != null)
                dto.AnniDurata = item.MesiDurata / 12;
            
            if (item.DataInizioLavori != null)
                dto.DataInizioLavori = item.DataInizioLavori.Value;

            if (item.Importo != null)
                dto.Importo = item.Importo.Value;

            if (item.Penale != null)
                dto.Penale = item.Penale.Value;

            if (item.Scadenza != null)
                dto.Scadenza = item.Scadenza.Value;

            dto.TipologiaContratto = Gipasoft.Sfera.Enums.TipoContrattoEnum.ContrattoAppalto;

            if(item.Tipo != null)
            {
                dto.IdTipoContratto = item.Tipo.ID;
                dto.DisplayTipoContratto = item.Tipo.Descrizione;
            }
            
            // -------------------------------------------
            // Condominio Riferimento
            // -------------------------------------------
            if (item.CondominioRiferimento != null)
            {
                dto.IdCondominio = item.CondominioRiferimento.ID;
                dto.DisplayCondominio = item.CondominioRiferimento.DisplayName;
            }

            // -------------------------------------------
            // Fornitore
            // -------------------------------------------
            if (item.FornitoreAttuale != null)
            {
                dto.IdFornitore = item.FornitoreAttuale.ID;
                dto.DisplayFornitore = item.FornitoreAttuale.DisplayName;
            }

            //Contratto o Preventivo
            dto.ContrattoPreventivo = Conversione.IsTypeOf(item, typeof(Preventivo)) ? Gipasoft.Sfera.Enums.ContrattoPreventivoEnum.Preventivo : Gipasoft.Sfera.Enums.ContrattoPreventivoEnum.Contratto;            
            
            return dto;
        }
        private bool update(ContrattoAppaltoDTO contrattoAppaltoDto, out ContrattoAppalto cont)
        {
            bool result;
            cont = null;
            var daoFactory = _windsorRepository.GetDaoFactory(_info.Azienda);

            try
            {
                cont = daoFactory.GetContrattoAppaltoDao().GetById(contrattoAppaltoDto.ID, false); 

                // Condizione necessare per il controllo del fatto che sul DB ho una versione uguale o più vecchia
                if (contrattoAppaltoDto.Version == cont.Version)
                {
                    // -------------------------------------
                    // Condominio Riferimento
                    // -------------------------------------
                    if (contrattoAppaltoDto.IdCondominio != null && contrattoAppaltoDto.IdCondominio > 0)
                        cont.CondominioRiferimento = daoFactory.GetCondominioDao().GetById(contrattoAppaltoDto.IdCondominio.Value, false);

                    // -------------------------------------
                    // Fornitore
                    // -------------------------------------
                    if (contrattoAppaltoDto.IdFornitore != null && contrattoAppaltoDto.IdFornitore > 0)
                        cont.FornitoreAttuale = daoFactory.GetFornitoreDao().GetById(contrattoAppaltoDto.IdFornitore.Value, false);

                    // -------------------------------------
                    // Tipo
                    // -------------------------------------
                    if (contrattoAppaltoDto.IdTipoContratto != null && contrattoAppaltoDto.IdTipoContratto > 0)
                        cont.Tipo = daoFactory.GetTipoContrattoDao().GetById(contrattoAppaltoDto.IdTipoContratto.Value, false);

                    // -------------------------------------
                    // Alert Scadenza
                    // -------------------------------------
                    cont.AlertScadenza.Clear();
                    for (var i = 0; i < contrattoAppaltoDto.AlertScadenza.Length; i++)
                    {
                        if (contrattoAppaltoDto.AlertScadenza[i] != null)
                        {
                            int? id = contrattoAppaltoDto.AlertScadenza[i].ID;
                            if (contrattoAppaltoDto.AlertScadenza[i].Stato.ToUpper() == "U" || contrattoAppaltoDto.AlertScadenza[i].Stato.ToUpper() == "I")
                                id = getAlertRepository().ManageDomainEntity(contrattoAppaltoDto.AlertScadenza[i]);

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

                    cont.PresenzaAppalto = contrattoAppaltoDto.PresenzaAppalto;
                    cont.Descrizione = contrattoAppaltoDto.Descrizione;
                    cont.Penale = contrattoAppaltoDto.Penale;
                    cont.Importo = contrattoAppaltoDto.Importo;
                    cont.DataInizioLavori = contrattoAppaltoDto.DataInizioLavori;
                    cont.Note = contrattoAppaltoDto.Note;
                    cont.Scadenza = contrattoAppaltoDto.Scadenza;
                    cont.MesiDurata = contrattoAppaltoDto.MesiDurata;
                    cont.AlertScadenzaAbilitato = contrattoAppaltoDto.AlertScadenzaAbilitato;

                    daoFactory.GetContrattoAppaltoDao().Update(cont);
                    result = true;
                }
                else
                {
                    _log.ErrorFormat("Errore nel salvataggio del contratto appalto - Il dato sul db è più recente di quello che si vuole salvare - {0} - id:{1}", Utility.GetMethodDescription(), contrattoAppaltoDto.ID);
                    result = false;
                }
            }
            catch (Exception ex)
            {
                _log.ErrorFormat("Errore nel salvataggio del contratto appalto - {0} - id:{1}", ex, Utility.GetMethodDescription(), contrattoAppaltoDto.ID);
                throw;
            }

            return result;
        }
 public ContrattoAppaltoDTO GetNew(int idCondominio, int idTipoContratto, int idAzienda)
 {
     try
     {
         var daoFactory = _windsorRepository.GetDaoFactory(_info.Azienda);
         var tipoContratto = daoFactory.GetTipoContrattoDao().GetById(idTipoContratto, false);
         var stabile = daoFactory.GetCondominioDao().GetById(idCondominio, false);
         var contratto = new ContrattoAppalto(tipoContratto, stabile, null);
         Common.ContrattoGenericoHelper.SetDefault(contratto);
         return setDto(contratto);
     }
     catch (Exception ex)
     {
         _log.ErrorFormat("Errore nella creazione di un nuovo contratto d'appalto - {0} - condominio:{1} - tipo:{2} - idAzienda:{3}", ex, Utility.GetMethodDescription(), idCondominio, idTipoContratto, idAzienda);
         throw;
     }
 }