예제 #1
0
 public void Update(Model.HierarchyStructure entity)
 {
     using (var context = new ImobeNetContext())
     {
         var hierarchyStructureRepository = new BaseRepository <Model.HierarchyStructure>(context);
         hierarchyStructureRepository.Update(entity);
         hierarchyStructureRepository.SaveChanges();
     }
 }
예제 #2
0
 public void Update(Model.HierarchyStructure entity, ICollection <HierarchyStructureCulture> hierarchyStructureCulture, int[] vinculatedStruture)
 {
     this.InsertUpdate(entity, hierarchyStructureCulture, vinculatedStruture, Enums.ActionType.Update);
 }
예제 #3
0
        public void InsertUpdate(Model.HierarchyStructure entity, ICollection <HierarchyStructureCulture> hierarchyStructureCulture, int[] vinculatedStructure, Enums.ActionType actionType)
        {
            using (var context = new ImobeNetContext())
            {
                using (TransactionScope scopeOfTransaction = new TransactionScope())
                {
                    try
                    {
                        var hierarchyStructureRepository        = new BaseRepository <Model.HierarchyStructure>(context);
                        var hierarchyStructureCultureRepository = new BaseRepository <HierarchyStructureCulture>(context);

                        if (actionType == Enums.ActionType.Insert)
                        {
                            hierarchyStructureRepository.Insert(entity);
                        }
                        else
                        if (actionType == Enums.ActionType.Update)
                        {
                            hierarchyStructureRepository.Update(entity);
                        }

                        context.SaveChanges();

                        #region [Culture]

                        var structureCultures = (from p in context.HierarchyStructureCulture
                                                 where p.IDHierarchyStructure == entity.IDHierarchyStructure
                                                 select p);


                        //Deletando variacoes de idioma
                        if (structureCultures != null && structureCultures.Count() > 0)
                        {
                            foreach (var structureCulture in structureCultures)
                            {
                                hierarchyStructureCultureRepository.Delete(structureCulture);
                            }

                            context.SaveChanges();
                        }


                        //Inserindo variacoes de idioma
                        if (hierarchyStructureCulture != null && hierarchyStructureCulture.Count() > 0)
                        {
                            foreach (var item in hierarchyStructureCulture)
                            {
                                item.IDHierarchyStructure = entity.IDHierarchyStructure.Value;
                                hierarchyStructureCultureRepository.Insert(item);
                            }
                            context.SaveChanges();
                        }
                        #endregion

                        #region [Children Structure]

                        var childStructures = (from p in context.HierarchyStructure
                                               where p.IDHierarchyStructureParent == entity.IDHierarchyStructure
                                               select p);

                        //Desvinculando os filhos
                        if (childStructures != null && childStructures.Count() > 0)
                        {
                            foreach (var childStructure in childStructures)
                            {
                                childStructure.IDHierarchyStructureParent = null;
                                hierarchyStructureRepository.Update(childStructure);
                            }

                            context.SaveChanges();
                        }


                        //Vinculando novos filhos
                        if (vinculatedStructure != null && vinculatedStructure.Count() > 0)
                        {
                            foreach (var item in vinculatedStructure)
                            {
                                foreach (var updateItem in (from hs in context.HierarchyStructure
                                                            where vinculatedStructure.Contains(hs.IDHierarchyStructure.Value)
                                                            select hs))
                                {
                                    updateItem.IDHierarchyStructureParent = entity.IDHierarchyStructure;
                                    updateItem.ModifiedBy = ServiceContext.ActiveUserName;
                                    updateItem.ModifyDate = DateTime.Now;

                                    hierarchyStructureRepository.Update(updateItem);
                                }
                                context.SaveChanges();
                            }
                        }

                        #endregion

                        scopeOfTransaction.Complete();
                    }
                    catch (DbEntityValidationException e)
                    {
                        foreach (var eve in e.EntityValidationErrors)
                        {
                            Console.WriteLine("Entity of type \"{0}\" in state \"{1}\" has the following validation errors:",
                                              eve.Entry.Entity.GetType().Name, eve.Entry.State);
                            foreach (var ve in eve.ValidationErrors)
                            {
                                Console.WriteLine("- Property: \"{0}\", Error: \"{1}\"",
                                                  ve.PropertyName, ve.ErrorMessage);
                            }
                        }
                        throw;
                    }
                    catch (Exception ex)
                    {
                        throw ex;
                    }
                    finally
                    {
                        scopeOfTransaction.Dispose();
                    }
                }
            }
        }