public void CreateAssessmentSubmission(AssessmentSubmission submission, out Certificate certificate)
        {
            if (submission == null)
            {
                throw new ArgumentNullException(nameof(submission));
            }

            certificate = null;

            //TODO validation
            AssessmentRequest request = submission.AssessmentRequest ?? _assessmentRequests.GetById(submission.AssessmentRequestId);

            request.IsCompleted = true;
            _assessmentRequests.Update(request);
            _assessmentRequests.SaveChanges();

            submission.UserId = request.UserId;
            _assessmentSubmissions.Add(submission);
            _assessmentSubmissions.SaveChanges();

            Course submissionCourse = _courses.GetById(submission.CourseId);

            if (submission.IsSuccessful)
            {
                certificate = _certificatesService.GenerateCertificate(request.User.Username, submissionCourse.Id, submission);
                string certificateUrl        = _routeProvider.GetCertificateRoute(certificate);
                string certificatePictureUrl = _routeProvider.GetCertificatePictureRoute(certificate);
                _messageService.SendExamSuccessfulMessage(request.User, submissionCourse, certificateUrl, certificatePictureUrl);
            }
            else
            {
                string assessmentUrl = _routeProvider.GetAssessmentRoute(submissionCourse.Id);
                _taskRunner.Schedule <IMessageService>(x => x.SendExamAvailableMessage(request.User, submissionCourse, assessmentUrl), NextAvailableAssessmentAttempt(submission.CreatedOn));//TODO add config setting
            }
        }
示例#2
0
        public void TestAssessmentCreate()
        {
            var time = new Time
            {
                Zone       = "GMT",
                Identifier = "Time",
                Format     = "iso_8601"
            };
            var datasource = new Datasource
            {
                Type = "STANDALONE"
            };
            var rnd          = new System.Random();
            var randomNumber = System.Convert.ToString(rnd.Next(1, 10000));

            var Field = new Field
            {
                Time = time
            };
            var ds = new DatastreamRequest
            {
                Name       = "TestDS" + randomNumber,
                Field      = Field,
                DataSource = datasource
            };

            try
            {
                var datastream = _falkonry.CreateDatastream(ds);
                _datastreams.Add(datastream);
                Assert.AreEqual(ds.Name, datastream.Name);
                Assert.AreNotSame(null, datastream.Id);
                // create assessment
                AssessmentRequest asmtRequest = new AssessmentRequest
                {
                    Name       = "TestAsmt",
                    Datastream = datastream.Id
                };
                var assessmentCreated = _falkonry.CreateAssessment(asmtRequest);
                Assert.AreEqual(assessmentCreated.Name, asmtRequest.Name);
                Assert.AreNotEqual(null, assessmentCreated.Id);

                // get Assessment List
                List <Assessment> assessmnetList = _falkonry.GetAssessments();
                Assert.AreEqual(assessmnetList.Count > 0, true);

                // get assessment by id
                Assessment fetchedassessment = _falkonry.GetAssessment(assessmentCreated.Id);
                Assert.AreEqual(assessmentCreated.Name, asmtRequest.Name);
                Assert.AreNotEqual(null, fetchedassessment.Id);

                // check for aprioricondition list
                Assert.AreEqual(fetchedassessment.AprioriConditionList.Length == 0, true);
            }
            catch (System.Exception exception)
            {
                Assert.AreEqual(exception.Message, null, "CRUD operation failed for assessment");
            }
        }
        public AssessmentRequest GetLatestForUser(string username, int assessmentId)
        {
            AssessmentRequest request =
                _assessmentRequests.All()
                .Where(x => x.User.Username == username && x.AssessmentExternalId == assessmentId && x.IsCompleted == false)
                .OrderByDescending(x => x.CreatedOn)
                .FirstOrDefault();

            return(request);
        }
        public AssessmentRequest GetAssessmentRequest(int requestId)
        {
            if (requestId <= 0)
            {
                throw new ArgumentOutOfRangeException("requestId must be a positive integer.");
            }

            AssessmentRequest request = _assessmentRequests.GetById(requestId);

            return(request);
        }
 public Assessment CreateAssessment(AssessmentRequest assessment)
 {
     try
     {
         return(_falkonryService.CreateAssessment(assessment));
     }
     catch (Exception)
     {
         throw;
     }
 }
