Files
cms_thermo_active/Step/Controllers/WebApi/ApiAlarmController.cs
T
Lucio Maranta d85bb1fd0e Added alarm notes
WIP Fanuc tool table
WIP Siemens Active program fix
2018-10-23 17:33:00 +02:00

135 lines
4.8 KiB
C#

using Step.Database.Controllers;
using System;
using System.Collections.Generic;
using System.Security.Claims;
using System.Web.Http;
using static Step.Model.Constants;
using System.Linq;
using Step.Model.DTOModels.MaintenanceModels;
using Step.Model.DTOModels.AlarmModels;
using Step.Model.DatabaseModels;
namespace Step.Controllers.WebApi
{
[RoutePrefix("api/alarm")]
public class ApiAlarmController : ApiController
{
[Route(""), HttpGet]
public IHttpActionResult GetAll(int page, int pageSize)
{
using (AlarmsController alarm = new AlarmsController())
{
var a = alarm.GetPaginated(page, pageSize);
return Ok(a);
}
}
[Route("paginated"), HttpPost]
public IHttpActionResult GetFiltered([FromBody]DTOAlarmsFilterModel data)
{
using (AlarmsController alarm = new AlarmsController())
{
var alarms = alarm.GetPaginatedWithFilter(data.Page - 1, data.PageSize, data.StartDate, data.EndDate, data.UserIds);
return Ok(alarms);
}
}
[Route("data"), HttpPost]
public IHttpActionResult GetAlarmsData(int pageSize)
{
using (AlarmsController alarmController = new AlarmsController())
{
var alarms = alarmController.GetAlarmsData(pageSize);
return Ok(alarms);
}
}
// Note
[Route("{alarmDescId:int}/note"), HttpPost]
[WebApiAuthorize(FunctionAccess = FUNCTIONALITY_NAMES.USER_FUNCTIONS, Action = ACTIONS.WRITE)]
public IHttpActionResult AddAlarmNote(int alarmDescId, DTONewAlarmNoteModel note)
{
if (!ModelState.IsValid)
return BadRequest(ModelState);
var identity = User.Identity as ClaimsIdentity;
// Find user id from the bearer token
var userId = identity.Claims.Where(c => c.Type == USER_ID_KEY).FirstOrDefault();
using (AlarmsController alarmsController = new AlarmsController())
{
// Check if maintenance id
AlarmDescriptionsModel dbMaint = alarmsController.FindById(alarmDescId);
if (dbMaint == null)
return NotFound();
// Update data
DTOAlarmNoteModel notes = alarmsController.CreateNote(Convert.ToInt32(userId.Value), alarmDescId, note);
return Ok(notes);
}
}
[Route("{alarmDescId:int}/note/{noteId:int}"), HttpPut]
[WebApiAuthorize(FunctionAccess = FUNCTIONALITY_NAMES.MAINTENANCE, Action = ACTIONS.WRITE)]
public IHttpActionResult EditAlarmNote(int noteId, DTONewAlarmNoteModel newNote)
{
if (!ModelState.IsValid)
return BadRequest(ModelState);
var identity = User.Identity as ClaimsIdentity;
// Find user id from the bearer token
var userId = identity.Claims.Where(c => c.Type == USER_ID_KEY).FirstOrDefault();
using (AlarmsController alarmsController = new AlarmsController())
{
// Check if maintenance id
AlarmNoteModel dbNote = alarmsController.FindNoteById(noteId);
if (dbNote == null)
return NotFound();
// Check if user is different
if (dbNote.UserId != Convert.ToInt32(userId.Value))
return Unauthorized();
// Update data
DTOAlarmNoteModel notes = alarmsController.UpdateNote(dbNote, newNote);
return Ok(notes);
}
}
[Route("{alarmDescId:int}/note/{noteId:int}"), HttpDelete]
[WebApiAuthorize(FunctionAccess = FUNCTIONALITY_NAMES.MAINTENANCE, Action = ACTIONS.WRITE)]
public IHttpActionResult DeleteAlarmNote(int noteId)
{
if (!ModelState.IsValid)
return BadRequest(ModelState);
var identity = User.Identity as ClaimsIdentity;
// Find user id from the bearer token
var userId = identity.Claims.Where(c => c.Type == USER_ID_KEY).FirstOrDefault();
using (AlarmsController alarmsController = new AlarmsController())
{
// Check if maintenance id
AlarmNoteModel dbNote = alarmsController.FindNoteById(noteId);
if (dbNote == null)
return NotFound();
// Check if user is different
if (dbNote.UserId != Convert.ToInt32(userId.Value))
return Unauthorized();
// Update data
alarmsController.DeleteNote(dbNote.NoteId);
return Ok();
}
}
}
}