mirror of
https://github.com/LD-Reborn/Berufsschule_HAM.git
synced 2025-12-20 06:51:55 +00:00
96 lines
3.0 KiB
C#
96 lines
3.0 KiB
C#
using Berufsschule_HAM.Services;
|
|
using Berufsschule_HAM.Models;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
using System.Text.Json;
|
|
using Microsoft.AspNetCore.Authorization;
|
|
using Novell.Directory.Ldap;
|
|
using Berufsschule_HAM.Helpers;
|
|
|
|
[Authorize]
|
|
[Route("[controller]")]
|
|
public class LocationsController : Controller
|
|
{
|
|
private readonly LdapService _ldap;
|
|
private readonly ILogger<LocationsController> _logger;
|
|
|
|
public LocationsController(LdapService ldap, ILogger<LocationsController> logger)
|
|
{
|
|
_ldap = ldap;
|
|
_logger = logger;
|
|
}
|
|
|
|
[HttpGet("Index")]
|
|
public async Task<IEnumerable<LocationModel>> Index()
|
|
{
|
|
IEnumerable<LocationModel> list = await _ldap.ListLocationsAsync();
|
|
return list;
|
|
}
|
|
|
|
[HttpGet("Create")]
|
|
public async Task<bool> Create(LocationsCreateRequestModel model)
|
|
{
|
|
try
|
|
{
|
|
LocationsDescription room = model.LocationsDescription;
|
|
string location = StringHelpers.Slugify(room.Location + " " + room.RoomNumber + " " + room.Seat);
|
|
LdapAttributeSet attributeSet =
|
|
[
|
|
new LdapAttribute("objectClass", "locality"),
|
|
new LdapAttribute("objectClass", "top"),
|
|
new LdapAttribute("l", location),
|
|
new LdapAttribute("description", JsonSerializer.Serialize(room))
|
|
];
|
|
|
|
await _ldap.CreateLocation(attributeSet);
|
|
return true;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
_logger.LogError("Unable to create location: {ex.Message} - {ex.StackTrace}", [ex.Message, ex.StackTrace]);
|
|
return false;
|
|
}
|
|
}
|
|
|
|
[HttpGet("Delete")]
|
|
public async Task<bool> Delete(string cn)
|
|
{
|
|
if (cn is null) { return false; }
|
|
return await Task.Run(async () =>
|
|
{
|
|
try
|
|
{
|
|
await _ldap.DeleteLocationAsync(cn);
|
|
return true;
|
|
}
|
|
catch (Exception)
|
|
{
|
|
return false;
|
|
}
|
|
});
|
|
}
|
|
[HttpPost("Update")]
|
|
public async Task<bool> Update(LocationsModifyRequestModel requestModel)
|
|
{
|
|
if (requestModel is null)
|
|
{
|
|
_logger.LogError("Unable to update a location because the LocationsModifyRequestModel is null");
|
|
return false;
|
|
}
|
|
try
|
|
{
|
|
string location = requestModel.Location;
|
|
LocationsDescription room = requestModel.Description;
|
|
string newLocation = StringHelpers.Slugify(room.Location + " " + room.RoomNumber + " " + room.Seat); // TODO: fix DRY violation
|
|
|
|
await _ldap.UpdateLocation(location, "description", JsonSerializer.Serialize(room));
|
|
await _ldap.UpdateLocation(location, "l", newLocation);
|
|
return true;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
_logger.LogError("Unable to update location: {ex.Message} - {ex.StackTrace}", [ex.Message, ex.StackTrace]);
|
|
return false;
|
|
}
|
|
}
|
|
}
|