protected void SearchTransfersClick(object sender, EventArgs e) { int protocolId = int.Parse(BaseProtocolId); string datasetSQL = base.GetSpecimenPatientsDatasetSQL(); string column = Transfer_SearchSelection.Value; string search = Transfer_SearchValue.Value; DataTable transfers = da.SearchSpecimenTransfersByProtocol(protocolId, datasetSQL, column, search); // for specimen search, adjust UI if (column == Specimen.SpecimenReferenceNumber) { var results = from row in transfers.AsEnumerable() group row by row["SpecimenReferenceNumber"].ToString() into g let row = g.First() let result = new { SpecimenReferenceNumber = g.Key, SpecimenTransfers = from r in g where !r.IsNull(SpecimenRequest.RequestIdentifier) select new { RequestIdentifier = r[SpecimenRequest.RequestIdentifier].ToString() } } where result.SpecimenTransfers.Count() > 0 select result; TransferSpecimenListing_Rptr.DataSource = results; TransferSpecimenListing_Rptr.DataBind(); RecordCount.Text = results.Count() + " Specimen(s)"; TransferListing_Rptr.Visible = false; TransferListing_Header.Visible = false; TransferSpecimenListing_Rptr.Visible = true; TransferSpecimenListing_Header.Visible = true; } else { TransferListing_Rptr.DataSource = transfers; TransferListing_Rptr.DataBind(); RecordCount.Text = transfers.Rows.Count + " Transfer(s)"; TransferListing_Rptr.Visible = true; TransferListing_Header.Visible = true; TransferSpecimenListing_Rptr.Visible = false; TransferSpecimenListing_Header.Visible = false; } }
/// <summary> /// /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void BuildTransfers(object sender, EventArgs e) { int protocolId = int.Parse(BaseProtocolId); // get specimen patients dataset string datasetSQL = base.GetSpecimenPatientsDatasetSQL(); // display transfers initiated or recived in mode string[] collectionStatusList = new string[0]; switch (inventoryMode) { case (SpecimenInventoryMode.Collection): collectionStatusList = TRANSFER_COLLECTION_STATUSES; break; case (SpecimenInventoryMode.Pathology): collectionStatusList = TRANSFER_PATHOLOGY_STATUSES; break; case (SpecimenInventoryMode.Sequencing): collectionStatusList = TRANSFER_SEQUENCING_STATUSES; break; case (SpecimenInventoryMode.Analysis): collectionStatusList = TRANSFER_ANALYSIS_STATUSES; break; case (SpecimenInventoryMode.cBIO): collectionStatusList = TRANSFER_CBIO_STATUSES; break; default: break; } DataView transfers = da.GetSpecimenTransfersByProtocol(protocolId, datasetSQL, collectionStatusList, new int[0]).DefaultView; //var data = from row in transfers.Table.AsEnumerable() // group row by (int)row["SpecimenRequestId"] into g // let row = g.First() // select new // { // SpecimenRequestId = (int)row["SpecimenRequestId"], // DistributionId = (int)row["DistributionId"], // CollectionId = (int)row["CollectionId"], // SpecimenCount = (int)row["SpecimenCount"], // RequestIdentifier = row["RequestIdentifier"].ToString(), // RequestDate = row["RequestDate"], // DispatchedDate = row["DispatchedDate"], // DispatchedContact = row["DispatchedContact"].ToString(), // DispatchedInstitution = row["DispatchedInstitution"].ToString(), // ReceivedDate = row["ReceivedDate"], // ReceivedContact = row["ReceivedContact"].ToString(), // ReceivedInstitution = row["ReceivedInstitution"].ToString(), // DispatchedTrackingNumber = row["DispatchedTrackingNumber"].ToString(), // SpecimenStatuses = g.Select(r => r["SpecimenStatus"].ToString()).Distinct() // }; ////DataTable transfers = da.GetRequests("", "", "", "", "", true); //TransferListing.DataSource = transfers; //TransferListing.DataBind(); transfers.Sort = "DispatchedDate DESC"; TransferListing_Rptr.DataSource = transfers; TransferListing_Rptr.DataBind(); RecordCount.Text = transfers.Count + " Transfer(s)"; }