internal async Task RemoveSelectedItems(IEnumerable <int> lst)
        {
            try
            {
                int ASYCUDA_Id = 0;
                using (var ctx = new DocumentItemDSContext()
                {
                    StartTracking = true
                })
                {
                    foreach (var item_id in lst)
                    {
                        var item =
                            ctx.xcuda_Item.Include(x => x.xcuda_PreviousItem).FirstOrDefault(x => x.Item_Id == item_id);
                        if (item != null)
                        {
                            if (ASYCUDA_Id == 0)
                            {
                                ASYCUDA_Id = item.ASYCUDA_Id;
                            }
                            ctx.xcuda_Item.Remove(item);
                        }
                    }



                    ctx.SaveChanges();
                }
                await ReorderDocumentItems(ASYCUDA_Id);
            }
            catch (Exception)
            {
                throw;
            }
        }
        public static async Task ReorderDocumentItems(int ASYCUDA_Id)
        {
            List <xcuda_Item> rlst;

            using (var ctx = new xcuda_ItemService())
            {
                rlst =
                    (await ctx.Getxcuda_ItemByExpression(string.Format("ASYCUDA_Id == {0}", ASYCUDA_Id),
                                                         new List <string>()
                {
                    "xcuda_PreviousItem"
                })
                     .ConfigureAwait(false))
                    .OrderBy(x => x.LineNumber)
                    .ToList();
            }

            //if (!rlst.Where(x => x.xcuda_PreviousItem != null).Select(x => x.xcuda_PreviousItem).Any()) return;

            for (int i = 0; i < rlst.Count(); i++)
            {
                rlst.ElementAt(i).LineNumber = i + 1;
                if (rlst.ElementAt(i).xcuda_PreviousItem != null)
                {
                    rlst.ElementAt(i).xcuda_PreviousItem.StartTracking();
                    rlst.ElementAt(i).xcuda_PreviousItem.Current_item_number = (i + 1).ToString();
                }
            }

            using (var ctx = new xcuda_PreviousItemService())
            {
                foreach (var p in rlst.Select(x => x.xcuda_PreviousItem))
                {
                    if (p == null)
                    {
                        continue;
                    }
                    p.xcuda_Item = null;
                    await ctx.Updatexcuda_PreviousItem(p).ConfigureAwait(false);
                }
            }

            using (var ctx = new DocumentItemDSContext())
            {
                foreach (var i in rlst)
                {
                    ctx.Database.ExecuteSqlCommand("update xcuda_Item" +
                                                   $" set linenumber = {i.LineNumber}" +
                                                   $" where Item_Id = {i.Item_Id}");
                }
            }
        }
Example #3
0
        private static void AttachPackageInfo(List <AsycudaDocumentItemIM9> ares)
        {
            var str = ares.Select(z => z.AsycudaDocumentId.ToString()).Distinct().DefaultIfEmpty(string.Empty).Aggregate((n, c) => c + "," + n);

            using (var ctx = new DocumentItemDSContext())
            {
                var ps = ctx.xcuda_Packages
                         .Where(x => str.Contains(x.xcuda_Item.ASYCUDA_Id.ToString()))
                         .Where(x => x.Number_of_packages != 0)
                         .Select(x => new { ItemId = x.Item_Id, Packages = x.Number_of_packages }).ToList();

                foreach (var itm in ps)
                {
                    var a = ares.FirstOrDefault(x => x.ItemId == itm.ItemId.Value);
                    if (a != null)
                    {
                        a.Number_of_packages = (int)itm.Packages;
                    }
                }
            }
        }
        private void UpdateEntity(xcuda_Item entity)
        {
            using (var scope = new TransactionScope(TransactionScopeOption.RequiresNew,
                                                    new TransactionOptions()
            {
                IsolationLevel = IsolationLevel.ReadUncommitted
            }))
            {
                using (var dbContext = new DocumentItemDSContext())
                {
                    try
                    {
                        dbContext.ApplyChanges(entity);
                        dbContext.SaveChanges();
                        //entity.AcceptChanges();
                        scope.Complete();
                    }
                    catch (DbUpdateConcurrencyException dce)
                    {
                        // Get failed entry
                        foreach (var itm in dce.Entries)
                        {
                            itm.OriginalValues.SetValues(itm.GetDatabaseValues());
                        }
                    }
                    catch (OptimisticConcurrencyException oce)
                    {
                        var context = ((IObjectContextAdapter)dbContext).ObjectContext;

                        foreach (var entry in oce.StateEntries)
                        {
                            context.Refresh(System.Data.Entity.Core.Objects.RefreshMode.StoreWins, entry.Entity);
                        }
                    }
                    catch (DbUpdateException e)
                    {
                        // Debugger.Break();
                        SqlException s = e.InnerException.InnerException as SqlException;
                        if (s != null && s.Number == 2627)
                        {
                        }
                        else
                        {
                            Debugger.Break();
                            throw;
                        }
                    }
                    catch (Exception updateEx)
                    {
                        System.Diagnostics.Debugger.Break();
                        //throw new FaultException(updateEx.Message);
                        var fault = new ValidationFault
                        {
                            Result      = false,
                            Message     = updateEx.Message,
                            Description = updateEx.StackTrace
                        };
                        throw new FaultException <ValidationFault>(fault);
                    }
                }
            }
        }