public async Task <IActionResult> CreateQuiz([FromForm] QuizInfoForCreationDto inputQuizInfo) { if (inputQuizInfo == null) { return(BadRequest(Constants.QuizDataEmpty)); } var quizInfoEntity = mapper.Map <QuizInfo>(inputQuizInfo); if (inputQuizInfo.PreviewImage != null) { if (!FileUtils.IsPreviewValid(inputQuizInfo.PreviewImage)) { return(BadRequest(Constants.InvalidImage)); } quizInfoEntity.PreviewPath = await FileUtils.SaveAsync(DirType.Previews, inputQuizInfo.PreviewImage); } string queryParam = RandomGenerator.GenerateHexKey(); quizInfoEntity.TemporaryLink = queryParam; quizInfoEntity.CreatedAt = DateTime.Now; if (quizInfoEntity.OwnerId == null) { return(BadRequest(Constants.OwnerNull)); } /*Will be changed in the future accroding to User Identity */ quizInfoEntity.Owner = manager.Repository <User>().FindBy(u => u.Id == quizInfoEntity.OwnerId).SingleOrDefault(); string mongoId = RandomGenerator.GenerateHexKey(); quizInfoEntity.QuizId = mongoId; await manager.Repository <QuizInfo>().Create(quizInfoEntity); manager.Save(); mongoId = mongo.Create(mongoId); if (string.IsNullOrEmpty(mongoId)) { return(BadRequest(Constants.MongoDbCreationFailure(nameof(Entities.Models.Mongo.Quiz)))); } var result = mapper.Map <QuizInfoForOwnerDto>(quizInfoEntity); var request = HttpContext.Request; result.TemporaryLink = LinkUtils.GenerateTemporaryLink(request.IsHttps, request.Host.Value, request.Path, queryParam); // It will be changed according to the User Identity result.HasAccessToEdit = true; return(CreatedAtRoute("QuizInfoById", new { id = result.Id }, result)); }
public async Task <IActionResult> UpdateQuiz(Guid id, [FromForm] QuizInfoForCreationDto updatedQuizInfo) { if (updatedQuizInfo == null) { return(BadRequest(Constants.QuizDataEmpty)); } var oldQuizInfo = manager.Repository <QuizInfo>().FindBy(q => q.Id == id).SingleOrDefault(); if (oldQuizInfo == null) { return(BadRequest(Constants.QuizDoesNotExist(id))); } var quizInfoEntity = mapper.Map <QuizInfo>(updatedQuizInfo); if (updatedQuizInfo.PreviewImage != null) { if (!FileUtils.IsPreviewValid(updatedQuizInfo.PreviewImage)) { return(BadRequest(Constants.InvalidImage)); } quizInfoEntity.PreviewPath = await FileUtils.UpdateAsync(DirType.Previews, oldQuizInfo.PreviewPath, updatedQuizInfo.PreviewImage); } else { FileUtils.Remove(oldQuizInfo.PreviewPath); quizInfoEntity.PreviewPath = string.Empty; } //Possible replacements in the future quizInfoEntity.Id = id; quizInfoEntity.OwnerId = oldQuizInfo.OwnerId; quizInfoEntity.Owner = oldQuizInfo.Owner; quizInfoEntity.UpdatedAt = DateTime.Now; quizInfoEntity.TemporaryLink = oldQuizInfo.TemporaryLink; quizInfoEntity.QuizId = oldQuizInfo.QuizId; manager.Detach(); manager.Repository <QuizInfo>().Update(quizInfoEntity); manager.Save(); return(NoContent()); }