Exemplo n.º 1
0
        public string saveCausaleContabile(Azienda azienda, DettaglioTabellaSempliceDTO elemento, Gipasoft.Sfera.Enums.CRUDOperation operation, IDaoFactory daoFactory)
        {
            try
            {
                string message = string.Empty;

                if (operation != Gipasoft.Sfera.Enums.CRUDOperation.Delete)
                {
                    if (!string.IsNullOrEmpty(elemento.DescrizioneBreve))
                    {
                        if (elemento.DescrizioneBreve.Length > 2)
                            message = "Il codice della causale NON può essere più lungo di 2 caratteri:" + elemento.DescrizioneBreve;
                    }
                    else
                        message = "E' obbligatorio il codice della causale contabile";

                    var causali = daoFactory.GetCausaleContabileDao().GetByAzienda(_info.Azienda);
                    if (causali.Count(item => item.Codice == elemento.DescrizioneBreve && item.ID != elemento.Id) > 0)
                        message = $"E' già presente una causale col codice {elemento.DescrizioneBreve}";
                }

                if (string.IsNullOrEmpty(message))
                {
                    CausaleContabile item = null;
                    if (elemento.Id > 0)
                        item = daoFactory.GetCausaleContabileDao().Find(elemento.Id, false);
                    else if(operation != Gipasoft.Sfera.Enums.CRUDOperation.Delete)
                    {
                        item = new CausaleContabile(elemento.DescrizioneBreve, elemento.Descrizione, true) {Ordine = elemento.Ordine};
                        daoFactory.GetCausaleContabileDao().SaveOrUpdate(item);
                    }

                    if (item != null)
                    {
                        switch (operation)
                        {
                            case Gipasoft.Sfera.Enums.CRUDOperation.Update:
                                item.Descrizione = elemento.Descrizione;
                                item.Codice = elemento.DescrizioneBreve;
                                item.Azienda = azienda;
                                item.Ordine = elemento.Ordine;
                                break;
                            case Gipasoft.Sfera.Enums.CRUDOperation.Delete:
                                daoFactory.GetCausaleContabileDao().Delete(item);
                                break;
                        }
                    }
                }

                return message;
            }
            catch (Exception ex)
            {
                _log.ErrorFormat("Errore nel salvataggio della causale contabile - {0} - id:{1} - azienda:{2}", ex, Utility.GetMethodDescription(), elemento.Id, _info.Azienda);
                throw;
            }
        }