示例#6
0
        public async Task <IActionResult> Post([FromBody] AssessmentRequest model)
        {
            var assessment = await _context.Assessment.Where(x => x.Year.Equals(model.SADAssessmentYear) && x.AssessmentSerial.Equals(model.SADAssessmentSerial) && x.AssessmentNumber.Equals(model.SADAssessmentNumber)).ToListAsync();

            var currentVerson = assessment.LastOrDefault();

            if (currentVerson != null)
            {
                AssessmentResponse response = _mapper.Map <AssessmentResponse>(currentVerson);
                response.Taxes = await _context.Tax.Where(x => x.AssessmentId.Equals(currentVerson.Id)).ToListAsync();

                return(Ok(new { status = HttpStatusCode.OK, Message = "Request completed", Data = response }));
            }

            return(NotFound(new { status = HttpStatusCode.NotFound, Message = "Resource not found" }));
        }
示例#7
0
        public void TestAssessmentDelete()
        {
            var time = new Time
            {
                Zone       = "GMT",
                Identifier = "Time",
                Format     = "iso_8601"
            };
            var datasource = new Datasource
            {
                Type = "STANDALONE"
            };
            var rnd          = new System.Random();
            var randomNumber = System.Convert.ToString(rnd.Next(1, 10000));

            var Field = new Field
            {
                Time = time
            };
            var ds = new DatastreamRequest
            {
                Name       = "TestDS" + randomNumber,
                Field      = Field,
                DataSource = datasource
            };

            try
            {
                var datastream = _falkonry.CreateDatastream(ds);
                _datastreams.Add(datastream);
                Assert.AreEqual(ds.Name, datastream.Name);
                Assert.AreNotSame(null, datastream.Id);
                // create assessment
                AssessmentRequest asmtRequest = new AssessmentRequest
                {
                    Name       = "TestAsmt",
                    Datastream = datastream.Id
                };
                var assessmentCreated = _falkonry.CreateAssessment(asmtRequest);
                _falkonry.DeleteAssessment(assessmentCreated.Id);
            }
            catch (System.Exception exception)
            {
                Assert.AreEqual(exception.Message, null, "CRUD operation failed for assessment");
            }
        }
        public void CreateAssesmentRequest_ShouldAddAssesmentToRepositoryOnlyOnce_WhenAssesmentRequestIsNull()
        {
            // Arrange
            var assessmentRequestRepositoryMock = new Mock <IRepository <AssessmentRequest> >();

            assessmentRequestRepositoryMock.Setup(x => x.Add(It.IsAny <AssessmentRequest>()));

            var service = SetupAssessmentsService(assessmentRequestRepositoryMock.Object);

            var assementRequest = new AssessmentRequest();

            // Act
            service.CreateAssesmentRequest(assementRequest);

            // Assert
            assessmentRequestRepositoryMock.Verify(x => x.Add(It.IsAny <AssessmentRequest>()), Times.Once);
        }
示例#9
0
        private Record TestAssessment(Record record)
        {
            using (var db = ReusableDocumentStore.OpenSession())
            {
                db.Store(record);
                db.SaveChanges();

                var publishingController = GetTestPublishingController(db);

                var request = new AssessmentRequest
                {
                    Id = Helpers.RemoveCollection(record.Id)
                };

                return(((RecordServiceResult)publishingController.Assess(request)).Record);
            }
        }
        public void CreateAssesmentRequest_ShouldSaveChangesToAssesmentRepository_AfterAssmentRequestIsAdded()
        {
            var assessmentRequestRepositoryMock = new Mock <IRepository <AssessmentRequest> >();

            assessmentRequestRepositoryMock.Setup(x => x.Add(It.IsAny <AssessmentRequest>()));
            assessmentRequestRepositoryMock.Setup(x => x.SaveChanges());

            var service = SetupAssessmentsService(assessmentRequestRepositoryMock.Object);

            var assementRequest = new AssessmentRequest();

            // Act
            service.CreateAssesmentRequest(assementRequest);


            // Assert
            assessmentRequestRepositoryMock.Verify(x => x.SaveChanges(), Times.Once);
        }
        public void GetAssessmentRequest_ShouldThrowArgumentOutOfRangeException_WhenGivenNegativeIntegerAsId()
        {
            var assesmentIdToGet = -5;

            var assesmentRequest = new AssessmentRequest();

            assesmentRequest.Id = assesmentIdToGet;

            var assessmentRequestRepositoryMock = new Mock <IRepository <AssessmentRequest> >();

            assessmentRequestRepositoryMock.Setup(x => x.Add(It.IsAny <AssessmentRequest>()));
            assessmentRequestRepositoryMock.Setup(x => x.SaveChanges());
            assessmentRequestRepositoryMock.Setup(x => x.GetById(It.IsAny <int>()));

            var service = SetupAssessmentsService(assessmentRequests: assessmentRequestRepositoryMock.Object);

            Assert.Throws <ArgumentOutOfRangeException>(() => service.GetAssessmentRequest(assesmentIdToGet));
        }
