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); }
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); }
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); }