/// <summary> /// Create a Reference entity based off of the ReferenceContent. /// </summary> /// <param name="content">Reference content holder.</param> /// <returns>Reference entity based off of content.</returns> private Reference createReferenceEntity(ReferenceContent content) { var r = new Reference(); if (content.referenceID != -1) { // Existing Reference; has a ReferenceID r = (from rf in _db.References where rf.ReferenceID == content.referenceID && rf.QuestionResponseID == content.questionResponseID && rf.RequestID == content.requestID select rf).Single(); } r.RequestID = content.requestID; r.QuestionResponseID = content.questionResponseID; r.ReferenceType = (byte) content.referenceType; r.ReferenceString = content.referenceString; return r; }
/// <summary> /// Retrieves all of the request information and content from the /// database for a given request ID. /// </summary> /// <param name="requestId">ID of the specified request.</param> /// <returns> /// RequestContent contaning QuestionResponseContents, /// ReferenceContents and Keywords. /// </returns> public RequestContent getRequestDetails(long requestId) { IQueryable<Request> requests = (from reqs in _db.Requests where reqs.RequestID == requestId select reqs); if (requests.Any()) { Request reqResult = requests.First(); List<QuestionResponse> qrResults = (from qrs in _db.QuestionResponses where qrs.RequestID == requestId orderby qrs.QuestionResponseID select qrs) .ToList(); List<Reference> refResults = (from refs in _db.References where refs.RequestID == requestId orderby refs.QuestionResponseID select refs) .ToList(); // Create RequestContent holder var reqContent = new RequestContent(reqResult); int refCounter = 0; // For each QuestionResponse in the database foreach (QuestionResponse qr in qrResults) { // Create QuestionResponseContent holder var qrContent = new QuestionResponseContent(qr); reqContent.addQuestionResponse(qrContent); List<Keyword> kwResults = (from kws in _db.Keywords join kqs in _db.KeywordQuestions on kws.KeywordID equals kqs.KeywordID where kqs.RequestID == requestId && kqs.QuestionResponseID == qr.QuestionResponseID select kws) .ToList(); // For each Keyword for the current QuestionResponse foreach (Keyword kw in kwResults) { qrContent.addKeyword(kw.KeywordValue); } // For each Reference for the current QuestionResponse while (refCounter < refResults.Count && qr.QuestionResponseID == refResults[refCounter].QuestionResponseID) { // Create ReferenceContent holder var refContent = new ReferenceContent(refResults[refCounter++]); qrContent.addReference(refContent); } } return reqContent; } else { return null; } }
public void TestViewRequestWorking() { // Add some Dependencies var rt = new RequestorType { Code = _random.Next(1000000) .ToString(CultureInfo.InvariantCulture), Value = "VRInt-" + _random.Next() .ToString(CultureInfo.InvariantCulture), Active = true }; _cdc.RequestorTypes.InsertOnSubmit(rt); var qt = new QuestionType { Code = _random.Next(1000000) .ToString(CultureInfo.InvariantCulture), Value = "VRInt-" + _random.Next() .ToString(CultureInfo.InvariantCulture), Active = true }; _cdc.QuestionTypes.InsertOnSubmit(qt); var tg = new TumourGroup { Code = _random.Next(1000000) .ToString(CultureInfo.InvariantCulture), Value = "VRInt-" + _random.Next() .ToString(CultureInfo.InvariantCulture), Active = true }; _cdc.TumourGroups.InsertOnSubmit(tg); var r = new Region { Code = _random.Next(1000000) .ToString(CultureInfo.InvariantCulture), Value = "VRInt-" + _random.Next() .ToString(CultureInfo.InvariantCulture), Active = true }; _cdc.Regions.InsertOnSubmit(r); var k = new Keyword { KeywordValue = "VRInt-" + _random.Next() .ToString(CultureInfo.InvariantCulture), Active = true }; _cdc.Keywords.InsertOnSubmit(k); // Submit our changes so far. _cdc.SubmitChanges(); // Create a test request in the DB var rc = new RequestContent { patientFName = "VRInt-" + _random.Next() .ToString(CultureInfo.InvariantCulture), patientLName = "VRInt-" + _random.Next() .ToString(CultureInfo.InvariantCulture), patientAgencyID = _random.Next() .ToString(CultureInfo.InvariantCulture), patientGender = Constants.Gender.Female, patientAge = 255, requestorTypeID = rt.RequestorTypeID, regionID = r.RegionID, requestorFirstName = "VRInt-" + _random.Next() .ToString( CultureInfo.InvariantCulture), requestorLastName = "VRInt-" + _random.Next() .ToString( CultureInfo.InvariantCulture), requestorEmail = _random.Next() .ToString(CultureInfo.InvariantCulture) + "@example.com", requestorPhoneNum = _random.Next() .ToString( CultureInfo.InvariantCulture), requestorPhoneExt = _random.Next() .ToString( CultureInfo.InvariantCulture) }; var refCont = new ReferenceContent { referenceType = Constants.ReferenceType.Text, referenceString = "VRInt-" + _random.Next() .ToString( CultureInfo.InvariantCulture) }; var qrc = new QuestionResponseContent { question = "VRInt-" + _random.Next() .ToString( CultureInfo.InvariantCulture), response = "VRInt-" + _random.Next() .ToString( CultureInfo.InvariantCulture), specialNotes = "VRInt-" + _random.Next() .ToString( CultureInfo.InvariantCulture), consequence = Constants.Consequence.Certain, severity = Constants.Severity.Major, keywords = new List<string> {k.KeywordValue}, referenceList = new List<ReferenceContent> {refCont}, timeSpent = 255, questionTypeID = qt.QuestionTypeID, tumourGroupID = tg.TumourGroupID }; rc.addQuestionResponse(qrc); var rmc = new RequestManagementController(); long rid = rmc.create(rc); var dmc = new DropdownManagementController(); // Attempt to go to the appropriate View Request Page Directly _driver.Navigate().GoToUrl(CommonTestingMethods.getURL()); _driver.Navigate() .GoToUrl(CommonTestingMethods.getURL() + "/Request/Details/" + rid.ToString(CultureInfo.InvariantCulture)); // Assert that we're not redirected StringAssert.Contains("/Request/Details", _driver.Url); // Go through fields and check values IWebElement element = _driver.FindElement(By.Id("status")); StringAssert.AreEqualIgnoringCase(rc.requestStatus.ToString(), element.Text); element = _driver.FindElement(By.Id("total-time-spent")); StringAssert.Contains(qrc.timeSpent.ToString(), element.Text); element = _driver.FindElement(By.Id("requestor-name")); StringAssert.Contains(rc.requestorFirstName, element.Text); StringAssert.Contains(rc.requestorLastName, element.Text); element = _driver.FindElement(By.Id("requestor-email")); StringAssert.AreEqualIgnoringCase(rc.requestorEmail, element.Text); element = _driver.FindElement(By.Id("requestor-phone")); StringAssert.Contains(rc.requestorPhoneNum, element.Text); StringAssert.Contains(rc.requestorPhoneExt, element.Text); element = _driver.FindElement(By.Id("caller-type")); StringAssert.Contains(rt.Code, element.Text); StringAssert.Contains(rt.Value, element.Text); element = _driver.FindElement(By.Id("region")); StringAssert.Contains(r.Code, element.Text); StringAssert.Contains(r.Value, element.Text); element = _driver.FindElement(By.Id("patient-name")); StringAssert.Contains(rc.patientFName, element.Text); StringAssert.Contains(rc.patientLName, element.Text); element = _driver.FindElement(By.Id("patient-gender")); StringAssert.AreEqualIgnoringCase(rc.patientGender.ToString(), element.Text); element = _driver.FindElement(By.Id("patient-id")); StringAssert.AreEqualIgnoringCase(rc.patientAgencyID, element.Text); element = _driver.FindElement(By.Id("patient-age")); StringAssert.AreEqualIgnoringCase(rc.patientAge.ToString(), element.Text); element = _driver.FindElement(By.ClassName("question")); StringAssert.AreEqualIgnoringCase(qrc.question, element.Text); element = _driver.FindElement(By.ClassName("response")); StringAssert.AreEqualIgnoringCase(qrc.response, element.Text); element = _driver.FindElement(By.ClassName("special-notes")); StringAssert.AreEqualIgnoringCase(qrc.specialNotes, element.Text); element = _driver.FindElement(By.ClassName("question-type")); StringAssert.Contains(qt.Code, element.Text); StringAssert.Contains(qt.Value, element.Text); element = _driver.FindElement(By.ClassName("tumour-group")); StringAssert.Contains(tg.Code, element.Text); StringAssert.Contains(tg.Value, element.Text); element = _driver.FindElement(By.ClassName("time-spent")); StringAssert.Contains(qrc.timeSpent.ToString(), element.Text); element = _driver.FindElement(By.ClassName("score")); StringAssert.AreEqualIgnoringCase( 1.ToString(CultureInfo.InvariantCulture), element.Text); element = _driver.FindElement(By.ClassName("impact-sev")); StringAssert.AreEqualIgnoringCase(qrc.severity.ToString(), element.Text); element = _driver.FindElement(By.ClassName("impact-cons")); StringAssert.AreEqualIgnoringCase(qrc.consequence.ToString(), element.Text); element = _driver.FindElement(By.ClassName("reference-string")); StringAssert.AreEqualIgnoringCase(refCont.referenceString, element.Text); // Cleanup var cdc2 = new CAIRSDataContext(); IQueryable<KeywordQuestion> kqs = cdc2.KeywordQuestions.Where(kq => kq.RequestID == rid); Assert.IsTrue(kqs.Any()); cdc2.KeywordQuestions.DeleteAllOnSubmit(kqs); IQueryable<AuditLog> als = cdc2.AuditLogs.Where(al => al.RequestID == rid); Assert.IsTrue(als.Any()); cdc2.AuditLogs.DeleteAllOnSubmit(als); IQueryable<QuestionResponse> qrs = cdc2.QuestionResponses.Where(dbQr => dbQr.RequestID == rid); Assert.IsTrue(qrs.Any()); cdc2.QuestionResponses.DeleteAllOnSubmit(qrs); IQueryable<Request> rs = cdc2.Requests.Where(rq => rq.RequestID == rid); Assert.IsTrue(rs.Any()); cdc2.Requests.DeleteAllOnSubmit(rs); IQueryable<Reference> refs = cdc2.References.Where(rf => rf.RequestID == rid); Assert.IsTrue(refs.Any()); cdc2.References.DeleteAllOnSubmit(refs); IQueryable<RequestorType> rqts = cdc2.RequestorTypes.Where( rqt => rqt.RequestorTypeID == rt.RequestorTypeID); Assert.IsTrue(rqts.Any()); cdc2.RequestorTypes.DeleteAllOnSubmit(rqts); IQueryable<QuestionType> qts = cdc2.QuestionTypes.Where( dbQt => dbQt.Value == qt.Value); Assert.IsTrue(qts.Any()); cdc2.QuestionTypes.DeleteAllOnSubmit(qts); IQueryable<TumourGroup> tgs = cdc2.TumourGroups.Where( dbTg => dbTg.TumourGroupID == tg.TumourGroupID); Assert.IsTrue(tgs.Any()); cdc2.TumourGroups.DeleteAllOnSubmit(tgs); IQueryable<Region> regions = cdc2.Regions.Where(dbRg => dbRg.RegionID == r.RegionID); Assert.IsTrue(regions.Any()); cdc2.Regions.DeleteAllOnSubmit(regions); IQueryable<Keyword> keywords = cdc2.Keywords.Where(kw => kw.KeywordID == k.KeywordID); Assert.IsTrue(keywords.Any()); cdc2.Keywords.DeleteAllOnSubmit(keywords); IQueryable<Request> rqs = cdc2.Requests.Where(dbRq => dbRq.RequestID == rid); Assert.IsTrue(rqs.Any()); cdc2.Requests.DeleteAllOnSubmit(rqs); cdc2.SubmitChanges(); }
public ActionResult NewReference(string id, string json) { // Don't want to load a partial with a Not Authorized message if (!Roles.IsUserInRole(Constants.Roles.REQUEST_EDITOR)) { return RedirectToAction("Index", "Home", new { status = Constants.URLStatus.NoRequestEditorRole }); } ReferenceContent refContent; if (String.IsNullOrEmpty(json)) { refContent = new ReferenceContent(); } else { refContent = new JavaScriptSerializer().Deserialize<ReferenceContent>( json); } // Used to set dynamic model binding index ViewBag.Guid = id; ViewBag.RefGuid = HtmlPrefixScopeExtensions.CreateItemIndex( "questionResponseList[" + id + "].referenceList"); ViewBag.HtmlIdPrefix = "questionResponseList_" + id + "__referenceList_" + ViewBag.RefGuid + "__"; ViewBag.ReferenceTypes = new SelectList( Constants.referenceTypeOptions); return View("Partial/NewReference", refContent); }
/// <summary> /// Add a new Reference to the QR /// </summary> /// <param name="newRef">The new ReferenceContent to add</param> public void addReference(ReferenceContent newRef) { referenceList.Add(newRef); }