示例#12
0
        // Create Assessment
        public Assessment CreateAssessment(AssessmentRequest assessment)
        {
            try
            {
                var data = JsonConvert.SerializeObject(assessment, Formatting.Indented,
                                                       new JsonSerializerSettings()
                {
                    ContractResolver = new CamelCasePropertyNamesContractResolver()
                });

                var assessmentJson = _http.Post("/assessment", data);

                return(JsonConvert.DeserializeObject <Assessment>(assessmentJson));
            }
            catch (Exception)
            {
                throw;
            }
        }
示例#13
0
        private static Record TestAssessment(Record record)
        {
            var store = new InMemoryDatabaseHelper().Create();

            using (var db = store.OpenSession())
            {
                db.Store(record);
                db.SaveChanges();

                var publishingController = GetTestOpenDataPublishingController(db);

                var request = new AssessmentRequest
                {
                    Id = record.Id
                };

                return(((RecordServiceResult)publishingController.Assess(request)).Record);
            }
        }
        public Pipeline createPipeline(Pipeline pipeline)
        {
            JavaScriptSerializer javascript        = new JavaScriptSerializer();
            PipelineRequest      pipelineRequest   = new PipelineRequest();
            List <Signal>        signalList        = new List <Signal>();
            List <SignalRequest> signalRequestList = new List <SignalRequest>();
            int len_input_list = pipeline.inputList.Count;

            signalList = pipeline.inputList;
            for (int i = 0; i < len_input_list; i++)
            {
                SignalRequest signalRequest = new SignalRequest();
                signalRequest.name      = (signalList[i].name);
                signalRequest.eventType = (signalList[i].eventType);
                signalRequest.valueType = (signalList[i].valueType);
                signalRequestList.Add(signalRequest);
            }
            int len_assessment_list = pipeline.assessmentList.Count;
            List <Assessment>        assessmentList        = pipeline.assessmentList;
            List <AssessmentRequest> assessmentRequestList = new List <AssessmentRequest>();

            for (int i = 0; i < len_assessment_list; i++)
            {
                AssessmentRequest assessmentRequest = new AssessmentRequest();
                assessmentRequest.name                 = (assessmentList[i].name);
                assessmentRequest.inputList            = (assessmentList[i].inputList);
                assessmentRequest.aprioriConditionList = (assessmentList[i].aprioriConditionList);
                assessmentRequestList.Add(assessmentRequest);
            }
            pipelineRequest.name           = pipeline.name;
            pipelineRequest.interval       = pipeline.interval;
            pipelineRequest.input          = pipeline.input;
            pipelineRequest.inputList      = signalRequestList;
            pipelineRequest.assessmentList = assessmentRequestList;


            string data = javascript.Serialize(pipelineRequest);

            string pipeline_json = http.post("/pipeline", data);

            return(javascript.Deserialize <Pipeline>(pipeline_json));
        }
        public void GetAssessmentRequest_ShouldReturnAssesmentRequest_WhenGivenValidId()
        {
            var assesmentIdToGet = 5;

            var assesmentRequest = new AssessmentRequest();

            assesmentRequest.Id = assesmentIdToGet;

            var assessmentRequestRepositoryMock = new Mock <IRepository <AssessmentRequest> >();

            assessmentRequestRepositoryMock.Setup(x => x.Add(It.IsAny <AssessmentRequest>()));
            assessmentRequestRepositoryMock.Setup(x => x.SaveChanges());
            assessmentRequestRepositoryMock.Setup(x => x.GetById(It.IsAny <int>()));

            var service = SetupAssessmentsService(assessmentRequests: assessmentRequestRepositoryMock.Object);


            service.GetAssessmentRequest(assesmentIdToGet);

            assessmentRequestRepositoryMock.Verify(x => x.GetById(It.IsAny <int>()), Times.Once);
        }
示例#16
0
        public void not_eligible_for_assessment_when_path_is_not_file_path(Record record)
        {
            var store = new InMemoryDatabaseHelper().Create();

            using (var db = store.OpenSession())
            {
                db.Store(record);
                db.SaveChanges();

                var publishingController = GetTestOpenDataPublishingController(db);

                var request = new AssessmentRequest
                {
                    Id = record.Id
                };

                Action a = () => publishingController.Assess(request);
                a.ShouldThrow <InvalidOperationException>().And.Message.Should().Be("Must have a file path for publishing");

                var resultRecord = db.Load <Record>(record.Id);
                resultRecord.Publication.OpenData.Assessment.Should().BeNull();
            }
        }
