public async Task <IActionResult> AddGradedItem(
            [FromRoute] int courseId,
            [FromBody] GradedItemRequest gradedItemRequest)
        {
            var now        = DateTime.UtcNow;
            var gradedItem = new GradedItem
            {
                Name      = gradedItemRequest.Name,
                Grade     = gradedItemRequest.Grade,
                CreatedOn = now,
                UpdatedOn = now,
                CourseId  = courseId
            };

            try
            {
                await _gradedItemService.AddGradedItemToCourse(courseId, gradedItem);

                return(Ok($"Graded Item added to course with id: {courseId}"));
            }
            catch (InvalidOperationException ex)
            {
                return(NotFound(ex.Message));
            }
        }
        public async Task <IActionResult> UpdateGradedItemFromCourse(
            [FromRoute] int courseId,
            [FromRoute] int gradedItemId,
            [FromBody] GradedItemRequest gradedItemRequest)
        {
            var now = DateTime.UtcNow;

            try
            {
                var gradedItemToUpdate =
                    await _gradedItemService.GetGradedItemFromCourse(courseId, gradedItemId);

                if (gradedItemToUpdate == null)
                {
                    return(NotFound($"Graded Item with Id: {gradedItemId} does not exist"));
                }

                gradedItemToUpdate.Name      = gradedItemRequest.Name;
                gradedItemToUpdate.Grade     = gradedItemRequest.Grade;
                gradedItemToUpdate.UpdatedOn = now;

                await _gradedItemService.UpdateGradedItemFromCourse(courseId, gradedItemToUpdate);

                return(Ok($"Graded Item with id: {gradedItemId} updated"));
            }
            catch (InvalidOperationException ex)
            {
                return(NotFound(ex.Message));
            }
        }