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 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 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 { 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 } }; } } } }