Exemplo n.º 1
0
        public void AttivaRichiestaAnticipi(decimal idAttivitaAnticipi)
        {
            using (ModelDBISE db = new ModelDBISE())
            {
                db.Database.BeginTransaction();

                try
                {
                    var aa = db.ATTIVITAANTICIPI.Find(idAttivitaAnticipi);
                    if (aa?.IDATTIVITAANTICIPI > 0)
                    {
                        if (aa.NOTIFICARICHIESTA == true)
                        {
                            aa.ATTIVARICHIESTA     = true;
                            aa.DATAATTIVARICHIESTA = DateTime.Now;
                            aa.DATAAGGIORNAMENTO   = DateTime.Now;

                            int i = db.SaveChanges();

                            if (i <= 0)
                            {
                                throw new Exception("Errore: Impossibile completare l'attivazione anticipo.");
                            }
                            else
                            {
                                using (dtElaborazioni dte = new dtElaborazioni())
                                {
                                    dte.InviaAnticipoPrimaSistemazione(idAttivitaAnticipi, db);
                                }

                                Utility.SetLogAttivita(EnumAttivitaCrud.Modifica,
                                                       "Attivazione anticipi.", "ATTIVITAANTICIPI", db,
                                                       aa.PRIMASITEMAZIONE.TRASFERIMENTO.IDTRASFERIMENTO, aa.IDATTIVITAANTICIPI);
                                using (dtCalendarioEventi dtce = new dtCalendarioEventi())
                                {
                                    dtce.ModificaInCompletatoCalendarioEvento(aa.PRIMASITEMAZIONE.TRASFERIMENTO.IDTRASFERIMENTO, EnumFunzioniEventi.RichiestaAnticipi, db);
                                }

                                //using (dtDipendenti dtd = new dtDipendenti())
                                //{
                                using (dtTrasferimento dtt = new dtTrasferimento())
                                {
                                    using (dtUffici dtu = new dtUffici())
                                    {
                                        var t = dtt.GetTrasferimentoByIdPrimaSistemazione(aa.IDPRIMASISTEMAZIONE);

                                        if (t?.idTrasferimento > 0)
                                        {
                                            //var dip = dtd.GetDipendenteByID(t.idDipendente);
                                            var uff = dtu.GetUffici(t.idUfficio);


                                            EmailTrasferimento.EmailAttiva(aa.PRIMASITEMAZIONE.TRASFERIMENTO.IDTRASFERIMENTO,
                                                                           Resources.msgEmail.OggettoAttivaRichiestaAnticipi,
                                                                           string.Format(Resources.msgEmail.MessaggioAttivaRichiestaAnticipi, uff.descUfficio + " (" + uff.codiceUfficio + ")", t.dataPartenza.ToShortDateString()),
                                                                           db);
                                        }
                                    }
                                }
                                //}
                                //this.EmailAttivaRichiestaAnticipi(aa.IDATTIVITAANTICIPI, db);
                            }
                        }
                    }

                    db.Database.CurrentTransaction.Commit();
                }
                catch (Exception ex)
                {
                    db.Database.CurrentTransaction.Rollback();
                    throw ex;
                }
            }
        }
Exemplo n.º 2
0
        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;
                }
            }
        }