示例#17
0
        public void fail_when_reassessing_up_to_date_record_at_sign_off_stage()
        {
            var recordId = Helpers.AddCollection(Guid.NewGuid().ToString());
            var record   = new Record().With(r =>
            {
                r.Id         = recordId;
                r.Path       = @"X:\path\to\assessment\test";
                r.Validation = Validation.Gemini;
                r.Gemini     = Library.Example().With(m =>
                {
                    m.MetadataDate = new DateTime(2017, 07, 30);
                });
                r.Publication = new PublicationInfo
                {
                    Assessment = new AssessmentInfo
                    {
                        Completed       = true,
                        CompletedOnUtc  = new DateTime(2017, 07, 21),
                        CompletedByUser = new UserInfo
                        {
                            DisplayName = "Pete",
                            Email       = "*****@*****.**"
                        },
                        InitialAssessmentWasDoneOnSpreadsheet = false
                    },
                    SignOff = new SignOffInfo
                    {
                        DateUtc = new DateTime(2017, 07, 30)
                    },
                    Target = new TargetInfo
                    {
                        Gov = new GovPublicationInfo
                        {
                            Publishable = true,
                            LastAttempt = new PublicationAttempt
                            {
                                DateUtc = new DateTime(2017, 07, 20)
                            }
                        }
                    }
                };
                r.Footer = new Footer();
            });

            using (var db = ReusableDocumentStore.OpenSession())
            {
                db.Store(record);
                db.SaveChanges();

                var publishingController = GetTestPublishingController(db);

                var request = new AssessmentRequest
                {
                    Id = Helpers.RemoveCollection(record.Id)
                };

                Action a = () => publishingController.Assess(request);
                a.Should().Throw <InvalidOperationException>().And.Message.Should().Be("Assessment has already been completed and is up to date");

                var resultRecord = db.Load <Record>(record.Id);
                resultRecord.Publication.Should().NotBeNull();

                var publicationInfo = resultRecord.Publication;
                publicationInfo.Should().NotBeNull();
                publicationInfo.Assessment.Completed.Should().BeTrue();
                publicationInfo.Assessment.CompletedByUser.DisplayName.Should().Be("Pete");
                publicationInfo.Assessment.CompletedByUser.Email.Should().Be("*****@*****.**");
                publicationInfo.Assessment.CompletedOnUtc.Should().Be(new DateTime(2017, 07, 21));
                resultRecord.Gemini.MetadataDate.Should().NotBe(publicationInfo.Assessment.CompletedOnUtc);
            }
        }
        public ActionResult Assessment()
        {
            int    courseId = _coursesContentService.GetCourseId(Umbraco.AssignedContentItem);
            string username = User.Identity.Name;

            if (!_feedbackService.UserHasSentFeedback(username, courseId))
            {
                return(RedirectToRoute("Feedback", new { courseNiceUrl = Umbraco.AssignedContentItem.UrlName }));
            }

            if (_assessments.GetEligibilityStatus(username, courseId) != AssessmentEligibilityStatus.Eligible)
            {
                TempData["ErrorMessage"] = $"В момента нямате достъп до изпита за този курс. Моля посетете <a href=\"{Url.RouteUrl("Profile")}\" title=\"Профил\">Вашия профил </a> за повече информация.";
                return(Redirect(Umbraco.AssignedContentItem.Url));
            }

            object            assessmentId      = Umbraco.AssignedContentItem.GetPropertyValue <Picker>(nameof(Course.Assessment)).SavedValue;
            IPublishedContent assessmentContnet = Umbraco.TypedContent(assessmentId);
            var user = _users.GetByUsername(username);
            AssessmentViewModel             assessment        = new AssessmentViewModel();
            List <QuestionViewModel>        questionViewModel = new List <QuestionViewModel>();
            IEnumerable <IPublishedContent> questions;
            var assessmentRequest = _assessments.GetLatestForUser(user.Username, assessmentContnet.Id);

            if (assessmentRequest == null)
            {
                var numberOfQuestions =
                    assessmentContnet.GetPropertyValue <int>(
                        nameof(Models.Umbraco.DocumentTypes.Assessment.NumberOfQuestions));
                if (numberOfQuestions == default(int))
                {
                    throw new ArgumentException($"Number of questions is not set for assessment with ID: {assessmentId}");
                }

                questions = assessmentContnet.Descendants(1).OrderBy(x => Guid.NewGuid()).Take(numberOfQuestions).ToList();

                assessmentRequest = new AssessmentRequest
                {
                    AssessmentExternalId = assessmentContnet.Id,
                    QuestionIds          = string.Join(",", questions.Select(x => x.Id)),
                    IsCompleted          = false,
                    UserId = user.Id
                };
                _assessments.CreateAssesmentRequest(assessmentRequest);
            }
            else
            {
                questions = Umbraco.TypedContent(assessmentRequest.QuestionIds.Split(',')).ToList();
            }

            _mapper.AddCustomMapping(
                typeof(IEnumerable <QuestionAnswer>).FullName,
                UmbracoMapperMappings.MapQuestionAnswer)
            .MapCollection(questions, questionViewModel)
            .Map(assessmentContnet, assessment);

            assessment.Questions           = questionViewModel;
            assessment.AssessmentRequestId = assessmentRequest.Id;

            return(View(assessment));
        }
 public void CreateAssesmentRequest(AssessmentRequest request)
 {
     //TODO validation
     _assessmentRequests.Add(request);
     _assessmentRequests.SaveChanges();
 }
