Files
StellarDynamics-Naming-Conv…/Controllers/ResourceComponentsController.cs
2023-06-23 12:34:12 -05:00

136 lines
4.7 KiB
C#

using AzureNamingTool.Attributes;
using AzureNamingTool.Helpers;
using AzureNamingTool.Models;
using AzureNamingTool.Services;
using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
// For more information on enabling Web API for empty projects, visit https://go.microsoft.com/fwlink/?LinkID=397860
namespace AzureNamingTool.Controllers
{
[Route("api/[controller]")]
[ApiController]
[ApiKey]
public class ResourceComponentsController : ControllerBase
{
private ServiceResponse serviceResponse = new();
// GET: api/<resourcecomponentsController>
/// <summary>
/// This function will return the components data.
/// </summary>
/// <param name="admin">bool - All/Only-enabled components flag</param>
/// <returns>json - Current components data</returns>
[HttpGet]
public async Task<IActionResult> Get(bool admin = false)
{
try
{
serviceResponse = await ResourceComponentService.GetItems(admin);
if (serviceResponse.Success)
{
return Ok(serviceResponse.ResponseObject);
}
else
{
return BadRequest(serviceResponse.ResponseObject);
}
}
catch (Exception ex)
{
AdminLogService.PostItem(new AdminLogMessage() { Title = "ERROR", Message = ex.Message });
return BadRequest(ex);
}
}
// GET api/<resourcecomponentsController>/5
/// <summary>
/// This function will return the specifed resource component data.
/// </summary>
/// <param name="id">int - Resource Component id</param>
/// <returns>json - Resource component data</returns>
[HttpGet("{id:int}")]
public async Task<IActionResult> Get(int id)
{
try
{
// Get list of items
serviceResponse = await ResourceComponentService.GetItem(id);
if (serviceResponse.Success)
{
return Ok(serviceResponse.ResponseObject);
}
else
{
return BadRequest(serviceResponse.ResponseObject);
}
}
catch (Exception ex)
{
AdminLogService.PostItem(new AdminLogMessage() { Title = "ERROR", Message = ex.Message });
return BadRequest(ex);
}
}
// POST api/<ResourceComponentsController>
/// <summary>
/// This function will create/update the specified component data.
/// </summary>
/// <param name="item">ResourceComponent (json) - Component data</param>
/// <returns>bool - PASS/FAIL</returns>
[HttpPost]
public async Task<IActionResult> Post([FromBody] ResourceComponent item)
{
try
{
serviceResponse = await ResourceComponentService.PostItem(item);
if (serviceResponse.Success)
{
return Ok(serviceResponse.ResponseObject);
}
else
{
return BadRequest(serviceResponse.ResponseObject);
}
}
catch (Exception ex)
{
AdminLogService.PostItem(new AdminLogMessage() { Title = "ERROR", Message = ex.Message });
return BadRequest(ex);
}
}
// POST api/<ResourceEnvironmentsController>
/// <summary>
/// This function will update all components data.
/// </summary>
/// <param name="items">List - ResourceComponent (json) - All components configuration data</param>
/// <returns>bool - PASS/FAIL</returns>
[HttpPost]
[Route("[action]")]
public async Task<IActionResult> PostConfig([FromBody] List<ResourceComponent> items)
{
try
{
serviceResponse = await ResourceComponentService.PostConfig(items);
if (serviceResponse.Success)
{
return Ok(serviceResponse.ResponseObject);
}
else
{
return BadRequest(serviceResponse.ResponseObject);
}
}
catch(Exception ex)
{
AdminLogService.PostItem(new AdminLogMessage() { Title = "ERROR", Message = ex.Message });
return BadRequest(ex);
}
}
}
}