public ActionResult ViolationLibrary(string violationTypeNumber = "") { Server.ScriptTimeout = 600; //No role based authentication needed, just make sure they have a valid credential for Library services. var authResult = CERSSecurityManager.AuthenticateHttpAuthorizationHeader(); if (authResult.Result.Status == AuthenticationStatus.Success) { using (EDTTransactionScope transScope = new EDTTransactionScope(authResult.Account, EDTEndpoint.ViolationLibraryQuery, Request.UserHostAddress, authenticationRequestID: authResult.EDTAuthenticationRequestID)) { try { var xmlResult = transScope.Repository.ViolationTypes.Search(typeNumber: violationTypeNumber).ToXml(); transScope.WriteActivity("Generated XML Package Successfully"); return(XmlElement(xmlResult)); } catch (Exception ex) { transScope.WriteActivity("Exception Occurred", ex); transScope.WriteMessage("Exception Occurred. " + ex.Format(), EDTTransactionMessageType.Error); transScope.Complete(EDTTransactionStatus.ErrorProcessing); return(HttpStatusCodeResult(HttpStatusCode.InternalServerError, ex.Message)); } } } else { return(HttpStatusCodeResult(HttpStatusCode.Unauthorized, authResult)); } }
public ActionResult FacilityMetadata(int regulatorCode) { //Authenticate var authResult = CERSSecurityManager.AuthenticateHttpAuthorizationHeaderForRegulator(regulatorCode, EDTEndpoint.RegulatorFacilityMetadataSubmit, PermissionRole.EDTFacilityMetadataSubmit); if (authResult.IsAuthenticatedAndAuthorized) { XElement xmlResult = null; //Begin Transaction using (EDTTransactionScope transScope = new EDTTransactionScope(authResult.Account, EDTEndpoint.RegulatorFacilityMetadataSubmit, Request.UserHostAddress, authenticationRequestID: authResult.EDTAuthenticationRequestID)) { try { RegulatorFacilityMetadataAdapter adapter = new RegulatorFacilityMetadataAdapter(transScope); xmlResult = adapter.Process(Request.InputStream, regulatorCode); } catch (Exception ex) { transScope.WriteMessage("Exception Occurred. " + ex.Format(), EDTTransactionMessageType.Error); transScope.Complete(EDTTransactionStatus.ErrorProcessing); return(HttpStatusCodeResult(HttpStatusCode.InternalServerError, ex.Format())); } } return(XmlElement(xmlResult)); } else { return(HttpStatusCodeResult(HttpStatusCode.Unauthorized, authResult)); } }
public ActionResult DataDictionaryLibrary(DataRegistryDataSourceType dictionary, string identifier) { Server.ScriptTimeout = 600; //No role based authentication needed, just make sure they have a valid credential for Library services. var authResult = CERSSecurityManager.AuthenticateHttpAuthorizationHeader(); if (authResult.Result.Status == AuthenticationStatus.Success) { using (EDTTransactionScope transScope = new EDTTransactionScope(authResult.Account, EDTEndpoint.DataDictionaryQuery, Request.UserHostAddress, authenticationRequestID: authResult.EDTAuthenticationRequestID)) { try { if (!string.IsNullOrWhiteSpace(identifier)) { transScope.WriteActivity("Finding DataElement by Specific Identifier: \"" + identifier + "\"."); } else { transScope.WriteActivity("Get All DataElements."); } var elements = DataRegistry.GetDataElements(dictionary, identifier); transScope.WriteActivity("Fetched " + elements.Count + " Data Elements"); var xmlResult = elements.ToXml(); transScope.WriteActivity("Generated XML Package Successfully"); return(XmlElement(xmlResult)); } catch (Exception ex) { transScope.WriteActivity("Exception Occurred", ex); transScope.WriteMessage("Exception Occurred. " + ex.Format(), EDTTransactionMessageType.Error); transScope.Complete(EDTTransactionStatus.ErrorProcessing); return(HttpStatusCodeResult(HttpStatusCode.InternalServerError, ex.Message)); } } } else { return(HttpStatusCodeResult(HttpStatusCode.Unauthorized, authResult)); } }
public ActionResult ActionItemQuery(int regulatorCode) { //Authenticate var authResult = CERSSecurityManager.AuthenticateHttpAuthorizationHeaderForRegulator(regulatorCode, EDTEndpoint.RegulatorActionItemQuery, PermissionRole.EDTActionItemQuery); if (authResult.IsAuthenticatedAndAuthorized) { XElement xmlResult = null; //Begin Transaction using (EDTTransactionScope transScope = new EDTTransactionScope(authResult.Account, EDTEndpoint.RegulatorActionItemQuery, Request.UserHostAddress, authenticationRequestID: authResult.EDTAuthenticationRequestID)) { try { //build of the argument bag. var args = new RegulatorActionItemQueryArguments(Request.QueryString); args.RegulatorCode = regulatorCode; RegulatorActionItemQueryAdapter adapter = new RegulatorActionItemQueryAdapter(transScope); xmlResult = adapter.Process(args); } catch (Exception ex) { transScope.WriteMessage("Exception Occurred. " + ex.Format(), EDTTransactionMessageType.Error); transScope.Complete(EDTTransactionStatus.ErrorProcessing); return(HttpStatusCodeResult(HttpStatusCode.InternalServerError, ex.Format())); } } return(XmlElement(xmlResult)); } else { return(HttpStatusCodeResult(HttpStatusCode.Unauthorized, authResult)); } }
public ActionResult Document(Guid uniqueKey) { var authResult = CERSSecurityManager.AuthenticateHttpAuthorizationHeader(); if (authResult.IsAuthenticatedAndAuthorized) { byte[] docData = null; bool docNotFound = false; bool docUniqueKeyNotFound = false; bool docPhysicallyNotFound = false; //Begin Transaction using (EDTTransactionScope transScope = new EDTTransactionScope(authResult.Account, EDTEndpoint.RegulatorFacilitySubmittalDocumentQuery, Request.UserHostAddress, authenticationRequestID: authResult.EDTAuthenticationRequestID)) { try { var dataModel = transScope.Repository.DataModel; var doc = dataModel.FacilitySubmittalElementDocuments.SingleOrDefault(p => p.Key == uniqueKey && !p.Voided); if (doc != null) { transScope.WriteActivity(string.Format("FacilitySubmittalElementDocument CERSUniqueKey {0} metadata found.", uniqueKey)); var edtAuthorizationResult = CERSSecurityManager.EDTAuthorize(authResult.Account, doc.FacilitySubmittalElementResourceDocument.Resource.FacilitySubmittalElement.CERSID, PermissionRole.EDTFacilitySubmittalQuery); transScope.Connect(edtAuthorizationResult.RegulatorID); if (edtAuthorizationResult.Authorized) { if (doc.Document != null) { transScope.WriteActivity("Document metadata found."); docData = DocumentStorage.GetBytes(doc.Document.Location); if (docData != null) { transScope.WriteActivity(string.Format("Document physically found in storage file size {0}kb.", doc.FileSize)); transScope.Complete(EDTTransactionStatus.Accepted); } else { docPhysicallyNotFound = true; transScope.WriteMessage("Document NOT physically found in storage.", EDTTransactionMessageType.Error); transScope.Complete(EDTTransactionStatus.Rejected); } } else { transScope.WriteMessage("Document metadata not found.", EDTTransactionMessageType.Error); transScope.Complete(EDTTransactionStatus.Rejected); docNotFound = true; } } else { string errorMessage = "Account is not authorized to download this document. The account is not affiliated with any regulators associated with this Facility, or the account does not have sufficient rights."; transScope.SetStatus(EDTTransactionStatus.Rejected); transScope.WriteActivity(errorMessage); return(HttpStatusCodeResult(HttpStatusCode.Unauthorized, errorMessage)); } } else { transScope.WriteActivity("Document Unique Key Not Found"); transScope.Complete(EDTTransactionStatus.Rejected); docUniqueKeyNotFound = true; } } catch (Exception ex) { transScope.WriteActivity("Exception Occurred.", ex); transScope.WriteMessage("Exception Occurred. " + ex.Format(), EDTTransactionMessageType.Error); return(HttpStatusCodeResult(HttpStatusCode.InternalServerError, ex.Format())); } } if (docNotFound) { return(HttpStatusCodeResult(HttpStatusCode.NotFound, "Document for UniqueKey '" + uniqueKey + "' was not found.")); } else if (docUniqueKeyNotFound) { return(HttpStatusCodeResult(HttpStatusCode.NotFound, "A Document does not exists with the UniqueKey '" + uniqueKey + "'.")); } else if (docPhysicallyNotFound) { return(HttpStatusCodeResult(HttpStatusCode.NotFound, "The document's metadata exists, but the physical document (filesystem) was not found.")); } else { return(File(docData, "application/octet-stream")); } } else { return(HttpStatusCodeResult(HttpStatusCode.Unauthorized, authResult)); } }
public ActionResult ChemicalLibrary(string identifier) { Server.ScriptTimeout = 600; //No role based authentication needed, just make sure they have a valid credential for Library services. var authResult = CERSSecurityManager.AuthenticateHttpAuthorizationHeader(); if (authResult.Result.Status == AuthenticationStatus.Success) { using (EDTTransactionScope transScope = new EDTTransactionScope(authResult.Account, EDTEndpoint.ChemicalLibraryQuery, Request.UserHostAddress, authenticationRequestID: authResult.EDTAuthenticationRequestID)) { try { if (!string.IsNullOrWhiteSpace(identifier)) { List <Chemical> chemicals = new List <Chemical>(); Chemical chemical = null; //1.) Check one. Check cerskey //Guid key = new Guid(identifier); chemical = transScope.Repository.Chemicals.GetByCCLID(identifier); //2.) Check two. Check CAS if (chemical == null) { chemical = transScope.Repository.Chemicals.GetByCAS(identifier); if (chemical == null) { //3.) Check 3. Check USEpaSRSNumber chemical = transScope.Repository.Chemicals.GetByUSEPASRSNumber(identifier); } } if (chemical != null) { chemicals.Add(chemical); } var xmlResult = chemicals.ToXml(); transScope.WriteActivity("Generated XML Package Successfully"); return(XmlElement(xmlResult)); } else { var xmlResult = transScope.Repository.Chemicals.Search().ToXml(); transScope.WriteActivity("Generated XML Package Successfully"); return(XmlElement(xmlResult)); } } catch (Exception ex) { transScope.WriteActivity("Exception Occurred", ex); transScope.WriteMessage("Exception Occurred. " + ex.Format(), EDTTransactionMessageType.Error); transScope.Complete(EDTTransactionStatus.ErrorProcessing); return(HttpStatusCodeResult(HttpStatusCode.InternalServerError, ex.Message)); } } } else { return(HttpStatusCodeResult(HttpStatusCode.Unauthorized, authResult)); } }