public async Task <Result <Unit> > Handle(Command request, CancellationToken cancellationToken) { var project = await _context.Projects.Include(p => p.Pictures) .FirstOrDefaultAsync(x => x.Id == request.ProjectId); if (project == null) { return(null); } var picture = project.Pictures.FirstOrDefault(x => x.Id == request.Picture.Id); if (picture == null) { return(null); } if (picture.IsMain) { return(Result <Unit> .Failure("You cannot delete your main picture")); } var result = await _pictureAccessor.DeletePicture(picture.Id); if (result == null) { return(Result <Unit> .Failure("Problem deleting picture from Cloudinary")); } project.Pictures.Remove(picture); var success = await _context.SaveChangesAsync() > 0; if (success) { return(Result <Unit> .Success(Unit.Value)); } return(Result <Unit> .Failure("Problem deleting picture from API")); }