public async Task <IActionResult> PostResourceModuleMappingAsync(ResourceModuleViewModel resourceLearningModuleDetail)
        {
            this.RecordEvent("Resource module - HTTP post call initiated.", RequestType.Initiated);
            this.logger.LogInformation("Resource module - HTTP post call initiated.");

            try
            {
                var existingModuleResourceMapping =
                    await this.unitOfWork.ResourceModuleRepository
                    .FindAsync(resourceModuleMapping => resourceModuleMapping.ResourceId == resourceLearningModuleDetail.ResourceId && resourceModuleMapping.LearningModuleId == resourceLearningModuleDetail.LearningModuleId);

                if (existingModuleResourceMapping.Any())
                {
                    this.RecordEvent("Resource module - HTTP post call failed.", RequestType.Failed);
                    return(this.Conflict());
                }

                var resourceLearningModuleEntityModel = this.resourceModuleMapper.MapToDTO(resourceLearningModuleDetail);
                this.unitOfWork.ResourceModuleRepository.Add(resourceLearningModuleEntityModel);
                await this.unitOfWork.SaveChangesAsync();

                this.RecordEvent("Resource module - HTTP post call succeeded.", RequestType.Succeeded);
                return(this.Ok(true));
            }
            catch (Exception ex)
            {
                this.RecordEvent("Resource module - HTTP post call failed.", RequestType.Failed);
                this.logger.LogError(ex, "Error while saving resource module mapping details.");
                throw;
            }
        }
Beispiel #2
0
        /// <summary>
        /// Gets resource module model from view model.
        /// </summary>
        /// <param name="resourceModuleViewModel">Resource module entity view model object.</param>
        /// <returns>Returns a resource module entity model object.</returns>
        public ResourceModuleMapping MapToDTO(
            ResourceModuleViewModel resourceModuleViewModel)
        {
            resourceModuleViewModel = resourceModuleViewModel ?? throw new ArgumentNullException(nameof(resourceModuleViewModel));

            return(new ResourceModuleMapping
            {
                ResourceId = resourceModuleViewModel.ResourceId,
                LearningModuleId = resourceModuleViewModel.LearningModuleId,
                CreatedOn = DateTimeOffset.Now,
            });
        }
        public async Task PostResourceModuleMappingAsync_SaveResourceModuleMapping_ReturnsOkResult()
        {
            // ARRANGE
            var learningModuleId        = Guid.NewGuid();
            var resourceId              = Guid.NewGuid();
            var resourceModuleViewModel = new ResourceModuleViewModel
            {
                LearningModuleId = learningModuleId,
                ResourceId       = resourceId,
            };

            this.unitOfWork.Setup(uow => uow.ResourceModuleRepository.Add(It.IsAny <ResourceModuleMapping>())).Returns(() => null);

            // ACT
            var result = (ObjectResult)await this.learningModuleController.PostResourceModuleMappingAsync(resourceModuleViewModel);

            var resultValue = (bool)result.Value;

            // ASSERT
            Assert.AreEqual(result.StatusCode, StatusCodes.Status200OK);
            Assert.AreEqual(resultValue, true);
        }