124 lines
5 KiB
C#
124 lines
5 KiB
C#
using System.Collections.Generic;
|
|
using System.Data;
|
|
using System.Linq;
|
|
using System.Net;
|
|
using System.Net.Http;
|
|
using System.Web.Http;
|
|
using System.Web.Http.ModelBinding;
|
|
using Kendo.Mvc.UI;
|
|
using Kreta.BusinessLogic.Helpers;
|
|
using Kreta.BusinessLogic.Security;
|
|
using Kreta.Core.Exceptions;
|
|
using Kreta.Resources;
|
|
using Kreta.Web.Areas.Leptetes.Models;
|
|
using Kreta.Web.Helpers;
|
|
using Kreta.Web.Helpers.Error;
|
|
using Kreta.Web.Helpers.Grid;
|
|
using Kreta.Web.Security;
|
|
|
|
namespace Kreta.Web.Areas.Leptetes.ApiControllers
|
|
{
|
|
[ApiRoleClaimsAuthorize(true)]
|
|
[ApiRolePackageAuthorize(KretaClaimPackages.Adminisztrator.ClaimValue)]
|
|
public class OsztalyLeptetesApiController : ApiController
|
|
{
|
|
public DataSourceResult GetOsztalyLeptetesGrid(string data, [ModelBinder(typeof(ModelBinder.DataSourceRequestModelBinder))] DataSourceRequest request)
|
|
{
|
|
SetOsztalyLeptetesGridDefaultSorting(request);
|
|
|
|
var helper = new LeptetesHelper(ConnectionTypeExtensions.GetSessionConnectionType())
|
|
{
|
|
GridParameters = Converter.GridParameter(request)
|
|
};
|
|
|
|
DataSet ds = helper.GetOsztalyLeptetesGridData(ClaimData.AktivTanevID.Value);
|
|
return ds.ToDataSourceResult();
|
|
}
|
|
|
|
[HttpPost]
|
|
[ApiValidateAjaxAntiForgeryToken]
|
|
public HttpResponseMessage SaveOsztalyLeptetes(List<OsztalyLeptetesRowModel> model)
|
|
{
|
|
try
|
|
{
|
|
var errorStr = OsztalyCustomValidation(model);
|
|
if (string.IsNullOrWhiteSpace(errorStr))
|
|
{
|
|
LeptetesHelper helper = new LeptetesHelper(ConnectionTypeExtensions.GetSessionConnectionType());
|
|
foreach (var item in model)
|
|
{
|
|
helper.CopyOsztalyToKovTanev(item.SourceID, item.Nev, item.Evfolyam, ClaimData.SelectedTanevID.Value);
|
|
}
|
|
|
|
return new HttpResponseMessage(HttpStatusCode.OK);
|
|
}
|
|
|
|
throw new StatusError(HttpStatusCode.BadRequest, errorStr);
|
|
}
|
|
catch (BlException e)
|
|
{
|
|
StatusError error = new StatusError(HttpStatusCode.BadRequest, e.Message);
|
|
throw error;
|
|
}
|
|
}
|
|
|
|
public string OsztalyCustomValidation(List<OsztalyLeptetesRowModel> model)
|
|
{
|
|
var result = string.Empty;
|
|
|
|
var duplicated = from m in model group m by m.Nev into g where g.Count() > 1 select g.Key;
|
|
foreach (var item in duplicated)
|
|
{
|
|
result += string.Format(LeptetesResource.OsztalyEgynelTobbszor, model.Where(x => x.Nev.Contains(item)).FirstOrDefault()?.Nev ?? string.Empty);
|
|
}
|
|
|
|
OsztalyCsoportHelper helper = new OsztalyCsoportHelper(ConnectionTypeExtensions.GetSessionConnectionType());
|
|
var data = helper.GetOsztalyCsoportCoList();
|
|
|
|
FeladatEllatasiHelyHelper feHelper = new FeladatEllatasiHelyHelper(ConnectionTypeExtensions.GetSessionConnectionType());
|
|
var feData = feHelper.GetFeladatEllatasiHelyDDl();
|
|
|
|
foreach (var item in model)
|
|
{
|
|
if (data.Where(x => x.Nev == item.Nev).ToList().Count > 0)
|
|
{
|
|
result += string.Format(LeptetesResource.OsztalyLetezikKovTanevben, item.Nev);
|
|
}
|
|
|
|
OsztalyHelper ocshelper = new OsztalyHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType());
|
|
var osztalyData = helper.GetOsztalyByOsztalyId(item.SourceID);
|
|
|
|
FeladatEllatasiHelyHelper ahelper = new FeladatEllatasiHelyHelper(ConnectionTypeExtensions.GetSessionConnectionType());
|
|
if (ahelper.GetKovTanevIdByAktTanevId(osztalyData.FeladatEllatasiHelyId) == 0)
|
|
{
|
|
result += string.Format(LeptetesResource.OsztalyFelhelyNemtalalhato, item.Nev);
|
|
}
|
|
}
|
|
|
|
return result;
|
|
}
|
|
|
|
private void SetOsztalyLeptetesGridDefaultSorting(DataSourceRequest request)
|
|
{
|
|
// NOTE: Ha a felhasználó nem választott ki semmilyen rendezést a griden,
|
|
// akkor évfolyam sorszám alapján és osztály név alapján rendezzük default a gridet,
|
|
// egyébként pedig a griden használt rendezés kell!
|
|
if (request.Sorts == null || !request.Sorts.Any())
|
|
{
|
|
request.Sorts = new List<Kendo.Mvc.SortDescriptor>
|
|
{
|
|
new Kendo.Mvc.SortDescriptor
|
|
{
|
|
Member = nameof(OsztalyLeptetesGridModel.DicOrder),
|
|
SortDirection = System.ComponentModel.ListSortDirection.Ascending
|
|
},
|
|
new Kendo.Mvc.SortDescriptor
|
|
{
|
|
Member = nameof(OsztalyLeptetesGridModel.OsztalyNeve),
|
|
SortDirection = System.ComponentModel.ListSortDirection.Ascending
|
|
}
|
|
};
|
|
}
|
|
}
|
|
}
|
|
}
|