135 lines
5.8 KiB
C#
135 lines
5.8 KiB
C#
using System.Collections.Generic;
|
|
using System.Net;
|
|
using System.Net.Http;
|
|
using System.Web.Http;
|
|
using System.Web.Http.ModelBinding;
|
|
using Kendo.Mvc.UI;
|
|
using Kreta.BusinessLogic.Exceptions;
|
|
using Kreta.BusinessLogic.HelperClasses;
|
|
using Kreta.BusinessLogic.Helpers;
|
|
using Kreta.BusinessLogic.Security;
|
|
using Kreta.Resources;
|
|
using Kreta.Web.Areas.TanuloErtekeles.Models;
|
|
using Kreta.Web.Helpers;
|
|
using Kreta.Web.Helpers.Error;
|
|
using Kreta.Web.Helpers.Grid;
|
|
using Kreta.Web.Security;
|
|
using Newtonsoft.Json;
|
|
|
|
namespace Kreta.Web.Areas.TanuloErtekeles.ApiControllers
|
|
{
|
|
[ApiRoleClaimsAuthorize(true)]
|
|
[ApiRolePackageAuthorize(KretaClaimPackages.Osztalyfonok.ClaimValue, KretaClaimPackages.SzuperOsztalyfonok.ClaimValue)]
|
|
public class ErettsegiEredmenyekApiController : ApiController
|
|
{
|
|
public DataSourceResult GetErettsegiEredmenyekGrid(string data, [ModelBinder(typeof(ModelBinder.DataSourceRequestModelBinder))] DataSourceRequest request)
|
|
{
|
|
var model = JsonConvert.DeserializeObject<ErettsegiEredmenyekModel>(data);
|
|
|
|
if (model == null || !model.OsztalyId.HasValue)
|
|
{
|
|
return new DataSourceResult();
|
|
}
|
|
|
|
var authorization = (IKretaAuthorization)Request.GetDependencyScope().GetService(typeof(IKretaAuthorization));
|
|
if (!authorization.IsValidOsztaly(model.OsztalyId.Value))
|
|
{
|
|
throw new StatusError(HttpStatusCode.Forbidden, ErrorResource.AFelhasznalonakNincsMegfeleloJogosultsagaAFunkcioHasznalatahoz);
|
|
}
|
|
|
|
var helper = new ErettsegiEredmenyekHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType())
|
|
{
|
|
GridParameters = Converter.GridParameter(request)
|
|
};
|
|
|
|
var ds = helper.GetErettsegiEredmenyekGrid(model.OsztalyId.Value);
|
|
|
|
DataSourceResult result = ds.ToDataSourceResult();
|
|
|
|
return result;
|
|
}
|
|
|
|
public DataSourceResult GetErettsegiEredmenyekDetailGrid(int tanuloId, [ModelBinder(typeof(ModelBinder.DataSourceRequestModelBinder))] DataSourceRequest request)
|
|
{
|
|
var authorization = (IKretaAuthorization)Request.GetDependencyScope().GetService(typeof(IKretaAuthorization));
|
|
if (!authorization.IsValidOsztalyfonokTanuloja(tanuloId))
|
|
{
|
|
throw new StatusError(HttpStatusCode.Forbidden, ErrorResource.AFelhasznalonakNincsMegfeleloJogosultsagaAFunkcioHasznalatahoz);
|
|
}
|
|
|
|
var helper = new ErettsegiEredmenyekHelper(ConnectionTypeExtensions.GetSessionConnectionType())
|
|
{
|
|
GridParameters = Converter.GridParameter(request)
|
|
};
|
|
|
|
var ds = helper.GetErettsegiEredmenyekDetailGrid(tanuloId);
|
|
|
|
DataSourceResult result = ds.ToDataSourceResult();
|
|
|
|
return result;
|
|
}
|
|
|
|
[HttpPost]
|
|
[ApiValidateAjaxAntiForgeryToken]
|
|
public HttpResponseMessage SaveErettsegiEredmenyList(List<ErettsegiEredmenySaveModel> erettsegiEredmenySaveModelList)
|
|
{
|
|
var helper = new ErettsegiEredmenyekHelper(ConnectionTypeExtensions.GetSessionConnectionType());
|
|
|
|
var erettsegiTantargyAdatok = helper.GetErettsegiTantargyakForValidate();
|
|
|
|
List<ErettsegiEredmenyItemCo> erettsegiEredmenyCoList = new List<ErettsegiEredmenyItemCo>();
|
|
foreach (var erettsegiEredmenySaveModel in erettsegiEredmenySaveModelList)
|
|
{
|
|
var modelStateDictionary = new ModelStateDictionary();
|
|
foreach (var erettsegiEredmenySaveDetailModel in erettsegiEredmenySaveModel.ErettsegiEredmenySaveDetailModelList)
|
|
{
|
|
modelStateDictionary = erettsegiEredmenySaveDetailModel.Validate(modelStateDictionary, erettsegiEredmenySaveModel.FormName, erettsegiTantargyAdatok);
|
|
erettsegiEredmenyCoList.Add(erettsegiEredmenySaveDetailModel.ConvertModelToCo(ClaimData.IntezmenyId, ClaimData.SelectedTanevID.Value));
|
|
}
|
|
ModelState.Merge(modelStateDictionary);
|
|
}
|
|
|
|
if (ModelState.IsValid)
|
|
{
|
|
var authorization = (IKretaAuthorization)Request.GetDependencyScope().GetService(typeof(IKretaAuthorization));
|
|
foreach (ErettsegiEredmenyItemCo erettsegiEredmenyCo in erettsegiEredmenyCoList)
|
|
{
|
|
if (!authorization.IsValidOsztalyfonokTanuloja(erettsegiEredmenyCo.TanuloId))
|
|
{
|
|
throw new StatusError(HttpStatusCode.Forbidden, ErrorResource.AFelhasznalonakNincsMegfeleloJogosultsagaAFunkcioHasznalatahoz);
|
|
}
|
|
}
|
|
|
|
helper.SaveErettsegiEredmenyList(erettsegiEredmenyCoList);
|
|
|
|
return new HttpResponseMessage(HttpStatusCode.OK);
|
|
}
|
|
|
|
return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState);
|
|
}
|
|
|
|
[HttpPost]
|
|
[ApiValidateAjaxAntiForgeryToken]
|
|
public HttpResponseMessage DeleteErettsegiEredmeny([FromBody] int id)
|
|
{
|
|
var authorization = (IKretaAuthorization)Request.GetDependencyScope().GetService(typeof(IKretaAuthorization));
|
|
if (!authorization.IsValidErettsegiEredmeny(id))
|
|
{
|
|
throw new StatusError(HttpStatusCode.Forbidden, ErrorResource.AFelhasznalonakNincsMegfeleloJogosultsagaAFunkcioHasznalatahoz);
|
|
}
|
|
|
|
try
|
|
{
|
|
var helper = new ErettsegiEredmenyekHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType());
|
|
|
|
helper.DeleteErettsegiEredmeny(id);
|
|
|
|
return new HttpResponseMessage(HttpStatusCode.OK);
|
|
}
|
|
catch (CannotBeDeletedException ex)
|
|
{
|
|
throw new StatusError(HttpStatusCode.BadRequest, ex.Message);
|
|
}
|
|
}
|
|
}
|
|
}
|