Пример #1
0
        /// <summary>
        /// Constructor.
        /// </summary>
        public StudentAssignmentResultViewModel(
            AssignmentGroupResult assignmentGroupResult,
            IAssignmentDisplayProviderFactory displayProviderFactory)
        {
            LastName  = assignmentGroupResult.LastName;
            FirstName = assignmentGroupResult.FirstName;
            Score     = assignmentGroupResult.Score;

            Status = GetColoredText
                     (
                assignmentGroupResult.Status.GetColor(),
                assignmentGroupResult.Status.GetText(),
                assignmentGroupResult.Status.GetBold(),
                preventWrapping: true
                     );

            if (assignmentGroupResult.AssignmentResults.Count == 1)
            {
                var assignmentResult = assignmentGroupResult.AssignmentResults[0];
                var displayProvider  = displayProviderFactory.CreateDisplayProvider
                                       (
                    assignmentResult
                                       );

                ChildTableData = displayProvider.GetChildTableData();
            }
            else
            {
                ChildTableData = assignmentGroupResult.AssignmentResults
                                 .Select
                                 (
                    assignmentResult => new AssignmentResultViewModel
                    (
                        assignmentResult,
                        displayProviderFactory.CreateDisplayProvider(assignmentResult)
                    )
                                 ).Cast <object>().ToList();
            }
        }
        /// <summary>
        /// Constructor.
        /// </summary>
        public AssignmentGroupResultViewModel(
            AssignmentGroupResult result,
            IAssignmentDisplayProviderFactory displayProviderFactory)
        {
            Score = GetColoredText
                    (
                "black",
                $"{result.Score} / {result.TotalPoints}",
                bold: false,
                preventWrapping: true
                    );

            Status = GetColoredText
                     (
                result.Status.GetColor(),
                result.Status.GetText(),
                result.Status.GetBold(),
                preventWrapping: true
                     );

            if (result.AssignmentResults.Count == 1)
            {
                var assignmentResult = result.AssignmentResults[0];
                var displayProvider  = displayProviderFactory.CreateDisplayProvider
                                       (
                    assignmentResult
                                       );

                var assignmentUrl = displayProvider.GetAssignmentUrl();

                AssignmentName = assignmentUrl != null
                                        ? GetLink
                                 (
                    assignmentUrl,
                    result.AssignmentGroupName,
                    preventWrapping : true
                                 )
                                        : GetColoredText
                                 (
                    "black",
                    result.AssignmentGroupName,
                    bold: false,
                    preventWrapping: true
                                 );

                DueDate = GetColoredText
                          (
                    "black",
                    displayProvider.GetAssignmentDueDate(),
                    bold: false,
                    preventWrapping: true
                          );

                ChildTableData = displayProvider.GetChildTableData();
            }
            else
            {
                AssignmentName = GetColoredText
                                 (
                    "black",
                    result.AssignmentGroupName,
                    bold: false,
                    preventWrapping: true
                                 );

                DueDate = result.AssignmentResults.Any(a => a.AssignmentDueDate.HasValue)
                                        ? "Multiple"
                                        : "Unassigned";

                ChildTableData = result.AssignmentResults
                                 .Select
                                 (
                    assignmentResult => new AssignmentResultViewModel
                    (
                        assignmentResult,
                        displayProviderFactory.CreateDisplayProvider(assignmentResult)
                    )
                                 ).Cast <object>().ToList();
            }
        }