private async Task PerformServerValidationsAsync(ProjectViewModel project, IssueViewModel newIssue, IssueListModel oldIssue = null) { if (project.Issues.Any(i => i.Title == newIssue.Title && i.Id != newIssue.Id)) { ModelState.AddModelError(nameof(newIssue.Title), "Project already has an issue with this Title"); } if (oldIssue == null && newIssue.DueDate <= DateTime.Today || oldIssue?.DueDate != newIssue.DueDate && newIssue.DueDate <= DateTime.Today) { ModelState.AddModelError(nameof(newIssue.DueDate), "Date must be in the future"); } if (project.Priorities.All(p => p != newIssue.Priority)) { ModelState.AddModelError(nameof(newIssue.Priority), "Priority is not valid for this Project"); } if (!await labels.LabelsExistInProjectAsync(project.Id.Value, newIssue.SelectedLabelIds)) { ModelState.AddModelError(nameof(newIssue.SelectedLabelIds), "Not all Labels are valid for this Project"); } if (oldIssue != null && !GetAvailableStatuses(oldIssue.Status).Contains(newIssue.Status)) { ModelState.AddModelError(nameof(newIssue.Status), "Status transition is not valid"); } }
public ActionResult List() { List <Issue> issues = new List <Issue>(); List <string>[] values; MySqlTableModel issueTable = SqlTables.Issues; values = MySqlCrud.SelectAllRows(SqlConnections.IssueWebsite, issueTable.Table, issueTable.Collumns); /* * idIssues DEFAULT(int) * project name * severity string * datediscovered string XX/XX/XXXX * time discovered string XX:XX:XX * projectedmanhours float * projectedcost float * shortdescription string * location string * popularity int * description string */ int r = 0; foreach (var i in values[0]) { int issueId; Int32.TryParse(values[0][r], out issueId); string project = values[1][r]; //100 MaxChars string severity = values[2][r]; //45 MaxChars string datediscovered = values[3][r]; //45 MaxChars string timediscovered = values[4][r]; //45 MaxChars int pmhTemp; Int32.TryParse(values[5][r], out pmhTemp); float projectedmanhours = (float)pmhTemp; int pcTemp; Int32.TryParse(values[6][r], out pcTemp); float projectedcost = (float)pcTemp; string shortdescription = values[7][r]; //100 MaxChars string location = values[8][r]; //45 MaxChars int popularity; Int32.TryParse(values[9][r], out popularity); string description = values[10][r]; //300 MaxChars Issue ish = new Issue() { Project = project, Severity = severity, DateDiscovered = datediscovered, TimeDiscovered = timediscovered, ProjectedManHours = projectedmanhours, ProjectedCost = projectedcost, ShortDescription = shortdescription, Location = location, Popularity = popularity, Description = description }; issues.Add(ish); r++; } IssueListModel IssueListModel = new IssueListModel() { Issues = issues }; return(View(IssueListModel)); }