Exemplo n.º 1
0
        public async Task <List <ISequential> > SortBySequence(IEnumerable <ISequential> enumerable, ISequential origin, ISequential target)
        {
            var list = enumerable.ToList();

            using (var db = _context.Database.BeginTransaction())
            {
                // normalize
                foreach (var a in list)
                {
                    a.Sequence = list.IndexOf(a) + 1;
                }

                var start = list.IndexOf(target);

                if (origin.Sequence > target.Sequence)
                {
                    for (var i = start; i < list.Count - 1; i++)
                    {
                        list[i].Sequence = list[i].Sequence + 1;
                    }
                    origin.Sequence = target.Sequence - 1;
                }
                else
                {
                    for (var i = start; i >= origin.Sequence; i--)
                    {
                        list[i].Sequence = list[i].Sequence - 1;
                    }
                    origin.Sequence = target.Sequence + 1;
                }

                await _context.SaveChangesAsync();

                db.Commit();
                return(list.OrderBy(a => a.Sequence).ToList());
            }
        }
Exemplo n.º 2
0
 public async Task CompleteAsync()
 {
     await _context.SaveChangesAsync();
 }