using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Net.Http; using System.Web.Http; using System.Web.Http.ModelBinding; using System.Web.Http.Results; using Kendo.Mvc.UI; using Kreta.BusinessLogic.Classes; using Kreta.BusinessLogic.Exceptions; using Kreta.BusinessLogic.Helpers; using Kreta.BusinessLogic.Logic; using Kreta.BusinessLogic.Security; using Kreta.Client.KozpontiKreta; using Kreta.Core; using Kreta.Core.Configuratiaton.Interface; using Kreta.Core.Exceptions; using Kreta.Core.KozpontiModels.MdszModels; using Kreta.Enums; using Kreta.Enums.ManualEnums; using Kreta.Framework.Entities; using Kreta.Framework.Util; using Kreta.Resources; using Kreta.Web.Areas.Tanulo.Helper; using Kreta.Web.Areas.Tanulo.Models; using Kreta.Web.Helpers; using Kreta.Web.Helpers.Error; using Kreta.Web.Helpers.Grid; using Kreta.Web.Models; using Kreta.Web.Security; using Newtonsoft.Json; using SDA.DataProvider; namespace Kreta.Web.Areas.Tanulo.ApiControllers { public class BaseTanuloApiController : ApiController { public readonly IKozpontiKretaConfiguration kozpontiKretaConfiguration; public BaseTanuloApiController(IKozpontiKretaConfiguration kozpontiKretaConfiguration) { this.kozpontiKretaConfiguration = kozpontiKretaConfiguration ?? throw new ArgumentNullException(nameof(kozpontiKretaConfiguration)); } [NonAction] public DataSourceResult GetTanuloGrid(string data, DataSourceRequest request, bool isFromSzervezet) { var (gridParameter, modelList) = GetGridData(data, request); return modelList.ToDataSourceResult(gridParameter); } [NonAction] public DataSourceResult GetFelmentesekGrid(string id, [ModelBinder(typeof(ModelBinder.DataSourceRequestModelBinder))] DataSourceRequest request, bool isFromSzervezet) { var helper = new TanuloHelper(ConnectionTypeExtensions.GetSessionConnectionType()) { GridParameters = Converter.GridParameter(request) }; var tanuloId = SDAConvert.ToNullableInt32(id); var dualisKepzesTantargyId = new TantargyHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetDualisKepzesTantargyId(); var result = tanuloId.IsEntityId() ? helper.GetTanulokFelmentesei(new List { tanuloId.Value }, isFromSzervezet, dualisKepzesTantargyId: dualisKepzesTantargyId).ToDataSourceResult() : new DataSourceResult(); return result; } [NonAction] public HttpResponseMessage GetExport(string data, DataSourceRequest request, bool isFromSzervezet) { try { var (gridParameter, modelList) = GetGridData(data, request); modelList = modelList.SortingAndPaging(gridParameter.OrderDictionary); var simpleExportColumnCos = SimpleExportLogic.GetSimpleExportColumnCos(isFromSzervezet ? TanuloGridModel.DualisTanuloExportAttributeId : TanuloGridModel.TanuloExportAttributeId); var memoryStream = SimpleExportLogic.GetExport(TanuloResource.TanuloExportSheetName, simpleExportColumnCos, modelList, ClaimData.SelectedTanevID.Value); return HttpResponseExtensions.GetFileHttpResponse(memoryStream.ToArray(), !isFromSzervezet ? $"{TanuloResource.TanuloExportFileName}.{Constants.ImportExport.FileFormatXlsx}" : $"{TanuloResource.TanuloExportFileName}_{DateTime.Now:yyyy_MM_dd}.{Constants.ImportExport.FileFormatXlsx}"); } catch (Exception ex) { throw new StatusError(HttpStatusCode.BadRequest, ErrorResource.HibaTortentAFajlExportalasaKozben) { UnHandledException = ex }; } } [NonAction] public DataSourceResult GetOsztalyCsoportGrid(string data, [ModelBinder(typeof(ModelBinder.DataSourceRequestModelBinder))] DataSourceRequest request, bool isFromSzervezet) { var model = JsonConvert.DeserializeObject(data); var helper = new TanuloHelper(ConnectionTypeExtensions.GetSessionConnectionType()) { GridParameters = Converter.GridParameter(request), }; var ds = helper.GetOsztalyCsoport(model.TanuloId, model.FeladatKategoriaId, !model.MegNemAktivOsztalyok, isFromSzervezet); return ds.ToDataSourceResult(); } private (GridParameters gridParameter, List modelList) GetGridData(string data, DataSourceRequest request) { data = data.Replace("_", string.Empty); var model = JsonConvert.DeserializeObject(data); var gridParameter = Converter.GridParameter(request); var coList = new TanuloHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetTanuloItemCoList(model.ConvertModelToCo(ConnectionTypeExtensions.GetSessionConnectionType(), ClaimData.IsActivTanev)); var modelList = new List(); foreach (var co in coList) { var gridModel = new TanuloGridModel(co); modelList.Add(gridModel); } return (gridParameter, modelList); } } }