public bool Save(XObjectRelation relation) { List <SqlParameter> paramList = new List <SqlParameter>(); paramList.Add(new SqlParameter("@Id", relation.Id)); paramList.Add(new SqlParameter("@FromAssetId", relation.FromAssetId)); paramList.Add(new SqlParameter("@ToAssetId", relation.ToAssetId)); paramList.Add(new SqlParameter("@AssetRelationTypeId", Byte.Parse(relation.AssetRelationType.GetHashCode().ToString()))); //SqlParameter p = new SqlParameter("@AssetRelationTypeId", SqlDbType.TinyInt); //p.Value = Byte.Parse(assetassetrelation.AssetRelationType.GetHashCode().ToString()); //paramList.Add(p); paramList.Add(new SqlParameter("@Created", relation.Created)); paramList.Add(new SqlParameter("@Approved", relation.Approved)); paramList.Add(new SqlParameter("@CreatedBy", relation.CreatedBy)); paramList.Add(new SqlParameter("@ApprovedBy", relation.ApprovedBy)); paramList.Add(new SqlParameter("@DeletedBy", relation.DeletedBy)); return(base.ExecuteSql(spAssetAssetRelation_Save, paramList)); }
public XObjectRelation Get(Guid Id) { XObjectRelation relation = null; List <SqlParameter> paramList = new List <SqlParameter>(); paramList.Add(new SqlParameter("@Id", Id)); using (SqlDataReader rdr = base.OpenDataReader(spAssetAssetRelation_Get, paramList)) { if ((rdr == null) || (!rdr.HasRows)) { return(null); } relation = new XObjectRelation(); rdr.Read(); if (!rdr.IsDBNull(rdr.GetOrdinal("FromAssetId"))) { relation.FromAssetId = rdr.GetGuid(rdr.GetOrdinal("FromAssetId")); } if (!rdr.IsDBNull(rdr.GetOrdinal("ToAssetId"))) { relation.ToAssetId = rdr.GetGuid(rdr.GetOrdinal("ToAssetId")); } if (!rdr.IsDBNull(rdr.GetOrdinal("AssetRelationTypeId"))) { relation.AssetRelationType = EnumerationOps.EAssetRelationTypeFromValue((Int16)rdr.GetByte(rdr.GetOrdinal("AssetRelationTypeId"))); } if (!rdr.IsDBNull(rdr.GetOrdinal("Created"))) { relation.Created = (DateTime)rdr[rdr.GetOrdinal("Created")]; } if (!rdr.IsDBNull(rdr.GetOrdinal("Approved"))) { relation.Approved = (DateTime)rdr[rdr.GetOrdinal("Approved")]; } if (!rdr.IsDBNull(rdr.GetOrdinal("CreatedBy"))) { relation.CreatedBy = rdr.GetGuid(rdr.GetOrdinal("CreatedBy")); } if (!rdr.IsDBNull(rdr.GetOrdinal("ApprovedBy"))) { relation.ApprovedBy = rdr.GetGuid(rdr.GetOrdinal("ApprovedBy")); } if (!rdr.IsDBNull(rdr.GetOrdinal("DeletedBy"))) { relation.DeletedBy = rdr.GetGuid(rdr.GetOrdinal("DeletedBy")); } relation.Id = Id; relation.IsNew = false; relation.IsDirty = false; } return(relation); }
public List <XObjectRelation> AssetRelationList_GetByFromAssetId(Guid fromassetid) { List <XObjectRelation> list = new List <XObjectRelation>(); List <SqlParameter> paramList = new List <SqlParameter>(); paramList.Add(new SqlParameter("@Id", fromassetid)); using (SqlDataReader drdSql = base.OpenDataReader(spAssetAssetRelationList_GetByFromAssetId, paramList)) { if ((drdSql != null) && (drdSql.HasRows)) { //get the index of each property we are going to load int Id = drdSql.GetOrdinal("Id"); int FromAssetId = drdSql.GetOrdinal("FromAssetId"); int ToAssetId = drdSql.GetOrdinal("ToAssetId"); int AssetRelationTypeId = drdSql.GetOrdinal("AssetRelationTypeId"); int Created = drdSql.GetOrdinal("Created"); int Approved = drdSql.GetOrdinal("Approved"); int CreatedBy = drdSql.GetOrdinal("CreatedBy"); int ApprovedBy = drdSql.GetOrdinal("ApprovedBy"); int DeletedBy = drdSql.GetOrdinal("DeletedBy"); while (drdSql.Read()) { XObjectRelation relation = new XObjectRelation(); if (!drdSql.IsDBNull(Id)) { relation.Id = drdSql.GetGuid(Id); } if (!drdSql.IsDBNull(FromAssetId)) { relation.FromAssetId = drdSql.GetGuid(FromAssetId); } if (!drdSql.IsDBNull(ToAssetId)) { relation.ToAssetId = drdSql.GetGuid(ToAssetId); } if (!drdSql.IsDBNull(AssetRelationTypeId)) { relation.AssetRelationType = EnumerationOps.EAssetRelationTypeFromValue((Int16)drdSql.GetByte(AssetRelationTypeId)); } if (!drdSql.IsDBNull(Created)) { relation.Created = (DateTime)drdSql.GetValue(Created); } if (!drdSql.IsDBNull(Approved)) { relation.Approved = (DateTime)drdSql.GetValue(Approved); } if (!drdSql.IsDBNull(CreatedBy)) { relation.CreatedBy = drdSql.GetGuid(CreatedBy); } if (!drdSql.IsDBNull(ApprovedBy)) { relation.ApprovedBy = drdSql.GetGuid(ApprovedBy); } if (!drdSql.IsDBNull(DeletedBy)) { relation.DeletedBy = drdSql.GetGuid(DeletedBy); } relation.IsNew = false; relation.IsDirty = false; list.Add(relation); } } } return(list); }
private bool Approve(XSubmittal submittal, Guid userId) { //Helpers.Log("PropertyValueSubmittalLayer", "PropertyValueSubmittal_Approve()"); if (submittal != null) { foreach (XValue pv in submittal.PropertyValues) { pv.Approved = DateTime.Now; pv.ApprovedBy = userId; pv.IsDirty = true; } submittal.Approved = DateTime.Now; submittal.ApprovedBy = userId; submittal.IsDirty = true; //List<SynchTrigger> triggers = this.CreateSynchTriggers(submittal); this.Save(submittal, false, userId); //new SynchTriggerDal().Save(triggers); List <Guid> propIds = new List <Guid>(); foreach (XValue pv in submittal.PropertyValues) { if (!propIds.Contains(pv.PropertyId)) { propIds.Add(pv.PropertyId); } } IDictionary <Guid, IXProperty> properties = new XPropertyDomain().GetObjectDictionary(propIds); foreach (XValue pv in submittal.PropertyValues) { IXProperty prop = properties[pv.PropertyId]; if (prop != null) { XObjectRelation relation = null; if ((prop.DataType == EDataType.Relation_ParentChild) || (prop.DataType == EDataType.Relation_ChildParent)) { #region Relations // need to create a relation for this item relation = new XObjectRelation(); if (prop.DataType == EDataType.Relation_ParentChild) { relation.FromAssetId = pv.AssetId; relation.ToAssetId = new Guid(pv.Value); } else { relation.FromAssetId = new Guid(pv.Value); relation.ToAssetId = pv.AssetId; } relation.AssetRelationType = EObjectRelationType.ParentChild; #endregion } else if (prop.DataType == EDataType.Dependency) { #region Dependency relation = new XObjectRelation(); relation.FromAssetId = pv.AssetId; relation.ToAssetId = new Guid(pv.Value); relation.AssetRelationType = EObjectRelationType.Dependency; #endregion } else if ((prop.DataType == EDataType.User) && (prop.RoleId.HasValue)) { // TODO: Complete implementation of the dynamic role-based security if (!string.IsNullOrEmpty(pv.Value)) { Guid memberId; if (Guid.TryParse(pv.Value, out memberId)) { XRoleDomain roleLayer = new XRoleDomain(); if (!roleLayer.ContainsUser(prop.RoleId.Value, memberId)) { //roleLayer.AddMemberToRole(memberId, prop.RoleId.Value, Constants.MemberIds.Admin); } } } // determine if someone else is already in this value // if they are, we need to determine whether or not they are in this role for another asset // if not, remove the role association // if they are, do nothing // determine whether or not the newly-supplied user is in this role // if not, add them to the role // if they are, do nothing } if (prop.IsSystem && (prop.SystemType == ESystemType.AssetName)) { bool renamed = new XObjectDomain <XObject>().Rename(pv.AssetId, pv.Value); } if (relation != null) { #region more relation stuff relation.Created = DateTime.Now; relation.CreatedBy = submittal.CreatedBy; relation.Approved = relation.Created; relation.ApprovedBy = submittal.CreatedBy; XObjectRelationDomain relationDal = new XObjectRelationDomain(); // a child can only have one parent // delete any previous relations if (prop.DataType == EDataType.Relation_ChildParent) { relationDal.RemoveExistingParentRelations(relation.FromAssetId, relation.AssetRelationType.GetHashCode()); } if (!relationDal.AssetAssetRelationExists(relation.FromAssetId, relation.ToAssetId, relation.AssetRelationType.GetHashCode())) { relationDal.Save(relation); } // TODO: Need more logic in here. Other cases // What if relation is removed? #endregion } } } return(new XObjectDomain().MarkAsUpdated(submittal.AssetId, submittal.CreatedBy)); } return(false); }