示例#20
0
        public void fail_when_reassessing_up_to_date_record_at_upload_stage()
        {
            var recordId = new Guid("593177d9-885f-4450-903b-ecb9ea667575");
            var record   = new Record().With(r =>
            {
                r.Id         = recordId;
                r.Path       = @"X:\path\to\assessment\test";
                r.Validation = Validation.Gemini;
                r.Gemini     = Library.Example().With(m =>
                {
                    m.MetadataDate = new DateTime(2017, 07, 30);
                });
                r.Publication = new PublicationInfo
                {
                    OpenData = new OpenDataPublicationInfo
                    {
                        Publishable = true,
                        Assessment  = new OpenDataAssessmentInfo
                        {
                            Completed       = true,
                            CompletedOnUtc  = new DateTime(2017, 07, 21),
                            CompletedByUser = new UserInfo
                            {
                                DisplayName = "Pete",
                                Email       = "*****@*****.**"
                            },
                            InitialAssessmentWasDoneOnSpreadsheet = false
                        },
                        SignOff = new OpenDataSignOffInfo
                        {
                            DateUtc = new DateTime(2017, 07, 29)
                        },
                        LastAttempt = new PublicationAttempt
                        {
                            DateUtc = new DateTime(2017, 07, 30)
                        }
                    }
                };
                r.Footer = new Footer();
            });

            var store = new InMemoryDatabaseHelper().Create();

            using (var db = store.OpenSession())
            {
                db.Store(record);
                db.SaveChanges();

                var publishingController = GetTestOpenDataPublishingController(db);

                var request = new AssessmentRequest
                {
                    Id = record.Id
                };

                Action a = () => publishingController.Assess(request);
                a.ShouldThrow <InvalidOperationException>().And.Message.Should().Be("Assessment has already been completed and is up to date");

                var resultRecord = db.Load <Record>(record.Id);
                resultRecord.Publication.Should().NotBeNull();

                var openDataInfo = resultRecord.Publication.OpenData;
                openDataInfo.Should().NotBeNull();
                openDataInfo.Assessment.Completed.Should().BeTrue();
                openDataInfo.Assessment.CompletedByUser.DisplayName.Should().Be("Pete");
                openDataInfo.Assessment.CompletedByUser.Email.Should().Be("*****@*****.**");
                openDataInfo.Assessment.CompletedOnUtc.Should().Be(new DateTime(2017, 07, 21));
                resultRecord.Gemini.MetadataDate.Should().NotBe(openDataInfo.Assessment.CompletedOnUtc);
            }
        }
        public void GetLatestForUser_ShouldReturnAssesmentRequest_WhenGivenExistingUsernameAndAssesmentId()
        {
            #region listOfRequests
            var list = new List <AssessmentRequest>()
            {
                new AssessmentRequest()
                {
                    AssessmentExternalId = 1,
                    CreatedOn            = DateTime.Now,
                    DeletedOn            = null,
                    Id          = 1,
                    IsCompleted = false,
                    IsDeleted   = false,
                    ModifiedOn  = null,
                    QuestionIds = "question ids",
                    User        = new User()
                    {
                        Username = "******"
                    },
                    UserId = 1
                },
                new AssessmentRequest()
                {
                    AssessmentExternalId = 2,
                    CreatedOn            = DateTime.Now,
                    DeletedOn            = null,
                    Id          = 2,
                    IsCompleted = false,
                    IsDeleted   = false,
                    ModifiedOn  = null,
                    QuestionIds = "question ids",
                    User        = new User()
                    {
                        Username = "******"
                    },
                    UserId = 2
                },
                new AssessmentRequest()
                {
                    AssessmentExternalId = 3,
                    CreatedOn            = DateTime.Now,
                    DeletedOn            = null,
                    Id          = 3,
                    IsCompleted = false,
                    IsDeleted   = false,
                    ModifiedOn  = null,
                    QuestionIds = "question ids",
                    User        = new User()
                    {
                        Username = "******"
                    },
                    UserId = 3
                },
            };

            #endregion

            var userPesho = new User();
            userPesho.Username = "******";

            var expectedRequest = new AssessmentRequest();
            expectedRequest.User = userPesho;
            expectedRequest.AssessmentExternalId = 3;

            var assessmentRequestRepositoryMock = new Mock <IRepository <AssessmentRequest> >();
            assessmentRequestRepositoryMock.Setup(x => x.All()).Returns(list.AsQueryable());//

            var sevice = SetupAssessmentsService(assessmentRequestRepositoryMock.Object);
            var result = sevice.GetLatestForUser("Pesho", 3);

            Assert.AreEqual(expectedRequest.AssessmentExternalId, result.AssessmentExternalId);
            Assert.AreEqual(expectedRequest.User.Username, result.User.Username);
        }
