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); }
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)); }
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; } }
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)); } }
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); } }