public RINUNCIAANTICIPI CreaRinunciaAnticipi(decimal idAttivitaAnticipi, ModelDBISE db) { try { RINUNCIAANTICIPI new_ra = new RINUNCIAANTICIPI() { IDATTIVITAANTICIPI = idAttivitaAnticipi, RINUNCIAANT = false, DATAAGGIORNAMENTO = DateTime.Now, }; db.RINUNCIAANTICIPI.Add(new_ra); if (db.SaveChanges() <= 0) { throw new Exception(string.Format("Non è stato possibile creare una nuova rinuncia anticipi.")); } else { Utility.SetLogAttivita(EnumAttivitaCrud.Inserimento, "Inserimento di una nuova rinuncia anticipi.", "RINUNCIAANTICIPI", db, new_ra.ATTIVITAANTICIPI.IDPRIMASISTEMAZIONE, new_ra.IDATTIVITAANTICIPI); } return(new_ra); } catch (Exception ex) { throw ex; } }
public void AnnullaRichiestaAnticipi(decimal idAttivitaAnticipi, string testoAnnulla) { using (ModelDBISE db = new ModelDBISE()) { db.Database.BeginTransaction(); try { var aa_Old = db.ATTIVITAANTICIPI.Find(idAttivitaAnticipi); if (aa_Old?.IDATTIVITAANTICIPI > 0) { if (aa_Old.NOTIFICARICHIESTA == true && aa_Old.ATTIVARICHIESTA == false && aa_Old.ANNULLATO == false) { aa_Old.ANNULLATO = true; aa_Old.DATAAGGIORNAMENTO = DateTime.Now; int i = db.SaveChanges(); if (i <= 0) { throw new Exception("Errore - Impossibile annullare la notifica della richiesta anticipo."); } else { Utility.SetLogAttivita(EnumAttivitaCrud.Modifica, "Annullamento della riga per il ciclo di attivazione della richiesta anticipo", "ATTIVITAANTICIPI", db, aa_Old.PRIMASITEMAZIONE.TRASFERIMENTO.IDTRASFERIMENTO, aa_Old.IDATTIVITAANTICIPI); ATTIVITAANTICIPI aa_New = new ATTIVITAANTICIPI() { IDPRIMASISTEMAZIONE = aa_Old.IDPRIMASISTEMAZIONE, NOTIFICARICHIESTA = false, ATTIVARICHIESTA = false, DATAAGGIORNAMENTO = DateTime.Now, ANNULLATO = false }; db.ATTIVITAANTICIPI.Add(aa_New); int j = db.SaveChanges(); if (j <= 0) { throw new Exception("Errore - Impossibile creare il nuovo ciclo di attivazione per richiesta anticipi."); } else { Utility.SetLogAttivita(EnumAttivitaCrud.Inserimento, "Inserimento di una nuova riga per il ciclo di attivazione relativo alla richiesta anticipo.", "ATTIVITAANTICIPI", db, aa_New.PRIMASITEMAZIONE.TRASFERIMENTO.IDTRASFERIMENTO, aa_New.IDATTIVITAANTICIPI); #region anticipo var ant_Old = aa_Old.ANTICIPI.Where( a => a.ANNULLATO == false && a.IDTIPOLOGIAANTICIPI == (decimal)EnumTipologiaAnticipi.Prima_Sistemazione).First(); if (ant_Old != null && ant_Old.IDATTIVITAANTICIPI > 0) { ANTICIPI ant_New = new ANTICIPI() { IDATTIVITAANTICIPI = aa_New.IDATTIVITAANTICIPI, IDTIPOLOGIAANTICIPI = ant_Old.IDTIPOLOGIAANTICIPI, PERCENTUALEANTICIPO = ant_Old.PERCENTUALEANTICIPO, DATAAGGIORNAMENTO = ant_Old.DATAAGGIORNAMENTO, ANNULLATO = ant_Old.ANNULLATO }; db.ANTICIPI.Add(ant_New); int y = db.SaveChanges(); if (y <= 0) { throw new Exception("Errore - Impossibile inserire il record relativo a richiesta anticipo."); } else { Utility.SetLogAttivita(EnumAttivitaCrud.Inserimento, "Inserimento di una nuova riga per la richiesta anticipo.", "ANTICIPI", db, aa_New.PRIMASITEMAZIONE.TRASFERIMENTO.IDTRASFERIMENTO, ant_New.IDATTIVITAANTICIPI); } } #endregion #region ricrea rinunciaAnticipi var ra_old = this.GetRinunciaAnticipi(idAttivitaAnticipi, db); RINUNCIAANTICIPI ra_new = new RINUNCIAANTICIPI() { IDATTIVITAANTICIPI = aa_New.IDATTIVITAANTICIPI, RINUNCIAANT = ra_old.rinunciaAnticipi, DATAAGGIORNAMENTO = DateTime.Now, }; db.RINUNCIAANTICIPI.Add(ra_new); if (db.SaveChanges() <= 0) { throw new Exception(string.Format("Non è stato possibile creare una nuova rinuncia anticipi durante il ciclo di annullamento.")); } else { Utility.SetLogAttivita(EnumAttivitaCrud.Inserimento, "Inserimento di una nuova rinuncia anticipi.", "RINUNCIAANTICIPI", db, ra_new.ATTIVITAANTICIPI.PRIMASITEMAZIONE.TRASFERIMENTO.IDTRASFERIMENTO, ra_new.IDATTIVITAANTICIPI); } #endregion } EmailTrasferimento.EmailAnnulla(aa_New.PRIMASITEMAZIONE.TRASFERIMENTO.IDTRASFERIMENTO, Resources.msgEmail.OggettoAnnullaRichiestaAnticipi, testoAnnulla, db); //this.EmailAnnullaRichiestaAnticipi(aa_New.IDATTIVITAANTICIPI, db); using (dtCalendarioEventi dtce = new dtCalendarioEventi()) { dtce.AnnullaMessaggioEvento(aa_New.PRIMASITEMAZIONE.TRASFERIMENTO.IDTRASFERIMENTO, EnumFunzioniEventi.RichiestaAnticipi, db); } } } } db.Database.CurrentTransaction.Commit(); } catch (Exception ex) { db.Database.CurrentTransaction.Rollback(); throw ex; } } }