示例#22
0
        public void AddFactsForBatchDatastream()
        {
            var rnd          = new System.Random();
            var randomNumber = System.Convert.ToString(rnd.Next(1, 10000));
            var time         = new Time
            {
                Zone       = "GMT",
                Identifier = "time",
                Format     = "iso_8601"
            };
            var datasource = new Datasource
            {
                Type = "PI",
                Host = "https://test.piserver.com/piwebapi",
                ElementTemplateName = "SampleElementTempalte"
            };

            var Signal = new Signal
            {
                ValueIdentifier  = "value",
                SignalIdentifier = "signal"
            };
            var Field = new Field
            {
                Signal           = Signal,
                Time             = time,
                EntityIdentifier = "Unit",
                BatchIdentifier  = "batch"
            };
            var ds = new DatastreamRequest
            {
                Field      = Field,
                DataSource = datasource,
                Name       = "TestDS" + randomNumber
            };

            ds.DataSource = datasource;
            try
            {
                var datastream = _falkonry.CreateDatastream(ds);
                _datastreams.Add(datastream);
                Assert.AreEqual(ds.Name, datastream.Name);
                Assert.AreNotEqual(null, datastream.Id);
                Assert.AreEqual(ds.Field.Time.Format, datastream.Field.Time.Format);
                Assert.AreEqual(ds.Field.Time.Identifier, datastream.Field.Time.Identifier);
                Assert.AreEqual(ds.DataSource.Type, datastream.DataSource.Type);

                datastream = _falkonry.GetDatastream(datastream.Id);

                //add data
                var data    = "time,Unit,current,vibration,state,batch\n2016-05-05T12:00:00.000Z,Unit1,12.4,3.4,On,batch1";
                var options = new SortedDictionary <string, string>
                {
                    { "timeIdentifier", "time" },
                    { "timeFormat", "iso_8601" },
                    { "timeZone", time.Zone },
                    { "streaming", "false" },
                    { "hasMoreData", "false" },
                    { "entityIdentifier", "Unit" },
                    { "batchIdentifier", "batch" }
                };
                var inputstatus = _falkonry.AddInput(datastream.Id, data, options);

                //check data status
                CheckStatus(inputstatus.Id);

                // add assessment
                var asmt          = new AssessmentRequest();
                var randomNumber1 = System.Convert.ToString(rnd.Next(1, 10000));
                asmt.Name       = "TestAssessment" + randomNumber1;
                asmt.Datastream = datastream.Id;
                var optionsFacts = new SortedDictionary <string, string>
                {
                    { "entityIdentifier", datastream.Field.EntityIdentifier },
                    { "valueIdentifier", "Health" },
                    { "batchIdentifier", "Batch" }
                };
                var assessment = _falkonry.CreateAssessment(asmt);

                var data1 = datastream.Field.EntityIdentifier
                            + ",Health,Batch\nUnit1,Normal,batch1\nUnit1,Normal,batch2";
                var response = _falkonry.AddFacts(assessment.Id, data1, optionsFacts);

                //check data status
                CheckStatus(response.Id);
            }
            catch (System.Exception exception)
            {
                Assert.AreEqual(exception.Message, null, "Cannot add facts");
            }
        }
