Пример #1
0
        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));
        }
Пример #2
0
        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());
        }