Skip to content

Commit 2d36c91

Browse files
committed
RE1-T112 PR#321 fixes
1 parent 82ffa47 commit 2d36c91

3 files changed

Lines changed: 31 additions & 14 deletions

File tree

Providers/Resgrid.Providers.Weather/EnvironmentCanadaWeatherAlertProvider.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -103,10 +103,10 @@ private async Task<List<string>> FetchCapUrlsFromFeedAsync(string feedUrl, Cance
103103
{
104104
var capUrls = new List<string>();
105105

106-
var request = new HttpRequestMessage(HttpMethod.Get, feedUrl);
106+
using var request = new HttpRequestMessage(HttpMethod.Get, feedUrl);
107107
request.Headers.UserAgent.ParseAdd("Resgrid/1.0 (weather-alerts)");
108108

109-
var response = await _httpClient.SendAsync(request, ct);
109+
using var response = await _httpClient.SendAsync(request, ct);
110110
response.EnsureSuccessStatusCode();
111111

112112
var content = await response.Content.ReadAsStringAsync();
@@ -143,10 +143,10 @@ private async Task<List<WeatherAlert>> FetchAndParseCapDocumentAsync(string capU
143143
{
144144
var alerts = new List<WeatherAlert>();
145145

146-
var request = new HttpRequestMessage(HttpMethod.Get, capUrl);
146+
using var request = new HttpRequestMessage(HttpMethod.Get, capUrl);
147147
request.Headers.UserAgent.ParseAdd("Resgrid/1.0 (weather-alerts)");
148148

149-
var response = await _httpClient.SendAsync(request, ct);
149+
using var response = await _httpClient.SendAsync(request, ct);
150150
response.EnsureSuccessStatusCode();
151151

152152
var xml = await response.Content.ReadAsStringAsync();

Web/Resgrid.Web/Areas/User/Controllers/TrainingsController.cs

Lines changed: 26 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,10 @@ public async Task<IActionResult> New(NewTrainingModel model, IFormCollection for
162162

163163
if (ModelState.IsValid)
164164
{
165-
List<int> questions = (from object key in form.Keys where key.ToString().StartsWith("question_") select int.Parse(key.ToString().Replace("question_", ""))).ToList();
165+
List<int> questions = form.Keys
166+
.Where(k => k.StartsWith("question_"))
167+
.Select(k => { var s = k.Replace("question_", ""); return int.TryParse(s, out var v) ? (int?)v : null; })
168+
.Where(v => v.HasValue).Select(v => v.Value).ToList();
166169

167170
if (questions.Count > 0)
168171
model.Training.Questions = new Collection<TrainingQuestion>();
@@ -185,7 +188,11 @@ public async Task<IActionResult> New(NewTrainingModel model, IFormCollection for
185188
var question = new TrainingQuestion();
186189
question.Question = questionText;
187190

188-
List<int> answers = (from object key in form.Keys where key.ToString().StartsWith("answerForQuestion_" + i + "_") select int.Parse(key.ToString().Replace("answerForQuestion_" + i + "_", ""))).ToList();
191+
var answerPrefix1 = "answerForQuestion_" + i + "_";
192+
List<int> answers = form.Keys
193+
.Where(k => k.StartsWith(answerPrefix1))
194+
.Select(k => { var s = k.Replace(answerPrefix1, ""); return int.TryParse(s, out var v) ? (int?)v : null; })
195+
.Where(v => v.HasValue).Select(v => v.Value).ToList();
189196

190197
if (answers.Count > 0)
191198
question.Answers = new Collection<TrainingQuestionAnswer>();
@@ -366,9 +373,9 @@ public async Task<IActionResult> Edit(int trainingId, EditTrainingModel model, I
366373

367374
foreach (var group in groups)
368375
{
369-
if (!string.IsNullOrWhiteSpace(group))
376+
if (!string.IsNullOrWhiteSpace(group) && int.TryParse(group, out var groupId))
370377
{
371-
var members = await _departmentGroupsService.GetAllMembersForGroupAsync(int.Parse(group));
378+
var members = await _departmentGroupsService.GetAllMembersForGroupAsync(groupId);
372379

373380
foreach (var member in members)
374381
{
@@ -387,9 +394,9 @@ public async Task<IActionResult> Edit(int trainingId, EditTrainingModel model, I
387394

388395
foreach (var role in roles)
389396
{
390-
if (!string.IsNullOrWhiteSpace(role))
397+
if (!string.IsNullOrWhiteSpace(role) && int.TryParse(role, out var roleId))
391398
{
392-
var roleMembers = await _personnelRolesService.GetAllMembersOfRoleAsync(int.Parse(role));
399+
var roleMembers = await _personnelRolesService.GetAllMembersOfRoleAsync(roleId);
393400

394401
foreach (var member in roleMembers)
395402
{
@@ -425,7 +432,10 @@ public async Task<IActionResult> Edit(int trainingId, EditTrainingModel model, I
425432
else
426433
existingTraining.Questions.Clear();
427434

428-
List<int> questions = (from object key in form.Keys where key.ToString().StartsWith("question_") select int.Parse(key.ToString().Replace("question_", ""))).ToList();
435+
List<int> questions = form.Keys
436+
.Where(k => k.StartsWith("question_"))
437+
.Select(k => { var s = k.Replace("question_", ""); return int.TryParse(s, out var v) ? (int?)v : null; })
438+
.Where(v => v.HasValue).Select(v => v.Value).ToList();
429439

430440
foreach (var i in questions)
431441
{
@@ -436,7 +446,11 @@ public async Task<IActionResult> Edit(int trainingId, EditTrainingModel model, I
436446
question.Question = questionText;
437447
question.TrainingId = trainingId;
438448

439-
List<int> answers = (from object key in form.Keys where key.ToString().StartsWith("answerForQuestion_" + i + "_") select int.Parse(key.ToString().Replace("answerForQuestion_" + i + "_", ""))).ToList();
449+
var answerPrefix = "answerForQuestion_" + i + "_";
450+
List<int> answers = form.Keys
451+
.Where(k => k.StartsWith(answerPrefix))
452+
.Select(k => { var s = k.Replace(answerPrefix, ""); return int.TryParse(s, out var v) ? (int?)v : null; })
453+
.Where(v => v.HasValue).Select(v => v.Value).ToList();
440454

441455
if (answers.Count > 0)
442456
question.Answers = new Collection<TrainingQuestionAnswer>();
@@ -510,7 +524,10 @@ public async Task<IActionResult> Quiz(ViewTrainingModel model, IFormCollection f
510524
if (training == null)
511525
return NotFound();
512526

513-
List<int> questions = (from object key in form.Keys where key.ToString().StartsWith("question_") select int.Parse(key.ToString().Replace("question_", ""))).ToList();
527+
List<int> questions = form.Keys
528+
.Where(k => k.StartsWith("question_"))
529+
.Select(k => { var s = k.Replace("question_", ""); return int.TryParse(s, out var v) ? (int?)v : null; })
530+
.Where(v => v.HasValue).Select(v => v.Value).ToList();
514531

515532
foreach (var questionId in questions)
516533
{

Web/Resgrid.Web/wwwroot/js/app/internal/training/resgrid.training.edittraining.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ var resgrid;
8888
function addQuestion() {
8989
var removeTooltip = escapeHtml(i18n.removeQuestionTooltip || 'Remove this question');
9090
resgrid.training.edittraining.questionsCount++;
91-
$('#questions tbody').first().append("<tr><td style='max-width: 215px;'><textarea id='question_" + edittraining.questionsCount + "' name='question_" + edittraining.questionsCount + "' rows='4' cols='40'></textarea></td><td>" + resgrid.training.edittraining.generateAnswersTable(edittraining.questionsCount) + "</td><td style='text-align:center;'><a onclick='$(this).parent().parent().remove();' class='tip-top' data-original-title='" + removeTooltip + "'><i class='fa fa-minus' style='color: red;'></i></a></td></tr>");
91+
$('#questions tbody').first().append("<tr id='questionRow_" + edittraining.questionsCount + "'><td style='max-width: 215px;'><textarea id='question_" + edittraining.questionsCount + "' name='question_" + edittraining.questionsCount + "' rows='4' cols='40'></textarea></td><td>" + resgrid.training.edittraining.generateAnswersTable(edittraining.questionsCount) + "</td><td style='text-align:center;'><a onclick='resgrid.training.edittraining.removeQuestion(" + edittraining.questionsCount + ");' class='tip-top' data-original-title='" + removeTooltip + "'><i class='fa fa-minus' style='color: red;'></i></a></td></tr>");
9292
}
9393
edittraining.addQuestion = addQuestion;
9494
function generateAnswersTable(count) {

0 commit comments

Comments
 (0)