using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using Freiberufler;
using Freiberufler.Models;
namespace Freiberufler.Controllers.Api
{
[Produces("application/json")]
[Route("api/Projects")]
public class ProjectsController : Controller
{
private readonly app_Database_Context _context;
#region Class
public
ProjectsController(app_Database_Context context)
{
_context = context;
}
#endregion
#region API
//--------------------< region: API
Methods >--------------------
//
GET-all: api/Projects *List all Records
[HttpGet]
public IEnumerable<Project>
Gettbl_Projects()
{
//------------< Gettbl_Projects()
>------------
return _context.tbl_Projects;
//------------</ Gettbl_Projects()
>------------
}
// GET-1:
api/Projects/5 *SELECT 1 Record
[HttpGet("{id}")]
public async Task<IActionResult>
GetProject([FromRoute] int id)
{
//------------< GetProject(ID)
>------------
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
//< get recordset from db >
var project = await
_context.tbl_Projects.SingleOrDefaultAsync(m => m.ID_Project == id);
//</ get recordset from db >
if (project == null)
{
return NotFound();
}
return Ok(project);
//------------</ GetProject(ID)
>------------
}
//
PUT-Update: api/Projects/5 *UPDADTE
Save Recordset
[HttpPut("{id}")]
public async Task<IActionResult>
PutProject([FromRoute] int id,
[FromBody] Project clientApi_Project)
{
//------------<
PutProject(ID,Project) >------------
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
if (id != clientApi_Project.ID_Project)
{
return BadRequest();
}
//< get recordset from db >
var serverProject = await
_context.tbl_Projects.SingleOrDefaultAsync(m => m.ID_Project == id);
//</ get recordset from db >
if (serverProject == null)
{
return NotFound();
}
//< SET Values >
serverProject.Text =
clientApi_Project.Text;
serverProject.Title =
clientApi_Project.Title;
serverProject.DtEdit =
DateTime.Now;
//</ SET Values >
//-< save >-
try
{
await _context.SaveChangesAsync();
}
//< error >
catch (DbUpdateConcurrencyException)
{
if (!ProjectExists(id))
{
return NotFound();
}
else
{
throw;
}
}
//</ error >
//-</ save >-
//< result >
//return NoContent();
return Ok();
//</ result >
//------------</ PutProject(ID,Project)
>------------
}
//
POST-NEW: api/Projects *CREATE NEW
Recordset
[HttpPost]
public async Task<IActionResult>
Create_NewProject([FromBody] Project clientApi_Project)
{
//------------<
Create_NewProject(Project) >------------
//public async Task<IActionResult>
PostProject([FromBody] Project project)
//*NEW Project
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
//< check ID >
if (clientApi_Project.ID_Project!=0)
{
return BadRequest("ID not null or 0");
}
//</ check ID >
//< Correct Data >
clientApi_Project.DtCreated =
DateTime.Now;
//< Correct Data >
//< add Recordset >
//*add
_context.tbl_Projects.Add(clientApi_Project);
await _context.SaveChangesAsync();
//</ add Recordset >
//< return >
return CreatedAtAction("GetProject", new { id = clientApi_Project.ID_Project },
clientApi_Project);
//</ return >
//------------</
Create_NewProject(Project) >------------
}
// DELETE:
api/Projects/5 *DELETE by ID
[HttpDelete("{id}")]
public async Task<IActionResult>
DeleteProject([FromRoute] int id)
{
//------------< DeleteProject(ID)
>------------
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
var project = await
_context.tbl_Projects.SingleOrDefaultAsync(m => m.ID_Project == id);
if (project == null)
{
return NotFound();
}
_context.tbl_Projects.Remove(project);
await _context.SaveChangesAsync();
return Ok(project);
//------------</ DeleteProject(ID)
>------------
}
//--------------------</
region: API Methods >--------------------
#endregion / API
#region Sys Methods
//--------------------<
region: Sys Methods >--------------------
private bool ProjectExists(int id)
{
return _context.tbl_Projects.Any(e =>
e.ID_Project == id);
}
//--------------------</
region: Sys Methods >--------------------
#endregion /Sys Methods
}
}
|