示例#1
0
        public async Task <int> CreateQuestionnaire(AthleteQuestionnaireDto questionnaireDto)
        {
            //Map to the Data Entity object
            var questionnaireDb = Mapper.Map <Questionnaire>(questionnaireDto);

            //1. Insert into Questionnaire table
            await _db.InsertAsync(questionnaireDb);

            if (questionnaireDb.Id <= 0)
            {
                return(0);
            }

            //2. Map to the Question entity and save into the DB
            foreach (var dtoQuestion in questionnaireDto.Questions)
            {
                var question = Mapper.Map <Question>(dtoQuestion);

                //2. Write to the DB
                await _db.InsertAsync(question);

                //3. Create relationship between the 2 tables
                var questJoin = new QuestionnaireQuestion()
                {
                    QuestionnaireId = questionnaireDb.Id,
                    QuestionId      = question.Id
                };
                await _db.InsertAsync(questJoin);
            }


            return(questionnaireDb.Id);
        }
示例#2
0
        public async Task <bool> UpdateQuestionnaire(AthleteQuestionnaireDto questionnaireDto)
        {
            //Map to the DB object
            var newRec = Mapper.Map <Questionnaire>(questionnaireDto);

            //Update the database
            return(await _db.UpdateAsync(newRec));
        }
示例#3
0
        public async void CreateQuestionnaireTest()
        {
            try
            {
                var questionnaire = new AthleteQuestionnaireDto()
                {
                    IsEnabled     = true,
                    Name          = $"Test Questionnaire Name #{new Random().Next(1, 100)}",
                    SessionId     = 1,
                    SequenceOrder = 1,
                    StartDateTime = DateTime.UtcNow,
                    EndDateTime   = DateTime.UtcNow.AddYears(1),
                    Questions     = new List <AthleteQuestionDto>()
                    {
                        new AthleteQuestionDto()
                        {
                            Text            = $"Test Question #{new Random().Next(1, 100)}",
                            SequenceOrder   = 1,
                            MinCaptionValue = new KeyValuePair <string, int>("Low", 0),
                            MidCaptionValue = new KeyValuePair <string, int>("Mid", 5),
                            MaxCaptionValue = new KeyValuePair <string, int>("Max", 10),
                        },
                        new AthleteQuestionDto()
                        {
                            Text            = $"Test Question #{new Random().Next(1, 100)}",
                            SequenceOrder   = 2,
                            MinCaptionValue = new KeyValuePair <string, int>("Sad", 0),
                            MidCaptionValue = new KeyValuePair <string, int>("Normal", 5),
                            MaxCaptionValue = new KeyValuePair <string, int>("Happy", 10),
                        }
                    }
                };

                var responses = await _service.CreateQuestionnaire(questionnaire);

                Assert.NotNull(responses);
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                if (e.Message.StartsWith("Sequence contains no matching element"))
                {
                    Console.WriteLine(e.Message);
                }
                throw;
            }
        }
示例#4
0
        public async Task <IActionResult> UpdateQuestionnaire([FromBody, Required] AthleteQuestionnaireDto questionnaireDto)
        {
            try
            {
                if (questionnaireDto == null)
                {
                    return(BadRequest());
                }

                var updatedRows = await _service.UpdateQuestionnaire(questionnaireDto);

                return(CreatedAtRoute("default", updatedRows));
            }
            catch (Exception ex)
            {
                Log.Error(ex, ex.Message);
                return(BadRequest(ex.Message));
            }
        }