Exemplo n.º 3
0
        public void NotificaRichiestaAnticipi(decimal idAttivitaAnticipi, decimal percentualeRichiesta)
        {
            try
            {
                using (ModelDBISE db = new ModelDBISE())
                {
                    db.Database.BeginTransaction();

                    try
                    {
                        var aa = db.ATTIVITAANTICIPI.Find(idAttivitaAnticipi);

                        var ra = aa.RINUNCIAANTICIPI;
                        var rinunciaAnticipi = ra.RINUNCIAANT;

                        var a = aa.ANTICIPI.Where(x => x.IDTIPOLOGIAANTICIPI == (decimal)EnumTipologiaAnticipi.Prima_Sistemazione).First();

                        if (a.PERCENTUALEANTICIPO != percentualeRichiesta)
                        {
                            a.PERCENTUALEANTICIPO = percentualeRichiesta;
                            a.DATAAGGIORNAMENTO   = DateTime.Now;

                            if (db.SaveChanges() <= 0)
                            {
                                throw new Exception("Errore nella fase di aggiornamento della percentuale di anticipo richiesta.");
                            }
                        }
                        aa.NOTIFICARICHIESTA     = true;
                        aa.DATANOTIFICARICHIESTA = DateTime.Now;
                        aa.DATAAGGIORNAMENTO     = DateTime.Now;

                        if (db.SaveChanges() <= 0)
                        {
                            throw new Exception("Errore nella fase d'inserimento per la richiesta attivazione anticipi.");
                        }
                        else
                        {
                            using (dtDipendenti dtd = new dtDipendenti())
                            {
                                var dip = dtd.GetDipendenteByID(aa.PRIMASITEMAZIONE.TRASFERIMENTO.DIPENDENTI.IDDIPENDENTE);

                                EmailTrasferimento.EmailNotifica(EnumChiamante.Anticipi, aa.PRIMASITEMAZIONE.TRASFERIMENTO.IDTRASFERIMENTO,
                                                                 Resources.msgEmail.OggettoNotificaRichiestaAnticipi,
                                                                 string.Format(Resources.msgEmail.MessaggioNotificaRichiestaAnticipi, dip.cognome + " " + dip.nome + " (" + dip.matricola + ")"),
                                                                 db);
                            }
                            //this.EmailNotificaRichiestaAnticipi(idAttivitaAnticipi, db);

                            using (dtCalendarioEventi dtce = new dtCalendarioEventi())
                            {
                                CalendarioEventiModel cem = new CalendarioEventiModel()
                                {
                                    idFunzioneEventi = EnumFunzioniEventi.RichiestaAnticipi,
                                    idTrasferimento  = aa.PRIMASITEMAZIONE.IDPRIMASISTEMAZIONE,
                                    DataInizioEvento = DateTime.Now.Date,
                                    DataScadenza     = DateTime.Now.AddDays(Convert.ToInt16(Resources.ScadenzaFunzioniEventi.RichiestaAnticipi)).Date,
                                };

                                dtce.InsertCalendarioEvento(ref cem, db);
                            }
                        }
                        //}

                        db.Database.CurrentTransaction.Commit();
                    }
                    catch (Exception ex)
                    {
                        db.Database.CurrentTransaction.Rollback();
                        throw ex;
                    }
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Exemplo n.º 4
0
        public void AnnullaRichiestaProvvidenzeScolastiche(decimal idAttivitaProvvidenzeScolastiche, string msg)
        {
            using (ModelDBISE db = new ModelDBISE())
            {
                db.Database.BeginTransaction();

                try
                {
                    var atep_Old = db.ATTIVAZIONIPROVSCOLASTICHE.Find(idAttivitaProvvidenzeScolastiche);

                    if (atep_Old?.IDPROVSCOLASTICHE > 0)
                    {
                        if (atep_Old.NOTIFICARICHIESTA == true && atep_Old.ATTIVARICHIESTA == false && atep_Old.ANNULLATO == false)
                        {
                            atep_Old.ANNULLATO         = true;
                            atep_Old.DATAAGGIORNAMENTO = DateTime.Now;

                            int i = db.SaveChanges();

                            if (i <= 0)
                            {
                                throw new Exception("Errore - Impossibile annullare la notifica della richiesta provvidenze scolastiche.");
                            }
                            else
                            {
                                Utility.SetLogAttivita(EnumAttivitaCrud.Modifica,
                                                       "Annullamento della riga per il ciclo di attivazione delle provvidenze scolastiche",
                                                       "PROVVIDENZESCOLASTICHE", db, atep_Old.PROVVIDENZESCOLASTICHE.TRASFERIMENTO.IDTRASFERIMENTO,
                                                       atep_Old.IDPROVSCOLASTICHE);

                                var idTrasferimento = atep_Old.PROVVIDENZESCOLASTICHE.TRASFERIMENTO.IDTRASFERIMENTO;

                                ATTIVAZIONIPROVSCOLASTICHE atep_New = new ATTIVAZIONIPROVSCOLASTICHE()
                                {
                                    IDTRASFPROVSCOLASTICHE = atep_Old.IDTRASFPROVSCOLASTICHE,
                                    NOTIFICARICHIESTA      = false,

                                    ATTIVARICHIESTA   = false,
                                    DATAAGGIORNAMENTO = DateTime.Now,
                                    ANNULLATO         = false
                                };

                                db.ATTIVAZIONIPROVSCOLASTICHE.Add(atep_New);

                                int j = db.SaveChanges();

                                if (j <= 0)
                                {
                                    throw new Exception("Errore - Impossibile creare il nuovo ciclo di attivazione per le provvidenze scolastiche.");
                                }
                                else
                                {
                                    Utility.SetLogAttivita(EnumAttivitaCrud.Inserimento,
                                                           "Inserimento di una nuova riga per il ciclo di attivazione relativo alle provvidenze scolastiche.",
                                                           "PROVVIDENZESCOLASTICHE", db, atep_New.PROVVIDENZESCOLASTICHE.TRASFERIMENTO.IDTRASFERIMENTO,
                                                           atep_New.IDTRASFPROVSCOLASTICHE);

                                    #region ricrea rinunciaTE
                                    //var rtep_old = this.GetRinunciaTEPartenza(atep_Old.IDATEPARTENZA, db);
                                    //RINUNCIA_TE_P rtep_new = new RINUNCIA_TE_P()
                                    //{
                                    //    IDATEPARTENZA = atep_New.IDATEPARTENZA,
                                    //    RINUNCIATE = rtep_old.rinunciaTE,
                                    //    DATAAGGIORNAMENTO = DateTime.Now,
                                    //};
                                    //db.RINUNCIA_TE_P.Add(rtep_new);

                                    //if (db.SaveChanges() <= 0)
                                    //{
                                    //    throw new Exception(string.Format("Non è stato possibile creare una nuova rinuncia trasporto effetti partenza durante il ciclo di annullamento."));
                                    //}
                                    //else
                                    //{
                                    //    Utility.SetLogAttivita(EnumAttivitaCrud.Inserimento, "Inserimento di una nuova rinuncia trasporto effetti partenza.", "RINUNCIA_TE_P", db, rtep_new.ATTIVITATEPARTENZA.TEPARTENZA.TRASFERIMENTO.IDTRASFERIMENTO, rtep_new.IDATEPARTENZA);
                                    //}

                                    #endregion


                                    #region documenti
                                    var ldoc_Old =
                                        atep_Old.DOCUMENTI.Where(
                                            a => a.MODIFICATO == false)
                                        .OrderBy(a => a.DATAINSERIMENTO);

                                    if (ldoc_Old?.Any() ?? false)
                                    {
                                        foreach (var doc_Old in ldoc_Old)
                                        {
                                            DOCUMENTI doc_New = new DOCUMENTI()
                                            {
                                                IDTIPODOCUMENTO = doc_Old.IDTIPODOCUMENTO,
                                                NOMEDOCUMENTO   = doc_Old.NOMEDOCUMENTO,
                                                ESTENSIONE      = doc_Old.ESTENSIONE,
                                                FILEDOCUMENTO   = doc_Old.FILEDOCUMENTO,
                                                DATAINSERIMENTO = doc_Old.DATAINSERIMENTO,
                                                MODIFICATO      = doc_Old.MODIFICATO,
                                                FK_IDDOCUMENTO  = doc_Old.FK_IDDOCUMENTO,
                                                IDSTATORECORD   = (decimal)EnumStatoRecord.In_Lavorazione
                                            };

                                            atep_New.DOCUMENTI.Add(doc_New);
                                            doc_Old.IDSTATORECORD = (decimal)EnumStatoRecord.Annullato;

                                            int y = db.SaveChanges();

                                            if (y <= 0)
                                            {
                                                throw new Exception("Errore - Impossibile associare il documento per le provvidenze scolastiche. (" + doc_New.NOMEDOCUMENTO + ")");
                                            }
                                            else
                                            {
                                                Utility.SetLogAttivita(EnumAttivitaCrud.Inserimento,
                                                                       "Inserimento di una nuova riga per il documento relativo alle provvidenze scolastiche.",
                                                                       "DOCUMENTI", db,
                                                                       atep_New.PROVVIDENZESCOLASTICHE.TRASFERIMENTO.IDTRASFERIMENTO,
                                                                       doc_New.IDDOCUMENTO);
                                            }
                                        }
                                    }
                                    #endregion

                                    EmailTrasferimento.EmailAnnulla(idTrasferimento,
                                                                    Resources.msgEmail.OggettoAnnullaRichiestaProvvidenzeScolastiche,
                                                                    msg,
                                                                    db);

                                    using (dtCalendarioEventi dtce = new dtCalendarioEventi())
                                    {
                                        dtce.AnnullaMessaggioEvento(idTrasferimento, EnumFunzioniEventi.RichiestaProvvidenzeScolastiche, db);
                                    }
                                }
                            }
                        }
                    }
                    db.Database.CurrentTransaction.Commit();
                }
                catch (Exception ex)
                {
                    db.Database.CurrentTransaction.Rollback();
                    throw ex;
                }
            }
        }
Exemplo n.º 5
0
        public void NotificaRichiestaPS(decimal idProvScolastiche)
        {
            try
            {
                using (ModelDBISE db = new ModelDBISE())
                {
                    db.Database.BeginTransaction();

                    try
                    {
                        using (dtDipendenti dtd = new dtDipendenti())
                        {
                            var atps = db.ATTIVAZIONIPROVSCOLASTICHE.Find(idProvScolastiche);
                            atps.NOTIFICARICHIESTA = true;
                            atps.DATAATTIVAZIONE   = DateTime.Now;
                            atps.DATAAGGIORNAMENTO = DateTime.Now;

                            var t = atps.PROVVIDENZESCOLASTICHE.TRASFERIMENTO;

                            var dip = dtd.GetDipendenteByID(t.IDDIPENDENTE);



                            var i = db.SaveChanges();
                            if (i <= 0)
                            {
                                throw new Exception("Errore nella fase d'inserimento per la richiesta provvidenze scolastiche.");
                            }


                            #region ciclo attivazione documenti PS
                            var ldps = atps.DOCUMENTI.Where(a => a.MODIFICATO == false && a.IDSTATORECORD == (decimal)EnumStatoRecord.In_Lavorazione).ToList();
                            foreach (var dps in ldps)
                            {
                                dps.IDSTATORECORD = (decimal)EnumStatoRecord.Da_Attivare;
                                if (db.SaveChanges() <= 0)
                                {
                                    throw new Exception("Errore durante il ciclo di attivazione provvidenze scolastiche");
                                }
                            }
                            #endregion


                            EmailTrasferimento.EmailNotifica(EnumChiamante.ProvvidenzeScolastiche,
                                                             atps.PROVVIDENZESCOLASTICHE.TRASFERIMENTO.IDTRASFERIMENTO,
                                                             Resources.msgEmail.OggettoNotificaProvvidenzeScolastiche,
                                                             string.Format(Resources.msgEmail.MessaggioNotificaProvvidenzeScolastiche, dip.cognome + " " + dip.nome + " (" + dip.matricola + ")"),
                                                             db);


                            using (dtCalendarioEventi dtce = new dtCalendarioEventi())
                            {
                                CalendarioEventiModel cem = new CalendarioEventiModel()
                                {
                                    idFunzioneEventi = EnumFunzioniEventi.RichiestaProvvidenzeScolastiche,
                                    idTrasferimento  = atps.PROVVIDENZESCOLASTICHE.IDTRASFPROVSCOLASTICHE,
                                    DataInizioEvento = DateTime.Now.Date,
                                    DataScadenza     = DateTime.Now.AddDays(Convert.ToInt16(Resources.ScadenzaFunzioniEventi.RichiestaProvvidenzeScolastiche)).Date,
                                };

                                dtce.InsertCalendarioEvento(ref cem, db);
                            }


                            db.Database.CurrentTransaction.Commit();
                        }
                    }
                    catch (Exception ex)
                    {
                        db.Database.CurrentTransaction.Rollback();
                        throw ex;
                    }
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Exemplo n.º 6
0
        public void AttivaRichiestaProvvidenzeScolastiche(decimal idAttivitaProvvidenzeScolastiche)
        {
            using (ModelDBISE db = new ModelDBISE())
            {
                db.Database.BeginTransaction();

                try
                {
                    var atps = db.ATTIVAZIONIPROVSCOLASTICHE.Find(idAttivitaProvvidenzeScolastiche);
                    if (atps?.IDPROVSCOLASTICHE > 0)
                    {
                        if (atps.NOTIFICARICHIESTA == true)
                        {
                            atps.ATTIVARICHIESTA   = true;
                            atps.DATAATTIVAZIONE   = DateTime.Now;
                            atps.DATAAGGIORNAMENTO = DateTime.Now;

                            int i = db.SaveChanges();

                            if (i <= 0)
                            {
                                throw new Exception("Errore: Impossibile completare l'attivazione delle provvidenze scolastiche.");
                            }
                            else
                            {
                                #region ciclo attivazione documenti PS
                                var ldte = atps.DOCUMENTI.Where(a => a.MODIFICATO == false && a.IDSTATORECORD == (decimal)EnumStatoRecord.Da_Attivare).ToList();
                                foreach (var dte in ldte)
                                {
                                    dte.IDSTATORECORD = (decimal)EnumStatoRecord.Attivato;
                                    if (db.SaveChanges() <= 0)
                                    {
                                        throw new Exception("Errore durante il ciclo di attivazione provvidenze scolastiche (attiva documenti)");
                                    }
                                }
                                #endregion



                                Utility.SetLogAttivita(EnumAttivitaCrud.Modifica,
                                                       "Attivazione provvidenze scolastiche.", "ATTIVAZIONIPROVSCOLASTICHE", db,
                                                       atps.PROVVIDENZESCOLASTICHE.TRASFERIMENTO.IDTRASFERIMENTO, atps.IDPROVSCOLASTICHE);
                                using (dtCalendarioEventi dtce = new dtCalendarioEventi())
                                {
                                    dtce.ModificaInCompletatoCalendarioEvento(atps.PROVVIDENZESCOLASTICHE.TRASFERIMENTO.IDTRASFERIMENTO, EnumFunzioniEventi.RichiestaProvvidenzeScolastiche, db);
                                }


                                var messaggioAttiva = Resources.msgEmail.MessaggioAttivazioneProvvidenzeScolastiche;
                                var oggettoAttiva   = Resources.msgEmail.OggettoAttivazioneProvvidenzeScolastiche;

                                EmailTrasferimento.EmailAttiva(atps.PROVVIDENZESCOLASTICHE.TRASFERIMENTO.IDTRASFERIMENTO,
                                                               oggettoAttiva,
                                                               messaggioAttiva,
                                                               db);
                            }
                        }
                    }

                    db.Database.CurrentTransaction.Commit();
                }
                catch (Exception ex)
                {
                    db.Database.CurrentTransaction.Rollback();
                    throw ex;
                }
            }
        }