示例#1
0
        private void btnAggiungiLetturaClick(object sender, EventArgs e)
        {
            if (nuovaDataLettura.Value != null)
            {
                var tbDati = _utenzaService.AddDataLettura((ContatoreDTO)contatori.SelectedItem.ListObject, _condominio, (DataTable)listaLetture.DataSource, nuovaDataLettura.DateTime, getLotto(), getStabile(), getScala());
                listaLetture.DataSource = tbDati;
                setGridLayout();

                // Rate da aggiornare
                foreach (DataRow row in tbDati.Rows)
                {
                    var lettura = new LetturaContatoreDTO
                    {
                        Data = nuovaDataLettura.DateTime,
                        DescrizioneContatore = ((ContatoreDTO)contatori.SelectedItem.ListObject).DisplayName,
                        IdContatore = ((ContatoreDTO)contatori.SelectedItem.ListObject).ID,
                        IdUnitaImmobiliare = (int)row["IdUnitaImmobiliare"],
                        DescrizioneUnitaImmobiliare = row["DescrizioneUnitaImmobiliare"] != null && row["DescrizioneUnitaImmobiliare"] != DBNull.Value ? (string)row["DescrizioneUnitaImmobiliare"] : null,
                        OrdineUnitaImmobiliare = (int)row["OrdineUnitaImmobiliare"],
                        ID = 0,
                        Valore = (row["Data_" + nuovaDataLettura.DateTime.ToShortDateString()] == DBNull.Value) ? null : (decimal?)row["Data_" + nuovaDataLettura.DateTime.ToShortDateString()],
                        Lotto = (string)row["Lotto"],
                        Scala = (string)row["Scala"],
                        Stabile = (string)row["Stabile"]
                    };

                    _lettureDaAggiornare.Add(lettura);
                    btnConferma.Enabled = true;
                }

                listaLetture.DisplayLayout.Bands[0].Summaries.Clear();
                foreach (var column in listaLetture.DisplayLayout.Bands[0].Columns)
                {
                    if (column.DataType == typeof(decimal))
                        DataGridHelper.AddSummary(listaLetture.DisplayLayout.Bands[0], column.Key, "#.#0");
                }
            }
        }
        public IList<LetturaContatoreDTO> GetNewLettura(int idContatore, DateTime data, int idCondominio, int? idLotto, int? idStabile, int? idGruppoStabile)
        {
            try
            {
                var contatore = _daoFactory.GetContatoreDao().Find(idContatore, false);

                if (contatore != null)
                {
                    var hql = "FROM UnitaImmobiliare UNI WHERE UNI.GruppoStabileRiferimento.PalazzinaRiferimento.CondominioRiferimento = :condominio ";
                    var parameters = new List<QueryParam> { new QueryParam("condominio", idCondominio) };

                    if (idLotto > 0)
                    {
                        hql += " AND UNI.GruppoStabileRiferimento.PalazzinaRiferimento.LottoRiferimento = :lotto";
                        parameters.Add(new QueryParam("lotto", idLotto.Value));
                    }

                    if (idStabile > 0)
                    {
                        hql += " AND UNI.GruppoStabileRiferimento.PalazzinaRiferimento = :stabile";
                        parameters.Add(new QueryParam("stabile", idStabile.Value));
                    }

                    if (idGruppoStabile > 0)
                    {
                        hql += " AND UNI.GruppoStabileRiferimento = :gruppo";
                        parameters.Add(new QueryParam("gruppo", idGruppoStabile.Value));
                    }
                    hql += " ORDER BY UNI.Ordine";

                    var listaUnitaImmobiliare = _daoFactory.GetUnitaImmobiliareDao().GetByQuery(hql, parameters.ToArray());

                    var lettureDto = new List<LetturaContatoreDTO>(listaUnitaImmobiliare.Count);
                    foreach (var unita in listaUnitaImmobiliare)
                    {
                        var lettura = new LetturaContatoreDTO
                        {
                            Data = data,
                            Valore = null,
                            IdContatore = contatore.ID,
                            DescrizioneContatore = contatore.Descrizione,
                            IdUnitaImmobiliare = unita.ID,
                            DescrizioneUnitaImmobiliare = unita.GetDisplayName(DateTime.Today),
                            OrdineUnitaImmobiliare = unita.Ordine.GetValueOrDefault(),
                            TipoUnitaImmobiliare = unita.TipoUnitaImmobiliare.Descrizione,
                            Stabile = unita.GruppoStabileRiferimento.PalazzinaRiferimento.Descrizione,
                            Scala = unita.GruppoStabileRiferimento.Descrizione,
                            Lotto = string.Empty
                        };

                        if (unita.GruppoStabileRiferimento.PalazzinaRiferimento.LottoRiferimento != null)
                            lettura.Lotto = unita.GruppoStabileRiferimento.PalazzinaRiferimento.LottoRiferimento.Descrizione;

                        lettureDto.Add(lettura);
                    }
                    return lettureDto;                    
                }

                return new List<LetturaContatoreDTO>();
            }
            catch (Exception ex)
            {
                
                _log.Error("Errore inaspettato durante la generazione di un nuovo set di letture - " + Library.Utility.GetMethodDescription() + " - idCondominio:" + idCondominio + " - idContatore:" + idContatore + " - idLotto:" + idLotto + " - idStabile:" + idStabile + " - idGruppo:" + idGruppoStabile, ex);
                throw;
            }
        
        }
