Y2S2-Syski/syski_api/uk.co.syski.api/Controllers/OSsController.cs

65 lines
1.8 KiB
C#
Raw Permalink Normal View History

2020-06-09 20:02:14 +00:00
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Syski.API.Models;
using Syski.Data;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.Claims;
namespace Syski.API.Controllers
{
[ApiController]
public class OSsController : ControllerBase
{
private readonly SyskiDBContext context;
public OSsController(SyskiDBContext context)
{
this.context = context;
}
[Authorize]
[HttpGet("/system/{systemId}/operatingsystem")]
public IActionResult GetOSs(Guid systemId)
{
var applicationUserSystem = context.ApplicationUserSystems.FirstOrDefault(u => u.User.Email.Equals(((ClaimsIdentity) User.Identity).FindFirst("email").Value) && u.SystemId.Equals(systemId));
if (applicationUserSystem == null)
return NotFound();
var SystemOSs = context.SystemOSs.Where(so => so.SystemId == systemId).ToList();
var OSDTOs = new List<OSDTO>();
foreach (var item in SystemOSs)
{
OSDTOs.Add(CreateOSDTO(item));
}
return Ok(OSDTOs);
}
private OSDTO CreateOSDTO(SystemOS systemOS)
{
var OperatingSystem = context.OperatingSystemModels.Find(systemOS.OperatingSystemId);
var OSDTO = new OSDTO()
{
Id = systemOS.OperatingSystemId,
Name = OperatingSystem.Name,
Version = systemOS.Version
};
if (systemOS.ArchitectureId != null)
{
var architecture = context.Architectures.Find(systemOS.ArchitectureId);
OSDTO.ArchitectureName = architecture.Name;
}
return OSDTO;
}
}
}