Esempio n. 1
0
        public async Task <IActionResult> DeletePicture([FromQuery] string troubleId, [FromQuery] string pictureUrl, CancellationToken cancellationToken)
        {
            if (!pictureUrl.Contains(troubleId))
            {
                var response = new Response
                {
                    StatusCode      = System.Net.HttpStatusCode.BadRequest,
                    ResponseDetails = new ResponseDetails
                    {
                        Code    = ResponseCodes.NotFound,
                        Message = "There is no such image URL for given trouble ID",
                        Target  = nameof(pictureUrl)
                    }
                };

                return(NotFound(response));
            }

            var deleteResult = DeleteFile(pictureUrl);

            if (deleteResult.Code != DeleteCode.Success)
            {
                return(BadRequest(deleteResult.ToResponse()));
            }

            var paths = GetImageUrlsForTrouble(_hostingEnvironment, troubleId);

            var troublePatchInfo = new TroublePatchInfo(TroubleConverterUtils.ConvertId(troubleId), null, null, paths,
                                                        null, null, null, null, null);
            await _troubleRepository.PatchAsync(troublePatchInfo, cancellationToken).ConfigureAwait(false);

            return(Ok(deleteResult));
        }
Esempio n. 2
0
        public async Task <IActionResult> AddPicture(string troubleId, IFormFile picture, CancellationToken cancellationToken)
        {
            var extension = Path.GetExtension(picture.FileName);

            var dir = GetDirName(_hostingEnvironment, troubleId);

            CreateDirectoryIfNotExists(dir);
            var path = $"{dir}/{GetAvailableIdForPicture(dir)}{extension}";

            var response = await UploadPictureAsync(_hostingEnvironment, path, picture, cancellationToken);

            if (response.StatusCode == System.Net.HttpStatusCode.OK)
            {
                var paths            = GetImageUrlsForTrouble(_hostingEnvironment, troubleId);
                var troublePatchInfo = new TroublePatchInfo(TroubleConverterUtils.ConvertId(troubleId), null, null, paths,
                                                            null, null, null, null, null);

                await _troubleRepository.PatchAsync(troublePatchInfo, cancellationToken).ConfigureAwait(false);

                return(Ok(new Picture(path)));
            }
            else
            {
                return(BadRequest(response));
            }
        }
Esempio n. 3
0
        public async Task <IActionResult> DeleteAllPictures([FromQuery] string troubleId, CancellationToken cancellationToken)
        {
            var deleteResults = DeleteAllPicturesForTrouble(_hostingEnvironment, troubleId);

            var paths = new string[] { };

            var troublePatchInfo = new TroublePatchInfo(TroubleConverterUtils.ConvertId(troubleId), null, null, paths,
                                                        null, null, null, null, null);
            await _troubleRepository.PatchAsync(troublePatchInfo, cancellationToken).ConfigureAwait(false);

            foreach (var deleteResult in deleteResults)
            {
                if (deleteResult.Code != DeleteCode.Success)
                {
                    return(BadRequest(deleteResult.ToResponse()));
                }
            }

            return(Ok(deleteResults));
        }