public async Task <IActionResult> GetAll()
        {
            int currentUserId = User.Claims.GetUserId();

            AzureBlobService blobService = new AzureBlobService();
            await blobService.InitializeBlob();

            var quizzes = quizRepository.GetQuizByUserId(currentUserId);

            foreach (var quiz in quizzes)
            {
                quiz.PictureUrl = blobService.urlPath.AbsoluteUri.ToString() + "users/" + quiz.PictureUrl;
            }

            return(Ok(quizzes.Select(quiz => this.entityToVmMapper.Map(quiz))));
        }
        public async Task <IActionResult> Delete(int id)
        {
            int currentUserId = User.Claims.GetUserId();
            var deletedQuiz   = quizRepository.DeleteQuiz(id, currentUserId);

            if (deletedQuiz != null)
            {
                AzureBlobService blobService = new AzureBlobService();
                await blobService.InitializeBlob();

                blobService.DeletePhoto(deletedQuiz.PictureUrl);
                return(Ok());
            }
            else
            {
                return(BadRequest("Deletion Impossible. Quiz does not exist."));
            }
        }
        public async Task <IActionResult> Put(NewQuizViewModel quizBodyData, int id)
        {
            int           currentUserId     = User.Claims.GetUserId();
            IActionResult imageHttpResponse = FileValidityChecker(quizBodyData);

            if (IActionResult.Equals(imageHttpResponse, Ok()))
            {
                return(imageHttpResponse);
            }

            string           fileUrl;
            AzureBlobService blobService;

            try {
                blobService = new AzureBlobService();
                await blobService.InitializeBlob();

                var previousQuizState = quizRepository.GetQuizById(id);

                blobService.DeletePhoto(previousQuizState.PictureUrl);
                fileUrl = await blobService.UploadPhoto(quizBodyData.Files[0]);
            }
            catch (Exception) {
                return(BadRequest("Image could not be uploaded."));
            }

            Quiz updatedQuiz = quizRepository.UpdateQuiz(new Quiz {
                Title      = quizBodyData.Title,
                PictureUrl = fileUrl,
                UserId     = currentUserId,
                Id         = id
            });

            if (updatedQuiz == null)
            {
                return(BadRequest("Quiz does not exist."));
            }

            QuizViewModel quizVm = entityToVmMapper.Map(updatedQuiz);

            quizVm.PictureUrl = blobService.urlPath.AbsoluteUri.ToString() + "users/" + fileUrl;

            return(Ok(new { quizVm.Id, quizVm.Title, quizVm.PictureUrl }));
        }
        public async Task <IActionResult> GetQuiz(int id)
        {
            int currentUserId = User.Claims.GetUserId();

            AzureBlobService blobService = new AzureBlobService();
            await blobService.InitializeBlob();

            Quiz quiz = quizRepository.GetQuizById(id);

            if (quiz == null || quiz.UserId != currentUserId)
            {
                return(NotFound("Quiz doesn't exist"));
            }

            quiz.PictureUrl = blobService.urlPath.AbsoluteUri.ToString() + "users/" + quiz.PictureUrl;
            QuizViewModel quizVm = this.entityToVmMapper.Map(quiz);

            return(Ok(quizVm));
        }