private void PopulateEditModel( PaymentMethodEditModel editModel ) { editModel.PaymentMethods = db.PaymentMethods.ToList(); }
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 ); }