示例#23
0
        public void AddFactsForSingleEntity()
        {
            var rnd          = new System.Random();
            var randomNumber = System.Convert.ToString(rnd.Next(1, 10000));
            var time         = new Time
            {
                Zone       = "GMT",
                Identifier = "time",
                Format     = "iso_8601"
            };
            var datasource = new Datasource
            {
                Type = "PI",
                Host = "https://test.piserver.com/piwebapi",
                ElementTemplateName = "SampleElementTempalte"
            };
            var Signal = new Signal
            {
                ValueIdentifier  = "value",
                SignalIdentifier = "signal"
            };
            var Field = new Field
            {
                Signal = Signal,
                Time   = time
            };
            var ds = new DatastreamRequest
            {
                Field      = Field,
                DataSource = datasource,
                Name       = "TestDS" + randomNumber
            };

            try
            {
                var datastream = _falkonry.CreateDatastream(ds);
                _datastreams.Add(datastream);
                Assert.AreEqual(ds.Name, datastream.Name);
                Assert.AreNotEqual(null, datastream.Id);
                Assert.AreEqual(ds.Field.Time.Format, datastream.Field.Time.Format);
                Assert.AreEqual(ds.Field.Time.Identifier, datastream.Field.Time.Identifier);
                Assert.AreEqual(ds.DataSource.Type, datastream.DataSource.Type);
                Assert.AreEqual(ds.Name, datastream.Field.EntityName);
                Assert.AreEqual(ds.Name, datastream.Field.EntityName);
                datastream = _falkonry.GetDatastream(datastream.Id);

                // add assessment
                var asmt          = new AssessmentRequest();
                var randomNumber1 = System.Convert.ToString(rnd.Next(1, 10000));
                asmt.Name       = "TestAssessment" + randomNumber1;
                asmt.Datastream = datastream.Id;
                var options = new SortedDictionary <string, string>
                {
                    { "startTimeIdentifier", "time" },
                    { "endTimeIdentifier", "end" },
                    { "timeFormat", "iso_8601" },
                    { "timeZone", time.Zone },
                    { "valueIdentifier", "Health" }
                };
                var assessment = _falkonry.CreateAssessment(asmt);

                var data1    = "time,end,Health" + "\n2011-03-31T00:00:00Z,2011-04-01T00:00:00Z,Normal\n2011-03-31T00:00:00Z,2011-04-01T00:00:00Z,Unit1,Normal";
                var response = _falkonry.AddFacts(assessment.Id, data1, options);

                //check data status
                CheckStatus(response.Id);
            }
            catch (System.Exception exception)
            {
                Assert.AreEqual(exception.Message, null, "Cannot add facts");
            }
        }
示例#24
0
        public void AddFactsWithAdditionalKeywordFromStream()
        {
            var rnd          = new System.Random();
            var randomNumber = System.Convert.ToString(rnd.Next(1, 10000));
            var time         = new Time
            {
                Zone       = "GMT",
                Identifier = "time",
                Format     = "iso_8601"
            };
            var datasource = new Datasource
            {
                Type = "PI",
                Host = "https://test.piserver.com/piwebapi",
                ElementTemplateName = "SampleElementTempalte"
            };

            var Signal = new Signal
            {
                ValueIdentifier  = "value",
                SignalIdentifier = "signal"
            };
            var Field = new Field
            {
                Signal = Signal,
                Time   = time
            };
            var ds = new DatastreamRequest
            {
                Field      = Field,
                DataSource = datasource,
                Name       = "TestDS" + randomNumber
            };

            try
            {
                var datastream = _falkonry.CreateDatastream(ds);
                _datastreams.Add(datastream);
                Assert.AreEqual(ds.Name, datastream.Name);
                Assert.AreNotEqual(null, datastream.Id);
                Assert.AreEqual(ds.Field.Time.Format, datastream.Field.Time.Format);
                Assert.AreEqual(ds.Field.Time.Identifier, datastream.Field.Time.Identifier);
                Assert.AreEqual(ds.DataSource.Type, datastream.DataSource.Type);

                datastream = _falkonry.GetDatastream(datastream.Id);

                // add assessment
                var asmt          = new AssessmentRequest();
                var randomNumber1 = System.Convert.ToString(rnd.Next(1, 10000));
                asmt.Name       = "TestAssessment" + randomNumber1;
                asmt.Datastream = datastream.Id;
                var options = new SortedDictionary <string, string>
                {
                    { "startTimeIdentifier", "time" },
                    { "endTimeIdentifier", "end" },
                    { "timeFormat", "iso_8601" },
                    { "timeZone", time.Zone },
                    { "entityIdentifier", "car" },
                    { "valueIdentifier", "Health" },
                    { "additionalKeyword", "testTag" }
                };
                var assessment = _falkonry.CreateAssessment(asmt);
                var folder     = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);
                var path       = folder + "/../../resources/factData.json";
                var bytes      = File.ReadAllBytes(path);
                var response   = _falkonry.AddFactsStream(assessment.Id, bytes, options);

                //check data status
                CheckStatus(response.Id);
            }
            catch (System.Exception exception)
            {
                Assert.AreEqual(exception.Message, null, "Cannot add facts");
            }
        }
