Website openantrag.de
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
OpenAntrag/OpenAntrag/Controllers/ProposalApiController.vb

198 lines
6.1 KiB

Imports System.Net
Imports System.Web.Http
Imports System.Net.Http
Public Class ProposalApiController
Inherits ApiController
Public Function GetCount(key As String) As Integer
Select Case key.ToUpper
Case "ALL"
Return Proposals.GetItemsCount()
Case Else
Dim rep As Representation = GlobalData.Representations.GetByKey(key.ToLower)
'Dim lst As List(Of Proposal) = Proposals.GetByRepresentation(rep)
Dim intCount As Integer = Proposals.GetItemsCountByRepresentation(rep)
Return intCount
End Select
End Function
Public Function GetTop(key As String,
count As Integer) As IEnumerable(Of Proposal)
Dim lst As List(Of Proposal)
Select Case key.ToUpper
Case "ALL"
lst = Proposals.GetItemsTop(count)
Case Else
Dim rep As Representation = GlobalData.Representations.GetByKey(key.ToLower)
If rep Is Nothing Then Throw New HttpResponseException(HttpStatusCode.NotFound)
lst = Proposals.GetItemsTopByRepresentation(rep, count)
End Select
For Each ps As Proposal In lst
ps.FillProcessSteps()
Next
Return lst
End Function
Public Function GetPage(key As String,
pageNo As Integer,
pageCount As Integer) As IEnumerable(Of Proposal)
Dim lst As List(Of Proposal)
Select Case key.ToUpper
Case "ALL"
lst = Proposals.GetItemsPage(pageNo, pageCount)
Case Else
Dim rep As Representation = GlobalData.Representations.GetByKey(key.ToLower)
If rep Is Nothing Then Throw New HttpResponseException(HttpStatusCode.NotFound)
lst = Proposals.GetItemsPageByRepresentation(rep, pageNo, pageCount)
End Select
For Each ps As Proposal In lst
ps.FillProcessSteps()
Next
Return lst
End Function
Public Function GetByTag(key As String,
tag As String) As IEnumerable(Of Proposal)
Dim proptag As ProposalTag = ProposalTags.GetTag(tag)
If proptag Is Nothing Then
Throw New HttpResponseException(HttpStatusCode.NotFound)
End If
Dim lst As List(Of Proposal)
Select Case key.ToUpper
Case "ALL"
lst = Proposals.GetItemsByTag(proptag)
Case Else
Dim rep As Representation = GlobalData.Representations.GetByKey(key.ToLower)
If rep Is Nothing Then Throw New HttpResponseException(HttpStatusCode.NotFound)
lst = Proposals.GetItemsByTagAndRepresentation(rep, proptag)
End Select
For Each ps As Proposal In lst
ps.FillProcessSteps()
Next
Return lst
End Function
Public Function GetById(id As String) As Proposal
Dim prop As Proposal = Proposals.GetById(id)
If prop Is Nothing Then
Throw New HttpResponseException(HttpStatusCode.NotFound)
End If
Return prop
End Function
Public Function GetByTitleUrl(key As String,
titleUrl As String) As Proposal
Dim rep As Representation = GlobalData.Representations.GetByKey(key.ToLower)
If rep Is Nothing Then Throw New HttpResponseException(HttpStatusCode.NotFound)
Dim prop As Proposal = Proposals.GetByTitleUrl(rep, titleUrl)
If prop Is Nothing Then
Throw New HttpResponseException(HttpStatusCode.NotFound)
End If
Return prop
End Function
Public Function GetComments(id As String) As IEnumerable(Of ProposalComment)
Dim prop As Proposal = Proposals.GetById(id)
If prop Is Nothing Then
Throw New HttpResponseException(HttpStatusCode.NotFound)
End If
Return prop.ProposalComments
End Function
Public Function GetTags() As IEnumerable(Of String)
Return ProposalTags.TagsList()
End Function
Public Function PostNew(<FromBody()> dto As ProposalDTO) As HttpResponseMessage
Dim rep As Representation = GlobalData.Representations.GetByKey(dto.Key_Representation.ToLower)
If rep Is Nothing Then
Throw New HttpResponseException(Request.CreateErrorResponse(HttpStatusCode.NotFound, "Falscher Representation-Key"))
End If
If rep.ApiKey.Equals(dto.ApiKey) = False Then
Throw New HttpResponseException(Request.CreateErrorResponse(HttpStatusCode.NotFound, "Falscher Api-Key"))
End If
Dim prop As Proposal = Proposals.CreateNew(dto.Key_Representation,
dto.Title,
dto.Text,
dto.TagList,
Nothing)
Dim response = Request.CreateResponse(Of Proposal)(HttpStatusCode.Created, prop)
'Dim uri As String = prop.FullUrl
'response.Headers.Location = New Uri(uri)
Return response
End Function
Public Function PostNextStep(<FromBody()> dto As ProposalNextStepDTO) As HttpResponseMessage
Dim rep As Representation = GlobalData.Representations.GetByKey(dto.Key_Representation.ToLower)
If rep Is Nothing Then
Throw New HttpResponseException(Request.CreateErrorResponse(HttpStatusCode.NotFound, "Falscher Representation-Key"))
End If
Dim prop As Proposal = Proposals.GetById(dto.ID_Proposal)
If prop Is Nothing Then
Throw New HttpResponseException(Request.CreateErrorResponse(HttpStatusCode.NotFound, "Falsche Proposal-ID"))
End If
Proposals.SaveNextStep(prop,
dto.ID_ProcessStep,
dto.InfoText,
dto.Key_Representative,
dto.Key_Committee)
Dim response = Request.CreateResponse(Of Proposal)(HttpStatusCode.Created, prop)
Return response
End Function
End Class