// ------------------------------------------------------------ // Cop\y document links from Document Set Document Link // ------------------------------------------------------------ public void ReplicateDocSetDocLinkToClient(int ClientUID, int ClientSetUID, int DocumentSetUID) { // 1... GetClientDocument // List documents for a Client Set Document // var clientDocumentList = new ClientDocument(); //clientDocumentList.List( ClientUID, ClientSetUID ); RepClientDocument.List(clientDocumentList, ClientUID, ClientSetUID); // 2... foreach( clientDocument ) // For each client document, retrieve the linked documents // foreach (var clientDocument in clientDocumentList.clientDocSetDocLink) { // 3...... GetDocumentChildren( currentClientDocument) // This part retrieves Document Links and not ClientDocument Links var children = DocumentSetDocumentLinkList.ListRelatedDocuments(DocumentSetUID, clientDocument.document.UID, type: "ALL"); // 4...... foreach (GetDocumentChildren) foreach (var child in children.documentSetDocumentLinkList) { // 5..... CreateClientDocumentLink(Client,ClientSet,DocumentParent,DocumentChild, Type) ClientDocumentLink newLink = new ClientDocumentLink(); newLink.FKClientDocumentSetUID = ClientSetUID; newLink.FKClientUID = ClientUID; newLink.FKParentDocumentUID = clientDocument.document.UID; newLink.FKChildDocumentUID = child.FKChildDocumentUID; newLink.LinkType = child.LinkType; newLink.Add(); } } }
// ----------------------------------------------------- // Save Links // ----------------------------------------------------- public static void LinkDocuments( int clientUID, int clientDocumentSetUID, int parentDocumentUID, int childDocumentUID, string LinkType) { ClientDocumentLink findOne = new ClientDocumentLink(); if (findOne.Read( ParentID: parentDocumentUID, ChildID: childDocumentUID, LinkType: LinkType, clientUID: clientUID, clientDocumentSetUID: clientDocumentSetUID)) { // Already exists } else { findOne.FKClientUID = clientUID; findOne.FKClientDocumentSetUID = clientDocumentSetUID; findOne.LinkType = LinkType; findOne.FKParentDocumentUID = parentDocumentUID; findOne.FKChildDocumentUID = childDocumentUID; findOne.Add(); } }
public static ClientDocumentLinkList ListRelatedDocuments( int clientUID, int clientDocumentSetUID, int documentUID, string type) { ClientDocumentLinkList ret = new ClientDocumentLinkList(); ret.clientDocumentLinkList = new List <ClientDocumentLink>(); string linktype = ""; if (type == "ALL" || string.IsNullOrEmpty(type)) { // do nothing } else { linktype = " AND CDL.LinkType = '" + type + "'"; } using (var connection = new MySqlConnection(ConnString.ConnectionString)) { var commandString = string.Format ( "SELECT " + " CDL.UID CDLUID " + " ,CDL.FKParentDocumentUID CDLFKParentDocumentUID " + " ,CDL.FKChildDocumentUID CDLFKChildDocumentUID " + " ,CDL.LinkType CDLLinkType " + " ,CDL.IsVoid CDLIsVoid " + " ,CDL.FKClientDocumentSetUID CDLFKClientDocumentSetUID " + " ,CDL.FKClientUID CDLFKClientUID " + " " + " FROM ClientDocumentLink CDL " + " WHERE " + " CDL.IsVoid = 'N' " + " AND CDL.FKParentDocumentUID = {0} " + " AND CDL.FKClientDocumentSetUID = {1} " + " AND CDL.FKClientUID = {2} " + linktype , documentUID , clientDocumentSetUID , clientUID ); using (var command = new MySqlCommand( commandString, connection)) { connection.Open(); using (MySqlDataReader reader = command.ExecuteReader()) { while (reader.Read()) { ClientDocumentLink clientDocumentLink = new ClientDocumentLink(); clientDocumentLink.UID = Convert.ToInt32(reader["CDLUID"].ToString()); clientDocumentLink.FKParentDocumentUID = Convert.ToInt32(reader["CDLFKParentDocumentUID"].ToString()); clientDocumentLink.FKChildDocumentUID = Convert.ToInt32(reader["CDLFKChildDocumentUID"].ToString()); clientDocumentLink.LinkType = reader["CDLLinkType"].ToString(); clientDocumentLink.FKClientDocumentSetUID = Convert.ToChar(reader["CDLFKClientDocumentSetUID"].ToString()); clientDocumentLink.FKClientUID = Convert.ToInt32(reader["CDLFKClientUID"].ToString()); // Get the client document child clientDocumentLink.childClientDocument = new ClientDocument(); clientDocumentLink.childClientDocument.UID = clientDocumentLink.FKChildDocumentUID; // 04.02.2013 // clientDocumentLink.childClientDocument.Read(); clientDocumentLink.childClientDocument = RepClientDocument.Read(clientDocumentLink.FKChildDocumentUID); // Get the document child clientDocumentLink.childDocument = new Model.ModelDocument.Document(); clientDocumentLink.childDocument.UID = clientDocumentLink.FKChildDocumentUID; // clientDocumentLink.childDocument.Read(); clientDocumentLink.childDocument = RepDocument.Read(false, clientDocumentLink.FKChildDocumentUID); // Get the client document parent clientDocumentLink.parentClientDocument = new ClientDocument(); clientDocumentLink.parentClientDocument.UID = clientDocumentLink.FKParentDocumentUID; //clientDocumentLink.parentClientDocument.Read(); clientDocumentLink.parentClientDocument = RepClientDocument.Read(clientDocumentLink.FKParentDocumentUID); // Get the document parent clientDocumentLink.parentDocument = new Model.ModelDocument.Document(); clientDocumentLink.parentDocument.UID = clientDocumentLink.FKParentDocumentUID; // clientDocumentLink.parentDocument.Read(); clientDocumentLink.parentDocument = RepDocument.Read(false, clientDocumentLink.FKParentDocumentUID); // Get the client document set clientDocumentLink.clientDocumentSet = new ClientDocumentSet(); clientDocumentLink.clientDocumentSet.UID = clientDocumentLink.FKClientDocumentSetUID; clientDocumentLink.clientDocumentSet.Read(); ret.clientDocumentLinkList.Add(clientDocumentLink); } } } } return(ret); }
// ----------------------------------- // List children documents // ----------------------------------- public void ListChildrenDocuments( int clientUID, int clientDocumentSetUID, int documentUID, string type) { string linktype = ""; if (type == "ALL" || string.IsNullOrEmpty(type)) { // do nothing } else { linktype = " AND CDL.LinkType = '" + type + "'"; } // The client document UID is unique // The link table does not have document set uid // clientDocumentLinkList = new List <ClientDocumentLink>(); using (var connection = new MySqlConnection(ConnString.ConnectionString)) { var commandString = string.Format( " SELECT " + " CDL.UID " + " ,CDL.FKChildDocumentUID " + " ,CDL.FKParentDocumentUID " + " ,CDL.LinkType " + " ,CDL.IsVoid " + " ,CD.UID childUID" + " ,CD.FKClientUID childFKClientUID" + " ,CD.FKClientDocumentSetUID childFKClientDocumentSetUID" + " ,CD.FKDocumentUID childFKDocumentUID" + " ,CD.SequenceNumber childSequenceNumber" + " ,CD.StartDate childStartDate" + " ,CD.EndDate childEndDate" + " ,CD.SourceLocation childSourceLocation" + " ,CD.SourceFileName childSourceFileName" + " ,CD.Location childLocation" + " ,CD.FileName childFileName" + " ,CD.SourceIssueNumber childIssueNumber" + " ,CD.Generated childGenerated" + " ,CD.RecordType childRecordType" + " ,CD.ParentUID childParentUID" + " ,CD.IsVoid childIsVoid" + " ,PARENT.UID parentUID" + " ,PARENT.FKClientUID parentFKClientUID" + " ,PARENT.FKClientDocumentSetUID parentFKClientDocumentSetUID" + " ,PARENT.FKDocumentUID parentFKDocumentUID" + " ,PARENT.SequenceNumber parentSequenceNumber" + " ,PARENT.StartDate parentStartDate" + " ,PARENT.EndDate parentEndDate" + " ,PARENT.SourceLocation parentSourceLocation" + " ,PARENT.SourceFileName parentSourceFileName" + " ,PARENT.Location parentLocation" + " ,PARENT.FileName parentFileName" + " ,PARENT.SourceIssueNumber parentIssueNumber" + " ,PARENT.Generated parentGenerated" + " ,PARENT.RecordType parentRecordType" + " ,PARENT.ParentUID parentParentUID" + " ,PARENT.IsVoid parentIsVoid" + " FROM ClientDocument CD, " + " ClientDocumentLink CDL," + " ClientDocument PARENT" + " WHERE " + " CDL.IsVoid = 'N' " + " AND PARENT.IsVoid = 'N' " + " AND CD.IsVoid = 'N' " + " AND CDL.FKParentDocumentUID = {0} " + " AND CDL.FKClientDocumentSetUID = {1} " + " AND CDL.FKClientUID = {2} " + " AND CDL.FKChildDocumentUID = CD.FKDocumentUID " + " AND CDL.FKParentDocumentUID = PARENT.FKDocumentUID " + linktype + " ORDER BY CD.ParentUID ASC, CD.SequenceNumber ASC " , documentUID , clientDocumentSetUID , clientUID ); using (var command = new MySqlCommand( commandString, connection)) { connection.Open(); using (MySqlDataReader reader = command.ExecuteReader()) { while (reader.Read()) { // Ignore voids if (Convert.ToChar(reader["IsVoid"]) == 'Y') { continue; } var docItem = new ClientDocumentLink(); // Set Client Document Link Details // docItem.UID = Convert.ToInt32(reader["UID"].ToString()); docItem.FKParentDocumentUID = Convert.ToInt32(reader["FKParentDocumentUID"].ToString()); docItem.FKChildDocumentUID = Convert.ToInt32(reader["FKChildDocumentUID"].ToString()); docItem.isVoid = Convert.ToChar(reader["IsVoid"].ToString()); docItem.LinkType = reader["LinkType"].ToString(); // Set Client Document Child // docItem.childClientDocument = new ClientDocument(); docItem.childClientDocument.UID = Convert.ToInt32(reader["childUID"].ToString()); docItem.childClientDocument.FKDocumentUID = Convert.ToInt32(reader["childFKDocumentUID"].ToString()); docItem.childClientDocument.SequenceNumber = Convert.ToInt32(reader["childSequenceNumber"].ToString()); docItem.childClientDocument.FKClientDocumentSetUID = Convert.ToInt32(reader["childFKClientDocumentSetUID"].ToString()); docItem.childClientDocument.IsVoid = Convert.ToChar(reader["childIsVoid"].ToString()); docItem.childClientDocument.StartDate = Convert.ToDateTime(reader["childStartDate"].ToString()); docItem.childClientDocument.SourceLocation = reader["childSourceLocation"].ToString(); docItem.childClientDocument.SourceFileName = reader["childSourceFileName"].ToString(); docItem.childClientDocument.Location = reader["childLocation"].ToString(); docItem.childClientDocument.FileName = reader["childFileName"].ToString(); docItem.childClientDocument.SourceIssueNumber = Convert.ToInt32(reader["childIssueNumber"].ToString()); docItem.childClientDocument.Generated = Convert.ToChar(reader["childGenerated"]); docItem.childClientDocument.RecordType = reader["childRecordType"].ToString(); docItem.childClientDocument.ParentUID = Convert.ToInt32(reader["childParentUID"].ToString()); //docItem.childClientDocument.EndDate = Convert.ToDateTime(reader["childEndDate"].ToString()); docItem.childClientDocument.EndDate = System.DateTime.MaxValue; // Set Client Document Parent // docItem.parentClientDocument = new ClientDocument(); docItem.parentClientDocument.UID = Convert.ToInt32(reader["parentUID"].ToString()); docItem.parentClientDocument.FKDocumentUID = Convert.ToInt32(reader["parentFKDocumentUID"].ToString()); docItem.parentClientDocument.SequenceNumber = Convert.ToInt32(reader["parentSequenceNumber"].ToString()); docItem.parentClientDocument.FKClientDocumentSetUID = Convert.ToInt32(reader["parentFKClientDocumentSetUID"].ToString()); docItem.parentClientDocument.IsVoid = Convert.ToChar(reader["parentIsVoid"].ToString()); docItem.parentClientDocument.StartDate = Convert.ToDateTime(reader["parentStartDate"].ToString()); docItem.parentClientDocument.SourceLocation = reader["parentSourceLocation"].ToString(); docItem.parentClientDocument.SourceFileName = reader["parentSourceFileName"].ToString(); docItem.parentClientDocument.Location = reader["parentLocation"].ToString(); docItem.parentClientDocument.FileName = reader["parentFileName"].ToString(); docItem.parentClientDocument.SourceIssueNumber = Convert.ToInt32(reader["parentIssueNumber"].ToString()); docItem.parentClientDocument.Generated = Convert.ToChar(reader["parentGenerated"]); docItem.parentClientDocument.RecordType = reader["parentRecordType"].ToString(); docItem.parentClientDocument.ParentUID = Convert.ToInt32(reader["parentParentUID"].ToString()); //docItem.parentClientDocument .EndDate = Convert.ToDateTime(reader["parentEndDate"].ToString()); docItem.parentClientDocument.EndDate = System.DateTime.MaxValue; this.clientDocumentLinkList.Add(docItem); } } } } }
// --------------------------------------------------------- // Copy document links to client document links // --------------------------------------------------------- public void ReplicateDocLinkToClientDeprecated(int ClientUID, int ClientSetUID) { // 1... GetClientDocument // List documents for a Client Set Document // var clientDocumentList = new ClientDocument(); // clientDocumentList.List(ClientUID, ClientSetUID); RepClientDocument.List(clientDocumentList, ClientUID, ClientSetUID); // 2... foreach( clientDocument ) // For each client document, retrieve the linked documents // foreach (var clientDocument in clientDocumentList.clientDocSetDocLink) { // 3...... GetDocumentChildren( currentClientDocument) // This part retrieves Document Links and not ClientDocument Links // that's why we need to get the equivalent ClientDocumentUID... var children = DocumentLinkList.ListRelatedDocuments(clientDocument.document.UID); // 4...... foreach (GetDocumentChildren) foreach (var child in children.documentLinkList) { // 5..... CreateClientDocumentLink(Client,ClientSet,DocumentParent,DocumentChild, Type) ClientDocumentLink newLink = new ClientDocumentLink(); // This is the client document UID newLink.FKParentDocumentUID = clientDocument.clientDocument.UID; // Get clientUID for child document ClientDocument childDocument = new ClientDocument(); //childDocument.FKDocumentUID = child.UID; childDocument.FKDocumentUID = child.documentTo.UID; // childDocument.Find(child.documentTo.UID, clientDocument.clientDocumentSet.UID, 'N', ClientUID); childDocument = RepClientDocument.Find(child.documentTo.UID, clientDocument.clientDocumentSet.UID, 'N', ClientUID); if (childDocument.UID > 0) { newLink.FKChildDocumentUID = childDocument.UID; newLink.LinkType = child.LinkType; // Replace by link type newLink.Add(); } } } //using (var connection = new MySqlConnection(ConnString.ConnectionString)) //{ // var commandString = string.Format( // " SELECT " + // " UID " + // " FROM ClientDocument " + // " WHERE " + // " FKClientUID = {0} " + // " AND FKClientDocumentSetUID = {1} ", // ClientUID, // ClientSetUID // ); // using (var command = new MySqlCommand( // commandString, connection)) // { // connection.Open(); // using (MySqlDataReader reader = command.ExecuteReader()) // { // while (reader.Read()) // { // int ClientDocumentUID; // ClientDocumentUID = Convert.ToInt32(reader["UID"].ToString()); // } // } // } //} }