Example #1
0
        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);
        }
Example #2
0
        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);
        }
Example #3
0
        /// <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);
        }
Example #4
0
        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);
        }
Example #5
0
        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;
        }
Example #6
0
        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);
        }
Example #7
0
        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);
        }