示例#3
0
        private void listaLettureAfterCellUpdate(object sender, CellEventArgs e)
        {
            if (e.Cell.Row.IsDataRow && e.Cell.Band.Index == 0)
            {
                if (e.Cell.Column.Key.StartsWith("Data_"))
                {
                    if (e.Cell.Value == DBNull.Value || Utility.IsDecimal(e.Cell.Value.ToString()))
                    {
                        var data = DateTime.Parse(e.Cell.Column.Key.Split('_')[1]);
                        var idUnitaImmobiliare = int.Parse(e.Cell.Row.Cells["IdUnitaImmobiliare"].Value.ToString());

                        decimal? valoreLettura = null;
                        if (e.Cell.Value != DBNull.Value)
                            valoreLettura = decimal.Parse(e.Cell.Value.ToString());

                        var lettura = (from item in _lettureDaAggiornare
                                                       where item.IdUnitaImmobiliare == idUnitaImmobiliare && item.Data == data
                                                       select item).FirstOrDefault();
                        if (lettura == null)
                        {
                            lettura = new LetturaContatoreDTO
                            {
                                Data = data,
                                IdContatore = ((ContatoreDTO)contatori.SelectedItem.ListObject).ID,
                                IdUnitaImmobiliare = idUnitaImmobiliare,
                                Valore = valoreLettura
                            };
                            _lettureDaAggiornare.Add(lettura);
                            btnConferma.Enabled = true;
                        }
                        else
                            lettura.Valore = valoreLettura;
                    }
                    else
                        e.Cell.Value = e.Cell.OriginalValue;
                }
            }
        }
        private LetturaContatore manage(LetturaContatoreDTO dto)
        {
            LetturaContatore item = null;
            bool result;

            // Controllo sullo stato U, I
            switch (dto.Stato.ToUpper())
            {
                case "U":
                    result = update(dto, out item);

                    if (!result)
                    {
                        //Il dato sul database è più recente di quello utilizzato
                        //unit.ID = 0;
                        item = null;
                    }
                    break;
                case "I":
                    result = insert(dto, out item);

                    if (!result)
                        throw new Exception("Impossibile scrivere sul database");
                    break;
            }
            return item;
        }
 private bool insert(LetturaContatoreDTO dto, out LetturaContatore item)
 {
     var daoFactory = _windsorRepository.GetDaoFactory(_info.Azienda);
     item = null;
     try
     {
         if (dto.Valore != null)
         {
             item = new LetturaContatore(daoFactory.GetContatoreDao().GetById(dto.IdContatore, false), daoFactory.GetUnitaImmobiliareDao().GetById(dto.IdUnitaImmobiliare, false), dto.Data, dto.Valore.Value) {Version = dto.Version};
             daoFactory.GetLetturaContatoreDao().SaveOrUpdate(item);
         }
     }
     catch (Exception ex)
     {
         
         _log.Error("Errore nel salvataggio della lettura del contatore: " + Library.Utility.GetMethodDescription() + " - id:" + dto.ID, ex);
         throw;
     }
     return true;
 }
        private bool update(LetturaContatoreDTO dto, out LetturaContatore item)
        {
            bool result;
            item = null;
            var daoFactory = _windsorRepository.GetDaoFactory(_info.Azienda);

            try
            {
                item = daoFactory.GetLetturaContatoreDao().GetById(dto.ID, false);

                // Condizione necessare per il controllo del fatto che sul DB ho una versione uguale o più vecchia
                if (dto.Version == item.Version)
                {
                    if (dto.Valore != null)
                    {
                        item.Data = dto.Data;
                        item.Valore = dto.Valore.Value;
                        item.Contatore = daoFactory.GetContatoreDao().GetById(dto.IdContatore, false);
                        item.UnitaImmobiliare = daoFactory.GetUnitaImmobiliareDao().GetById(dto.IdUnitaImmobiliare, false);
                    }
                    else
                        daoFactory.GetLetturaContatoreDao().Delete(item);

                    result = true;
                }
                else
                {
                    // Eccezione: Sul db c'è qualche cosa di più nuovo.
                    
                    _log.Error("Errore nel salvataggio della lettura del contatore: id:" + dto.ID + " - il dato sul db è più recente di quello che si vuole salvare");
                    result = false;
                }
            }
            catch (Exception ex)
            {
                
                _log.Error("Errore nel salvataggio della lettura del contatore: " + Library.Utility.GetMethodDescription() + " - id:" + dto.ID, ex);
                throw;
            }

            return result;
        }
        private LetturaContatoreDTO setDto(LetturaContatore item)
        {
            try
            {
                var dto = new LetturaContatoreDTO
                {
                    ID = item.ID,
                    Data = item.Data,
                    Valore = item.Valore,
                    IdContatore = item.Contatore.ID,
                    DescrizioneContatore = item.Contatore.Descrizione,
                    TipoUnitaImmobiliare = item.UnitaImmobiliare.TipoUnitaImmobiliare.Descrizione,
                    DisplayName = item.Valore + " - " + item.Data.ToShortDateString(),
                    Lotto = string.Empty,
                    Version = item.Version
                };

                if(item.UnitaImmobiliare != null)
                {
                    dto.InternoUnitaImmobiliare = item.UnitaImmobiliare.InternoCompleto;
                    dto.IdUnitaImmobiliare = item.UnitaImmobiliare.ID;
                    dto.DescrizioneUnitaImmobiliare = item.UnitaImmobiliare.Descrizione;
                    dto.OrdineUnitaImmobiliare = item.UnitaImmobiliare.Ordine.GetValueOrDefault();
                    dto.Stabile = item.UnitaImmobiliare.GruppoStabileRiferimento.PalazzinaRiferimento.Descrizione;
                    dto.Scala = item.UnitaImmobiliare.GruppoStabileRiferimento.Descrizione;

                    if (item.UnitaImmobiliare.GruppoStabileRiferimento.PalazzinaRiferimento.LottoRiferimento != null)
                        dto.Lotto = item.UnitaImmobiliare.GruppoStabileRiferimento.PalazzinaRiferimento.LottoRiferimento.Descrizione;
                }

                return dto;
            }

            catch (Exception ex)
            {
                
                _log.Fatal("Errore nel salvataggio delle letture dei contatori: " + Library.Utility.GetMethodDescription() + " - id: " + item.ID, ex);
                throw;
            }
        }
 public int? ManageDomainEntity(LetturaContatoreDTO dto)
 {
     try
     {
         return manage(dto).ID;
     }
     catch (Exception ex)
     {
         
         _log.Error("Errore nella gestione delle letture dei contatori: " + Library.Utility.GetMethodDescription() + " - id:" + dto.ID, ex);
         throw;
     }
 }