示例#25
0
        public void GetFacts()
        {
            var rnd          = new System.Random();
            var randomNumber = System.Convert.ToString(rnd.Next(1, 10000));
            var time         = new Time
            {
                Zone       = "GMT",
                Identifier = "time",
                Format     = "iso_8601"
            };
            var datasource = new Datasource
            {
                Type = "PI",
                Host = "https://test.piserver.com/piwebapi",
                ElementTemplateName = "SampleElementTempalte"
            };
            var ds = new DatastreamRequest();

            var Signal = new Signal
            {
                ValueIdentifier  = "value",
                SignalIdentifier = "signal"
            };
            var Field = new Field
            {
                Signal           = Signal,
                Time             = time,
                EntityIdentifier = "Unit"
            };

            ds.Field      = Field;
            ds.DataSource = datasource;
            ds.Name       = "TestDS" + randomNumber;
            ds.DataSource = datasource;
            try
            {
                var datastream = _falkonry.CreateDatastream(ds);
                _datastreams.Add(datastream);
                Assert.AreEqual(ds.Name, datastream.Name);
                Assert.AreNotEqual(null, datastream.Id);
                Assert.AreEqual(ds.Field.Time.Format, datastream.Field.Time.Format);
                Assert.AreEqual(ds.Field.Time.Identifier, datastream.Field.Time.Identifier);
                Assert.AreEqual(ds.DataSource.Type, datastream.DataSource.Type);

                datastream = _falkonry.GetDatastream(datastream.Id);

                //add data
                var data    = "time,Unit,current,vibration,state\n 2016-05-05T12:00:00.000Z,Unit1,12.4,3.4,On";
                var options = new SortedDictionary <string, string>
                {
                    { "timeIdentifier", "time" },
                    { "timeFormat", "iso_8601" },
                    { "timeZone", time.Zone },
                    { "streaming", "false" },
                    { "hasMoreData", "false" },
                    { "entityIdentifier", "Unit" }
                };
                InputStatus inputstatus = _falkonry.AddInput(datastream.Id, data, options);

                //check data status
                CheckStatus(inputstatus.Id);

                // add assessment
                var asmt          = new AssessmentRequest();
                var randomNumber1 = System.Convert.ToString(rnd.Next(1, 10000));
                asmt.Name       = "TestAssessment" + randomNumber1;
                asmt.Datastream = datastream.Id;
                var assessment = _falkonry.CreateAssessment(asmt);

                var optionsFacts = new SortedDictionary <string, string>
                {
                    { "startTimeIdentifier", "time" },
                    { "endTimeIdentifier", "end" },
                    { "timeFormat", "iso_8601" },
                    { "timeZone", time.Zone },
                    { "entityIdentifier", datastream.Field.EntityIdentifier },
                    { "valueIdentifier", "Health" }
                };

                var data1 = "time,end," + datastream.Field.EntityIdentifier
                            + ",Health\n2011-03-31T00:00:00.000Z,2011-04-01T00:00:00.000Z,Unit1,Normal\n2011-03-31T00:00:00.000Z,2011-04-01T00:00:00.000Z,Unit1,Normal";
                inputstatus = _falkonry.AddFacts(assessment.Id, data1, optionsFacts);

                //check data status
                CheckStatus(inputstatus.Id);

                /// Get Facts
                options = new SortedDictionary <string, string>
                {
                    { "startTime", "2011-03-30T00:00:00.000Z" },
                    { "endTime", "2011-04-01T00:00:00.000Z" },
                    { "responseFormat", "application/json" }
                };
                var factsData = _falkonry.getFacts(assessment.Id, options);
                Assert.AreEqual(factsData.Response.Length > 0, true);
                Assert.AreEqual(factsData.Response.ToLower().Contains(optionsFacts["startTimeIdentifier"].ToLower()), true);
            }
            catch (System.Exception exception)
            {
                Assert.AreEqual(exception.Message, null, "Cannot get facts");
            }
        }