Something went wrong. Try again.
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144using Website.Components.Data;using Website.Components.Models;using Microsoft.AspNetCore.Mvc;using Microsoft.EntityFrameworkCore;
namespace Website.Components.Controllers;
[ApiController][Route("[controller]")]public class ImageController : ControllerBase{ ImageContext _imageContext;
public ImageController(ImageContext imageContext) { _imageContext = imageContext; }
[HttpGet] public async Task<ActionResult<List<Image>>> GetAll() { return await _imageContext.Images.AsNoTracking().ToListAsync(); }
[HttpGet("{id}")] public async Task<ActionResult<Image>> GetById(int id) { var image = await _imageContext.Images.AsNoTracking().SingleOrDefaultAsync(x => x.Id == id);
if (image is not null) { return image; } else { return NotFound(); } }
[HttpPost] public async Task<IActionResult> Create(Image newImage) { await _imageContext.Images.AddAsync(newImage); await _imageContext.SaveChangesAsync();
var pizza = newImage; return CreatedAtAction(nameof(GetById), new { id = pizza!.Id }, pizza); }
[HttpPut("{id}/updateevent")] public async Task<IActionResult> UpdateEvent(int id, string desc) { var imageToUpdate = await _imageContext.Images.FindAsync(id);
if (imageToUpdate is not null) { imageToUpdate.Event = desc; await _imageContext.SaveChangesAsync(); return NoContent(); } else { return NotFound(); } }
[HttpDelete("{id}")] public async Task<IActionResult> DeleteById(int id) { var image = await _imageContext.Images.FindAsync(id);
if (image is not null) { _imageContext.Images.Remove(image); _imageContext.SaveChanges(); return Ok(); } else { return NotFound(); } }
[HttpGet("getevent/{Event}")] public async Task<ActionResult<List<int>>> GetEvent(string Event) { return await _imageContext.Images.AsNoTracking().Where(x => x.Event == Event).Select(item => item.Id).ToListAsync(); }
[HttpGet("getImage/{Id}")] public async Task<IActionResult> GetImage(int Id) { var image = await _imageContext.Images.FindAsync(Id); if (image is not null && image.Path is not null && image.Event is not null) { string imagePath = Path.Combine(Directory.GetCurrentDirectory(), "Pictures", image.Event, image.Path);
var stream = new FileStream(imagePath, FileMode.Open, FileAccess.Read); return File(stream, "image/jpeg"); }
return NotFound(); }
[HttpGet("getEventImages/{Event}")] public async Task<ActionResult<List<string>>> GetEventImages (string Event) { List<Image> ids = await _imageContext.Images.AsNoTracking().Where(x => x.Event == Event).ToListAsync(); List<string> urls = new List<string>();
if (ids is not null) { foreach (Image id in ids) { if (id.Path is not null && id.Event is not null) { string imagePath = Path.Combine("C:\\Users\\bachi\\Documents\\code projects\\Website\\Website\\Pictures\\", id.Event, id.Path); byte[] fileBytes = await System.IO.File.ReadAllBytesAsync(imagePath);
// Convert the byte array to a base64 string string base64String = Convert.ToBase64String(fileBytes);
// Set the image source string imageUrl = $"data:image/jpeg;base64,{base64String}";
urls.Add(imageUrl); } } return urls; } else { return NotFound(); }
}
}