
Option Compare Binary
Option Infer On
Option Strict On
Option Explicit On

Imports ApRiaServices
Imports System
Imports System.Collections.Generic
Imports System.ComponentModel
Imports System.ComponentModel.DataAnnotations
Imports System.Data
Imports System.Linq
Imports System.ServiceModel.DomainServices.EntityFramework
Imports System.ServiceModel.DomainServices.Hosting
Imports System.ServiceModel.DomainServices.Server


'Implementa la lógica de la aplicación mediante el contexto bd_notasAlumnosEntities.
' TODO: agregue la lógica de su aplicación a estos métodos o en métodos adicionales.
' TODO: aplique la autenticación (Windows/ASP.NET Forms) y quite las marcas de comentario de lo siguiente para deshabilitar el acceso anónimo
' Considere además la posibilidad de agregar roles para restringir el acceso según necesidad.
'<RequiresAuthentication> _
<EnableClientAccess()> _
Public Class NotasAlumsDomSvc
  Inherits LinqToEntitiesDomainService(Of bd_notasAlumnosEntities)

  'TODO:
  ' Considere la posibilidad de restringir los resultados de su método de consulta. Si necesita entradas adicionales, puede
  ' agregar parámetros a este método o crear métodos de consulta adicionales con distintos nombres.
  'Para admitir la paginación tendrá que agregar ordenación a la consulta 'alums_asigs'.
  Public Function GetAlums_asigs() As IQueryable(Of alum_asig)
    Return Me.ObjectContext.alums_asigs
  End Function

  Public Function GetNotaAlumAsig(idAlumno As Integer, idAsignatura As Integer) As IQueryable(Of alum_asig)
    Dim notaAsig =
      From al_as In ObjectContext.alums_asigs
      Where al_as.id_alumno = idAlumno AndAlso
      al_as.id_asignatura = idAsignatura
      Select al_as

    Return notaAsig
  End Function

  Public Sub InsertAlum_asig(ByVal alum_asig As alum_asig)
    If ((alum_asig.EntityState = EntityState.Detached) _
                = False) Then
      Me.ObjectContext.ObjectStateManager.ChangeObjectState(alum_asig, EntityState.Added)
    Else
      Me.ObjectContext.alums_asigs.AddObject(alum_asig)
    End If
  End Sub

  Public Sub UpdateAlum_asig(ByVal currentalum_asig As alum_asig)
    Me.ObjectContext.alums_asigs.AttachAsModified(currentalum_asig, Me.ChangeSet.GetOriginal(currentalum_asig))
  End Sub

  Public Sub DeleteAlum_asig(ByVal alum_asig As alum_asig)
    If ((alum_asig.EntityState = EntityState.Detached) _
                = False) Then
      Me.ObjectContext.ObjectStateManager.ChangeObjectState(alum_asig, EntityState.Deleted)
    Else
      Me.ObjectContext.alums_asigs.Attach(alum_asig)
      Me.ObjectContext.alums_asigs.DeleteObject(alum_asig)
    End If
  End Sub

  'TODO:
  ' Considere la posibilidad de restringir los resultados de su método de consulta. Si necesita entradas adicionales, puede
  ' agregar parámetros a este método o crear métodos de consulta adicionales con distintos nombres.
  'Para admitir la paginación tendrá que agregar ordenación a la consulta 'alumnos'.
  Public Function GetAlumnos() As IQueryable(Of alumno)
    Return Me.ObjectContext.alumnos
  End Function

  Public Function GetAlumnosOrd() As IQueryable(Of alumno)
    Return Me.ObjectContext.alumnos.OrderBy(Function(e) e.nombre)
  End Function

  Public Sub InsertAlumno(ByVal alumno As alumno)
    If ((alumno.EntityState = EntityState.Detached) _
                = False) Then
      Me.ObjectContext.ObjectStateManager.ChangeObjectState(alumno, EntityState.Added)
    Else
      Me.ObjectContext.alumnos.AddObject(alumno)
    End If
  End Sub

  Public Sub UpdateAlumno(ByVal currentalumno As alumno)
    Me.ObjectContext.alumnos.AttachAsModified(currentalumno, Me.ChangeSet.GetOriginal(currentalumno))
  End Sub

  Public Sub DeleteAlumno(ByVal alumno As alumno)
    If ((alumno.EntityState = EntityState.Detached) _
                = False) Then
      Me.ObjectContext.ObjectStateManager.ChangeObjectState(alumno, EntityState.Deleted)
    Else
      Me.ObjectContext.alumnos.Attach(alumno)
      Me.ObjectContext.alumnos.DeleteObject(alumno)
    End If
  End Sub

  'TODO:
  ' Considere la posibilidad de restringir los resultados de su método de consulta. Si necesita entradas adicionales, puede
  ' agregar parámetros a este método o crear métodos de consulta adicionales con distintos nombres.
  'Para admitir la paginación tendrá que agregar ordenación a la consulta 'asignaturas'.
  Public Function GetAsignaturas() As IQueryable(Of asignatura)
    Return Me.ObjectContext.asignaturas
  End Function

  Public Function GetAsignaturasAlum(idAlumno As Integer) As IQueryable(Of asignatura)
    Dim alumAsigs =
      From al_as In ObjectContext.alums_asigs
      From asig In ObjectContext.asignaturas
      Where al_as.id_alumno = idAlumno AndAlso
            al_as.id_asignatura = asig.id_asignatura
      Select asig

    Return alumAsigs
  End Function

  Public Sub InsertAsignatura(ByVal asignatura As asignatura)
    If ((asignatura.EntityState = EntityState.Detached) _
                = False) Then
      Me.ObjectContext.ObjectStateManager.ChangeObjectState(asignatura, EntityState.Added)
    Else
      Me.ObjectContext.asignaturas.AddObject(asignatura)
    End If
  End Sub

  Public Sub UpdateAsignatura(ByVal currentasignatura As asignatura)
    Me.ObjectContext.asignaturas.AttachAsModified(currentasignatura, Me.ChangeSet.GetOriginal(currentasignatura))
  End Sub

  Public Sub DeleteAsignatura(ByVal asignatura As asignatura)
    If ((asignatura.EntityState = EntityState.Detached) _
                = False) Then
      Me.ObjectContext.ObjectStateManager.ChangeObjectState(asignatura, EntityState.Deleted)
    Else
      Me.ObjectContext.asignaturas.Attach(asignatura)
      Me.ObjectContext.asignaturas.DeleteObject(asignatura)
    End If
  End Sub
End Class

