Ejemplo n.º 1
0
 private void PopulateEditModel( PaymentMethodEditModel editModel )
 {
     editModel.PaymentMethods = db.PaymentMethods.ToList();
 }
Ejemplo n.º 2
0
        public virtual ActionResult Edit( PaymentMethodEditModel editModel )
        {
            if ( ModelState.IsValid )
            {
                int originalSequence = editModel.Sequence;
                int targetSequence = editModel.PreviousItemSequence + 1;
                PaymentMethod paymentMethod = Mapper.Map<PaymentMethodEditModel, PaymentMethod>( editModel );

                using ( var transaction = new TransactionScope() )
                {
                    if ( targetSequence != originalSequence )
                    {
                        if ( targetSequence > originalSequence ) // shift backward
                        {
                            targetSequence--;
                        }

                        var sql = new StringBuilder();

                        // temporarily move target item to last
                        sql.Append( "update PaymentMethods set Sequence = (select max(Sequence) from PaymentMethods) + 1 where Id = @p0;" );

                        // close gap at original position
                        sql.Append( "update PaymentMethods set Sequence = Sequence - 1 where Sequence > @p1;" );

                        // open gap at target position
                        sql.Append( "update PaymentMethods set Sequence = Sequence + 1 where Sequence >= @p2;" );

                        db.Database.ExecuteSqlCommand( sql.ToString(), editModel.Id, originalSequence, targetSequence );

                        paymentMethod.Sequence = targetSequence;
                    }

                    db.Entry( paymentMethod ).State = EntityState.Modified;
                    db.SaveChanges();

                    transaction.Complete();
                    //success = true;
                }

                //if ( success )
                //{
                //    // Reset the context since the operation succeeded.
                //    context.AcceptAllChanges();
                //}

                RefreshCachedPaymentMethods();
                return RedirectToAction( "Index" );
            }
            return View( editModel );
        }