public static void Update(ArtCambio cambio)
 {
     using (var session = Global.SessionFactory.OpenSession())
     {
         using (var tx = session.BeginTransaction())
         {
             try
             {
                 session.Update(cambio);
                 tx.Commit();
             }
             catch (Exception ex)
             {
                 Global.Log.Error(ex.Message, ex);
                 tx.Rollback();
                 throw;
             }
         }
     }
 }
        public static void Save(int tipoEntidad,
                                int codEntidad,
                                string accion,
                                DateTime fechaSolicitud,
                                StatusEnum status,
                                int solicitadoPor,
                                int? aprobadoPor,
                                DateTime? fechaAprobacion,
                                List<ArtCambiosDetalle> cambiosDetalles)
        {
            using (var session = Global.SessionFactory.OpenSession())
            {
                using (var tx = session.BeginTransaction())
                {
                    try
                    {
                        Ciclo cicloCambio;

                        if (tipoEntidad == 2 || tipoEntidad == 3)
                            cicloCambio = Global.CicloX1;
                        else
                            cicloCambio = Global.CicloX2;

                        var cambioNH = new ArtCambio
                                           {
                                               Ciclo = cicloCambio,
                                               CodCambio = 0,
                                               CodEntidad = codEntidad,
                                               ArtTipoEntidad = session.Get<ArtTipoEntidad>(tipoEntidad),
                                               Action = accion,
                                               FechaSolicitud = fechaSolicitud,
                                               Status = Convert.ToInt32(status),
                                               SolicitadoPor = solicitadoPor,
                                               AprobadoPor = aprobadoPor,
                                               FechaAprobacion = fechaAprobacion
                                           };

                        session.Save(cambioNH);

                        if (cambioNH.CodCambio > 0)
                        {
                            if (cambiosDetalles != null)
                                foreach (var item in cambiosDetalles)
                                {
                                    item.ArtCambio = cambioNH;
                                    session.Save(item);
                                }
                        }

                        tx.Commit();

                        var enviarAlerta = Alerta.SeDebeAlertar(tipoEntidad, accion);

                        if (enviarAlerta)
                            Mensaje.SendAlert(tipoEntidad, codEntidad, Utils.GetAccionDescripcion(accion), status, cambiosDetalles);
                    }
                    catch (Exception ex)
                    {
                        Global.Log.Error(ex.Message, ex);
                        tx.Rollback();
                        throw;
                    }
                }

            }
        }