示例#5
0
        public async Task BenchmarksQuestionnaire()
        {
            try
            {
                //Insert
                var random        = new Random();
                var ind           = random.Next(1, 1000);
                var questionnaire = new AthleteQuestionnaireDto()
                {
                    IsEnabled     = true,
                    Name          = $"Test Questionnaire Name #{ind}",
                    SessionId     = 1,
                    SequenceOrder = 1,
                    StartDateTime = DateTime.UtcNow,
                    EndDateTime   = DateTime.UtcNow.AddYears(1),
                    Questions     = new List <AthleteQuestionDto>()
                    {
                        new AthleteQuestionDto()
                        {
                            Text            = $"Test Question #{ind}",
                            SequenceOrder   = 1,
                            MinCaptionValue = new KeyValuePair <string, int>("Low", 0),
                            MidCaptionValue = new KeyValuePair <string, int>("Mid", 5),
                            MaxCaptionValue = new KeyValuePair <string, int>("Max", 10),
                        },
                        new AthleteQuestionDto()
                        {
                            Text            = $"Test Question #{ind}",
                            SequenceOrder   = 2,
                            MinCaptionValue = new KeyValuePair <string, int>("Sad", 0),
                            MidCaptionValue = new KeyValuePair <string, int>("Normal", 5),
                            MaxCaptionValue = new KeyValuePair <string, int>("Happy", 10),
                        }
                    }
                };


                var apiCallUrl = $"{this._apibaseUrl}/api/v1/questionnaires";
                var startTime  = DateTime.UtcNow;
                var result     = await PostItemAsync <AthleteQuestionnaireDto>(apiCallUrl, questionnaire);

                if (result.IsSuccessStatusCode)
                {
                    var endTime     = DateTime.UtcNow;
                    var elapsedTime = (endTime - startTime).Milliseconds;

                    //Write the benchmark data
                    await _svcBenchmark.AddBenchmark(new Benchmark
                    {
                        Controller = "Questionnaire",
                        Method     = "CreateQuestionnaire",
                        Operation  = "Insert",
                        Time       = elapsedTime,
                        LastRun    = DateTime.UtcNow
                    });

                    //Clean the test data
                    var questId = await result.Content.ReadAsStringAsync();

                    await _svcQuestionnaire.DeleteQuestionnaire(Int32.Parse(questId));
                }



                //Retrieve all session's questionnaires
                var sessionId = 1;
                apiCallUrl = $"{this._apibaseUrl}/api/v1/questionnaires/list/{sessionId}";
                startTime  = DateTime.UtcNow;
                var questionnaires = await GetItemAsync <List <AthleteQuestionnaireDto> >(apiCallUrl);

                if (questionnaires != null)
                {
                    var endTime     = DateTime.UtcNow;
                    var elapsedTime = (endTime - startTime).Milliseconds;

                    //Write the benchmark data
                    await _svcBenchmark.AddBenchmark(new Benchmark
                    {
                        Controller = "Questionnaire",
                        Method     = "GetSessionQuestionnaires",
                        Operation  = "Join Select",
                        Time       = elapsedTime,
                        LastRun    = DateTime.UtcNow
                    });
                }


                //Retrieve the practice
                int id = 1;
                apiCallUrl = $"{this._apibaseUrl}/api/v1/questionnaires/entity/{id}";
                startTime  = DateTime.UtcNow;
                var dtoQuest = await GetItemAsync <AthleteQuestionnaireDto>(apiCallUrl);

                if (dtoQuest != null)
                {
                    var endTime     = DateTime.UtcNow;
                    var elapsedTime = (endTime - startTime).Milliseconds;

                    //Write the benchmark data
                    await _svcBenchmark.AddBenchmark(new Benchmark
                    {
                        Controller = "Questionnaire",
                        Method     = "GetQuestionnaire",
                        Operation  = "Select by Id",
                        Time       = elapsedTime,
                        LastRun    = DateTime.UtcNow
                    });
                }


                //Update questionnaire
                ind      = random.Next(1, 1000);
                dtoQuest = dtoQuest ?? await _svcQuestionnaire.GetQuestionnaire(1);

                dtoQuest.IsEnabled = true;
                apiCallUrl         = $"{this._apibaseUrl}/api/v1/questionnaires/update";
                startTime          = DateTime.UtcNow;
                result             = await PostItemAsync <AthleteQuestionnaireDto>(apiCallUrl, dtoQuest);

                if (result.IsSuccessStatusCode)
                {
                    var endTime     = DateTime.UtcNow;
                    var elapsedTime = (endTime - startTime).Milliseconds;

                    //Write the benchmark data
                    await _svcBenchmark.AddBenchmark(new Benchmark
                    {
                        Controller = "Questionnaire",
                        Method     = "UpdateQuestionnaire",
                        Operation  = "Update",
                        Time       = elapsedTime,
                        LastRun    = DateTime.UtcNow
                    });
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
            }
        }