예제 #1
0
        internal IFacadeUpdateResult <DEntityData> SaveDEntityItem(object parentId, DEntityItemDto childDto)
        {
            ArgumentValidator.IsNotNull("parentId", parentId);
            ArgumentValidator.IsNotNull("childDto", childDto);

            FacadeUpdateResult <DEntityData> result = new FacadeUpdateResult <DEntityData>();
            IDEntityService service     = UnitOfWork.GetService <IDEntityService>();
            var             parentQuery = service.Retrieve(parentId);

            if (parentQuery.HasResult)
            {
                DEntity     parent = parentQuery.ToBo <DEntity>();
                DEntityItem child  = RetrieveOrNewDEntityItem(parent, childDto.Id);
                if (child != null)
                {
                    child.Text  = childDto.Text;
                    child.Value = childDto.Value;

                    var saveQuery = service.Save(parent);
                    result.Merge(saveQuery);
                    result.AttachResult(parent.RetrieveData <DEntityData>());
                }
                else
                {
                    AddError(result.ValidationResult, "DEntityItemCannotBeFound");
                }
            }

            return(result);
        }
예제 #2
0
        internal IFacadeUpdateResult <DEntityData> DeleteDEntityItem(object parentId, object childId)
        {
            ArgumentValidator.IsNotNull("parentId", parentId);
            ArgumentValidator.IsNotNull("childId", childId);

            FacadeUpdateResult <DEntityData> result = new FacadeUpdateResult <DEntityData>();
            IDEntityService service = UnitOfWork.GetService <IDEntityService>();
            var             query   = service.Retrieve(parentId);

            if (query.HasResult)
            {
                DEntity     parent = query.ToBo <DEntity>();
                DEntityItem child  = parent.DEntityItems.SingleOrDefault(o => object.Equals(o.Id, childId));
                if (child != null)
                {
                    parent.DEntityItems.Remove(child);
                    var saveQuery = parent.Save();
                    result.Merge(saveQuery);
                    result.AttachResult(parent.RetrieveData <DEntityData>());
                }
                else
                {
                    AddError(result.ValidationResult, "DEntityItemCannotBeFound");
                }
            }
            else
            {
                AddError(result.ValidationResult, "DEntityCannotBeFound");
            }

            return(result);
        }
예제 #3
0
        internal DEntityItem RetrieveOrNewDEntityItem(DEntity parent, object childId)
        {
            DEntityItem child = null;

            if (childId != null)
            {
                child = parent.DEntityItems.SingleOrDefault(o => object.Equals(o.Id, childId));
            }
            else
            {
                child = parent.DEntityItems.AddNewBo();
            }

            return(child);
        }