public bool CreateInstance(Guid userId, Guid assetId, string assetName, Guid assetTypeId, Guid instanceOfId) { if (this.bizLayer.CreateInstance(userId, assetId, assetName, assetTypeId, instanceOfId)) { XValue pv = new XValue(Constants.XPropertyIds.AssetName, assetId, assetName, userId); //if (isAutoApprove) //{ pv.Approved = pv.Created; pv.ApprovedBy = pv.CreatedBy; //} XSubmittal submittal = new XSubmittal(assetId, assetName, userId); submittal.PropertyValues.Add(pv); if (new XSubmittalLayer().Save(submittal, true, userId)) { ThreadPool.QueueUserWorkItem(o => new SqlDatabaseLayer().InsertIntoGenTables(assetId, true, assetTypeId)); return(true); } } return(false); }
public bool Approve(Guid submittalId, Guid userId) { XSubmittal submittal = this.PropertyValueSubmittal_Get(submittalId); if (this.Approve(submittal, userId)) { //ThreadPool.QueueUserWorkItem(o => this.GenerateNarrative(submittalId)); return(true); } return(false); }
/// <summary> /// Gets an instance of a property matching the specified id /// </summary> /// <param name="id"></param> /// <returns></returns> public XSubmittal PropertyValueSubmittal_Get(Guid id) { XSubmittal submittal = this._dal.Get(id); XPropertyDomain pLayer = new XPropertyDomain(); foreach (XValue pv in submittal.PropertyValues) { pv.Property = pLayer.DisplayValue(pv.PropertyId); } return(submittal); }
public bool Create(Guid userId, Guid assetId, string assetName, string assetDisplayValue, Guid assetTypeId, Guid?parentId, string description) { if (this.bizLayer.Create(userId, assetId, assetName, assetDisplayValue, assetTypeId, parentId, description)) { return(false); } XSubmittal submittal = new XSubmittal(assetId, assetName, userId); if (parentId.HasValue) { XValue pv = new XValue(Constants.XPropertyIds.AssetParent, assetId, parentId.Value.ToString(), userId); //if (isAutoApprove) //{ pv.Approved = pv.Created; pv.ApprovedBy = userId; //} submittal.PropertyValues.Add(pv); } XValue pv2 = new XValue(XPropertyIds.AssetName, assetId, assetName, userId); //if (isAutoApprove) //{ pv2.Approved = pv2.Created; pv2.ApprovedBy = userId; //} submittal.PropertyValues.Add(pv2); if (new XSubmittalLayer().Save(submittal, true, userId)) { ThreadPool.QueueUserWorkItem(o => new SqlDatabaseLayer().InsertIntoGenTables(assetId, false, assetTypeId)); return(true); } return(false); }
public void Save(XSubmittal submittal) { if (!submittal.IsDirty) { return; } List <SqlParameter> paramList = new List <SqlParameter>(); paramList.Add(new SqlParameter("@Id", submittal.Id)); paramList.Add(new SqlParameter("@AssetId", submittal.AssetId)); paramList.Add(new SqlParameter("@Created", submittal.Created)); paramList.Add(new SqlParameter("@Reviewed", submittal.Approved)); paramList.Add(new SqlParameter("@Deleted", submittal.Deleted)); paramList.Add(new SqlParameter("@CreatedBy", submittal.CreatedBy)); paramList.Add(new SqlParameter("@ReviewedBy", submittal.ApprovedBy)); paramList.Add(new SqlParameter("@DeletedBy", submittal.DeletedBy)); base.ExecuteSql(StoredProcs.PropertyValueSubmittal_Save, paramList); submittal.IsNew = false; submittal.IsDirty = false; }
private XSubmittal PropertyValueSubmittal_LoadFromReader(SqlDataReader rdr) { XSubmittal submittal = null; if ((rdr != null) && (rdr.HasRows)) { submittal = new XSubmittal(); rdr.Read(); if (!rdr.IsDBNull(rdr.GetOrdinal("Id"))) { submittal.Id = rdr.GetGuid(rdr.GetOrdinal("Id")); } if (!rdr.IsDBNull(rdr.GetOrdinal("AssetId"))) { submittal.AssetId = rdr.GetGuid(rdr.GetOrdinal("AssetId")); } if (!rdr.IsDBNull(rdr.GetOrdinal("Notes"))) { submittal.Notes = rdr.GetString(rdr.GetOrdinal("Notes")); } if (!rdr.IsDBNull(rdr.GetOrdinal("Created"))) { submittal.Created = (DateTime)rdr[rdr.GetOrdinal("Created")]; } if (!rdr.IsDBNull(rdr.GetOrdinal("Reviewed"))) { submittal.Approved = (DateTime)rdr[rdr.GetOrdinal("Reviewed")]; } if (!rdr.IsDBNull(rdr.GetOrdinal("Deleted"))) { submittal.Deleted = (DateTime)rdr[rdr.GetOrdinal("Deleted")]; } if (!rdr.IsDBNull(rdr.GetOrdinal("CreatedBy"))) { submittal.CreatedBy = rdr.GetGuid(rdr.GetOrdinal("CreatedBy")); } if (!rdr.IsDBNull(rdr.GetOrdinal("ReviewedBy"))) { submittal.ApprovedBy = rdr.GetGuid(rdr.GetOrdinal("ReviewedBy")); } if (!rdr.IsDBNull(rdr.GetOrdinal("DeletedBy"))) { submittal.DeletedBy = rdr.GetGuid(rdr.GetOrdinal("DeletedBy")); } //submittal.PropertyValues = new PropertyValueDal().PropertyValues_GetForASubmittalGroup(submittal.Id); submittal.IsNew = false; submittal.IsDirty = false; } return(submittal); }
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); }