예제 #1
0
        public async Task <string> Delete(string json)
        {
            foreach (int vsoId in JArray.Parse(json))
            {
                VisioMap visiomap = await db.VisioMaps
                                    .Include(e => e.Diagrams)
                                    .ThenInclude(e => e.Notations)
                                    .Include(e => e.Shapes)
                                    .Include(e => e.Relations)
                                    .FirstOrDefaultAsync(e => e.Id == vsoId);


                // Diagram에 있는 지 확인
                if (visiomap.Diagrams.Count() > 0)
                {
                    foreach (Diagram diagram in visiomap.Diagrams.Reverse())
                    {
                        foreach (Diagram notation in diagram.Notations.Reverse())
                        {
                            db.Remove(notation);
                        }

                        db.Remove(diagram);
                    }
                }

                // Visiomap 하위 Shape 삭제
                foreach (Shape shape in visiomap.Shapes.Reverse())
                {
                    db.Remove(shape);
                }

                foreach (RelationVisiomap relation in visiomap.Relations.Reverse())
                {
                    db.Remove(relation);
                }


                // log
                Log log = new Log
                {
                    ActionType = "Delete",
                    DataType   = "VisioMap",
                    RefId      = visiomap.Id,
                    Date       = DateTime.Now,
                    User       = User.Identity.Name,
                    ChangeData = new JObject {
                        { "EnableLayer", visiomap.EnableLayer }
                    }.ToString()
                };

                db.Add(log);
                db.Remove(visiomap);
            }

            db.SaveChanges();

            return("Success");
        }
        public void SubmitDelete(string json)
        {
            foreach (int id in JArray.Parse(json))
            {
                WordMap wordmap = db.WordMaps.Find(id);

                Log log = new Log
                {
                    ActionType = "Delete",
                    DataType   = "WordMap",
                    RefId      = wordmap.Id,
                    Date       = DateTime.Now,
                    User       = User.Identity.Name,
                    ChangeData = new JObject {
                        { "ElementName", wordmap.ElementName }
                    }.ToString()
                };

                db.Add(log);
                db.Remove(wordmap);
            }

            db.SaveChanges();
        }
예제 #3
0
        // Delete
        public async Task <string> DeleteProduct(string json)
        {
            JArray arrItems = JArray.Parse(json);

            foreach (int id in arrItems)
            {
                Product product = await db.Products
                                  .Include(e => e.WordMaps)
                                  .Include(e => e.Children)
                                  .Include(e => e.VisioMaps)
                                  .ThenInclude(e => e.Shapes)
                                  .ThenInclude(e => e.RelationShapes)
                                  .Include(e => e.VisioMaps)
                                  .ThenInclude(e => e.Relations)
                                  .FirstOrDefaultAsync(e => e.Id == id);

                if (product.Completion == "GOODS")
                {
                    foreach (VisioMap visiomap in product.VisioMaps.Reverse())
                    {
                        foreach (Shape shape in visiomap.Shapes.Reverse())
                        {
                            foreach (RelationShape reShape in shape.RelationShapes.Reverse())
                            {
                                db.Remove(reShape);
                            }

                            db.Remove(shape);
                        }

                        foreach (RelationVisiomap reVisiomap in visiomap.Relations.Reverse())
                        {
                            db.Remove(reVisiomap);
                        }

                        db.Remove(visiomap);
                    }

                    foreach (var wdmap in product.WordMaps.Reverse())
                    {
                        db.Remove(wdmap);
                    }

                    foreach (Variant variant in product.Children.Reverse())
                    {
                        db.Remove(variant);
                    }
                }
                else
                {
                    IEnumerable <Variant> variants = db.Variants.Where(e => e.ProductId == product.Id);

                    foreach (Variant variant in variants.Reverse())
                    {
                        var reVisios = db.RelationVisiomaps.Where(e => e.VariantIds.Contains(variant.Id.ToString()));

                        foreach (RelationVisiomap reVisio in reVisios.Reverse())
                        {
                            if (reVisio.VariantIds.Contains(','))
                            {
                                string[] oIds = reVisio.VariantIds.Split(',');
                                string   nIds = null;

                                for (int i = 0; i < oIds.Length; i++)
                                {
                                    if (oIds[i] != variant.Id.ToString())
                                    {
                                        if (i == 0)
                                        {
                                            nIds = oIds[i];
                                        }
                                        else
                                        {
                                            nIds += "," + oIds[i];
                                        }
                                    }
                                }

                                reVisio.VariantIds = nIds;
                                db.Update(reVisio);
                            }
                            else
                            {
                                //VisioMap visiomap = reVisio.VisioMap;
                                VisioMap visiomap = await db.VisioMaps
                                                    .Include(e => e.Shapes)
                                                    .Include(e => e.Relations)
                                                    .FirstOrDefaultAsync(e => e.Id == reVisio.VisiomapId);

                                foreach (Diagram diagram in db.Diagrams.Where(e => e.VisioMapId == visiomap.Id).Reverse())
                                {
                                    db.Remove(diagram);
                                }

                                foreach (Shape shape in visiomap.Shapes.Reverse())
                                {
                                    db.Remove(shape);
                                }

                                db.Remove(reVisio);

                                if (visiomap.Relations.Count() == 0)
                                {
                                    db.Remove(visiomap);
                                }
                            }
                        }
                        db.Remove(variant);
                    }
                }
                db.SaveChanges();


                Log log = new Log
                {
                    RefId      = id,
                    DataType   = "Product",
                    Date       = DateTime.Now,
                    User       = User.Identity.Name,
                    ActionType = "DeleteProduct"
                };
                db.Add(log);

                // Product 삭제
                db.Remove(product);
                db.SaveChanges();
            }
            return("Success");
        }