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; } }