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)); }
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)); } }
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)); }