using System; 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.Extensions; using Kendo.Mvc.UI; using Kreta.BusinessLogic.Caching; using Kreta.BusinessLogic.Classes; using Kreta.BusinessLogic.Exceptions; using Kreta.BusinessLogic.HelperClasses; using Kreta.BusinessLogic.Helpers; using Kreta.BusinessLogic.Helpers.SystemSettings; using Kreta.BusinessLogic.Logic.SystemSettings; using Kreta.BusinessLogic.Security; using Kreta.Core.ConnectionType; using Kreta.Enums; using Kreta.Framework; using Kreta.Framework.Caching.DictionaryItemTables; using Kreta.Resources; using Kreta.Web.Areas.Adminisztracio.Models; using Kreta.Web.Helpers; using Kreta.Web.Helpers.Error; using Kreta.Web.Helpers.Grid; using Kreta.Web.Security; using Newtonsoft.Json; using ModelStateDictionary = System.Web.Http.ModelBinding.ModelStateDictionary; namespace Kreta.Web.Areas.Adminisztracio.ApiControllers { [ApiRoleClaimsAuthorize(true)] [ApiRolePackageAuthorize(KretaClaimPackages.Adminisztrator.ClaimValue)] public class SystemSettingsApiController : ApiController { public SortedList GetSystemSettings() { return new SystemSettingsHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetSystemSettings(ClaimData.IsVegyes, ClaimData.FeladatKategoriak, ClaimData.IsSzirIntezmeny); } [HttpPost] [ApiValidateAjaxAntiForgeryToken] public HttpResponseMessage ResetSystemSettings() { bool result = new SystemSettingsHelper(ConnectionTypeExtensions.GetSessionConnectionType()).ResetSystemSettings(new List() { (int)RendszerBeallitasTipusEnum.Lazar_Ervin_Program_kezelese }); if (result) { return new HttpResponseMessage(HttpStatusCode.OK); } throw new StatusError(HttpStatusCode.BadRequest, StringResourcesUtil.GetString(439) /*Nem sikerült a művelet!*/); } [HttpPost] [ApiValidateAjaxAntiForgeryToken] public HttpResponseMessage SaveSystemSettings(Dictionary model) { try { ModelStateDictionary modelState = ValidateModel(model); if (modelState.IsValid) { new SystemSettingsHelper(ConnectionTypeExtensions.GetSessionConnectionType()).SetSystemSettings(model, ClaimData.KovTanevID); return new HttpResponseMessage(HttpStatusCode.OK); } return Request.CreateErrorResponse(HttpStatusCode.BadRequest, modelState); } catch (Exception ex) { throw new StatusError( HttpStatusCode.InternalServerError, StringResourcesUtil.GetString(439) /*Nem sikerült a művelet!*/) { UnHandledException = ex }; } } [HttpPost] [ApiValidateAjaxAntiForgeryToken] public HttpResponseMessage SaveGradeWeights(Dictionary grades) { try { List ertekelesModSulyCoList = grades.Select(grade => new ErtekelesModSulyCo { ErtekelesModId = int.Parse(grade.Key), Suly = int.Parse(grade.Value) }).ToList(); SessionConnectionType sessionConnetionType = ConnectionTypeExtensions.GetSessionConnectionType(); var adatszotarHelper = new AdatszotarHelper(sessionConnetionType); foreach (ErtekelesModSulyCo ertekelesModSulyCo in ertekelesModSulyCoList) { AdatszotarCO adatszotarCo = adatszotarHelper.GetAdatszotarElem(ertekelesModSulyCo.ErtekelesModId); adatszotarCo.Suly = ertekelesModSulyCo.Suly; adatszotarHelper.Update(adatszotarCo, ClaimData.KovTanevID); } new TanuloErtekelesHelper(sessionConnetionType).UpdateTantargyAtlag(); KretaServer.KretaServer.Instance.CacheManager.AquireCache().ClearTantargyiAtlagRegion(sessionConnetionType.IntezmenyAzonosito); return new HttpResponseMessage(HttpStatusCode.OK); } catch (Exception ex) { throw new StatusError(HttpStatusCode.InternalServerError, StringResourcesUtil.GetString(439) /*Nem sikerült a művelet!*/) { UnHandledException = ex }; } } [HttpPost] [ApiValidateAjaxAntiForgeryToken] public HttpResponseMessage DeleteTantargyfelosztas() { try { if (ClaimData.IsActivTanev) { var helper = new TantargyFelosztasHelper(ConnectionTypeExtensions.GetSessionConnectionType()); helper.FizikaiTorlesTantargyfelosztas(); return new HttpResponseMessage(HttpStatusCode.OK); } throw new Exception(ErrorResource.NemEgyezikMegAzAktivTanevAKivalasztottTanevvel); } catch (CannotBeDeletedException ex) { throw new StatusError(HttpStatusCode.BadRequest, ex.Message); } } [HttpPost] [ApiValidateAjaxAntiForgeryToken] public HttpResponseMessage DeleteImportaltTantargyfelosztas() { try { var helper = new TantargyFelosztasHelper(ConnectionTypeExtensions.GetSessionConnectionType()); helper.DeleteAllTargyFelosztas(); return new HttpResponseMessage(HttpStatusCode.OK); } catch (CannotBeDeletedException ex) { throw new StatusError(HttpStatusCode.BadRequest, ex.Message); } } [HttpPost] [ApiValidateAjaxAntiForgeryToken] public HttpResponseMessage DeleteOrarendek() { try { if (ClaimData.IsActivTanev) { var helper = new OrarendHelper(ConnectionTypeExtensions.GetSessionConnectionType()); helper.FizikaiTorlesOrarendek(); return new HttpResponseMessage(HttpStatusCode.OK); } throw new Exception(ErrorResource.NemEgyezikMegAzAktivTanevAKivalasztottTanevvel); } catch (CannotBeDeletedException ex) { throw new StatusError(HttpStatusCode.BadRequest, ex.Message); } } public ErtekelesModSulyListModel GetGradeWeights() { List ertekelesModDictionaryItems = EnumExtensions.GetErtekelesModDictionaryItems(ClaimData.SelectedTanevID.Value); var model = new ErtekelesModSulyListModel { ErtekelesModSulyList = new List() }; foreach (var ertekelesModDictionaryItem in ertekelesModDictionaryItems) { model.ErtekelesModSulyList.Add(new ErtekelesModSulyModel { ErtekelesModId = ertekelesModDictionaryItem.Id, ErtekelesModNev = ertekelesModDictionaryItem.Name, Suly = ertekelesModDictionaryItem.Suly, }); } return model; } [HttpPost] [ApiValidateAjaxAntiForgeryToken] public HttpResponseMessage FejlecCheckBoxMentes(bool isMegjelenit) { var helper = new IntezmenyHelper(ConnectionTypeExtensions.GetSessionConnectionType()); helper.SetIntezmenyFejlecCheckBox(isMegjelenit); return new HttpResponseMessage(HttpStatusCode.OK); } [HttpPost] [ApiValidateAjaxAntiForgeryToken] public HttpResponseMessage LablecCheckBoxMentes(bool isMegjelenit) { var helper = new IntezmenyHelper(ConnectionTypeExtensions.GetSessionConnectionType()); helper.SetIntezmenyLablecCheckBox(isMegjelenit); return new HttpResponseMessage(HttpStatusCode.OK); } [HttpPost] [ApiValidateAjaxAntiForgeryToken] public HttpResponseMessage ImageValidate([FromBody] string image) { switch (SystemSettingsLogic.ImageValidate(image)) { case Enums.ManualEnums.SystemSettings.SystemSettingsFejlecLablecSzerkesztoHibakEnum.AFajlKiterjeszteseVagyTipusaNemMegfelelo: throw new StatusError(HttpStatusCode.BadRequest, ErrorResource.AFajlKiterjeszteseVagyTipusaNemMegfelelo); case Enums.ManualEnums.SystemSettings.SystemSettingsFejlecLablecSzerkesztoHibakEnum.HibaTortentXMBNalNemLehetNagyobbAFajlMerete: throw new StatusError(HttpStatusCode.BadRequest, string.Format(ErrorResource.HibaTortentXMBNalNemLehetNagyobbAFajlMerete, SystemSettingsLogic.MaxFileSizeMB)); case Enums.ManualEnums.SystemSettings.SystemSettingsFejlecLablecSzerkesztoHibakEnum.AKepMagassagaMeghaladjaAMegengedettMeretet: throw new StatusError(HttpStatusCode.BadRequest, string.Format(ErrorResource.AKepMagassagaMeghaladjaAMegengedettMeretet, SystemSettingsLogic.AllowedMaxHeight)); case Enums.ManualEnums.SystemSettings.SystemSettingsFejlecLablecSzerkesztoHibakEnum.AzOsszesKepSzelessegeMeghaladjaAMegengedettMeretet: throw new StatusError(HttpStatusCode.BadRequest, string.Format(ErrorResource.AzOsszesKepSzelessegeMeghaladjaAMegengedettMeretet, SystemSettingsLogic.AllowedMaxWidth)); default: return new HttpResponseMessage(HttpStatusCode.OK); } } public HttpResponseMessage FejlecMentes(FejlecLablecSzerkesztoModel model) { var helper = new IntezmenyHelper(ConnectionTypeExtensions.GetSessionConnectionType()); helper.SetIntezmenyFejlec(model.ToCo()); return new HttpResponseMessage(HttpStatusCode.OK); } [HttpPost] [ApiValidateAjaxAntiForgeryToken] public HttpResponseMessage FejlecTorles() { var helper = new IntezmenyHelper(ConnectionTypeExtensions.GetSessionConnectionType()); helper.DeleteIntezmenyFejlec(); return new HttpResponseMessage(HttpStatusCode.OK); } public HttpResponseMessage LablecTorles() { var helper = new IntezmenyHelper(ConnectionTypeExtensions.GetSessionConnectionType()); helper.DeleteIntezmenyLablec(); return new HttpResponseMessage(HttpStatusCode.OK); } [HttpPost] [ApiValidateAjaxAntiForgeryToken] public HttpResponseMessage LablecMentes(FejlecLablecSzerkesztoModel model) { var helper = new IntezmenyHelper(ConnectionTypeExtensions.GetSessionConnectionType()); helper.SetIntezmenyLablec(model.ToCo()); return new HttpResponseMessage(HttpStatusCode.OK); } private ModelStateDictionary ValidateModel(Dictionary model) { ModelStateDictionary modelState = new ModelStateDictionary(); RendszerBeallitasTipusEnum beallitas; if (!model[RendszerBeallitasTipusEnum.Osztalyfonok_modosithatja_osztalyaba_jaro_tanulok_adatait]) { beallitas = RendszerBeallitasTipusEnum.Osztalyfonok_megtekintheti_modosithatja_osztalyaba_jaro_tanulok_szocialis_tanugyi_es_SNI_BTM_adatait; if (model[beallitas]) { modelState.AddModelError(beallitas.ToString(), StringResourcesUtil.GetString(4018) /*A funkció csak akkor engedélyezhető, ha az 'Osztályfőnök módosíthatja osztályába járó tanulók adatait' érték IGEN-re van állítva.*/); } beallitas = RendszerBeallitasTipusEnum.Osztalyfonok_megtekintheti_modosithatja_osztalyaba_jaro_tanulok_zaradekat; if (model[beallitas]) { modelState.AddModelError(beallitas.ToString(), StringResourcesUtil.GetString(4018) /*A funkció csak akkor engedélyezhető, ha az 'Osztályfőnök módosíthatja osztályába járó tanulók adatait' érték IGEN-re van állítva.*/); } } if (!model[RendszerBeallitasTipusEnum.Osztalyfonok_modosithatja_osztalyaba_jaro_tanulok_adatait] || !model[RendszerBeallitasTipusEnum.Tanulo_vallasi_adatainak_kezelese]) { beallitas = RendszerBeallitasTipusEnum.Osztalyfonok_megtekintheti_kezelheti_az_osztalyaba_jaro_tanulok_vallasi_adatait; if (model[beallitas]) { modelState.AddModelError(beallitas.ToString(), SystemSettingsResource.FunkcioNemEngedelyezhetoAdatkezeleseiBeallitasokAlapjan); } } if (!model[RendszerBeallitasTipusEnum.Osztalyfonok_modosithatja_osztalyaba_jaro_tanulok_adatait] || !model[RendszerBeallitasTipusEnum.Tanulo_sportoloi_adatainak_kezelese]) { beallitas = RendszerBeallitasTipusEnum.Osztalyfonok_megtekintheti_modosithatja_osztalyaba_jaro_tanulok_sportoloi_adatait; if (model[beallitas]) { modelState.AddModelError(beallitas.ToString(), SystemSettingsResource.FunkcioNemEngedelyezhetoAdatkezeleseiBeallitasokAlapjan); } } #region Az elektronikus napló megjelenésének kezdőidőpontja és záróidőpontja var helper = new CsengetesiRendOrakHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType()); var ds = helper.GetCsengetesiOrakKezdVeg(); TimeSpan rendszerKezdes = default; beallitas = RendszerBeallitasTipusEnum.Az_elektronikus_naplo_megjelenesenek_kezdoidopontja; if (!model.ContainsKey(beallitas)) { modelState.AddModelError(beallitas.ToString(), SystemSettingsResource.ElektronikusNaploMegjelenesKezdoUres); } else { if (TimeSpan.TryParse(model[beallitas], out rendszerKezdes) && rendszerKezdes.TotalMilliseconds >= 0) { var csengetesiKezdes = ds.Tables[0].Rows[0]["Kezd"].ToString(); if (!string.IsNullOrWhiteSpace(csengetesiKezdes) && rendszerKezdes > TimeSpan.Parse(csengetesiKezdes)) { modelState.AddModelError(beallitas.ToString(), StringResourcesUtil.GetString(4318) + TimeSpan.Parse(csengetesiKezdes) /*Az elektronikus napló megjelenésének kezdőidőpontja legkésőbb a legkorábbi csengetési rendi időpont kezdete lehet. Ennek értéke jelenleg: */); } } else { modelState.AddModelError(beallitas.ToString(), SystemSettingsResource.ElektronikusNaploMegjelenesKezdoFormatum); } } beallitas = RendszerBeallitasTipusEnum.Az_elektronikus_naplo_megjelenesenek_zaroidopontja; if (!model.ContainsKey(beallitas)) { modelState.AddModelError(beallitas.ToString(), SystemSettingsResource.ElektronikusNaploMegjelenesZaroUres); } else { if (TimeSpan.TryParse(model[beallitas], out TimeSpan rendszerVege) && rendszerVege.TotalMilliseconds >= 0) { var csengetesiVege = ds.Tables[0].Rows[0]["Vege"].ToString(); if (!string.IsNullOrWhiteSpace(csengetesiVege) && rendszerVege < TimeSpan.Parse(csengetesiVege)) { modelState.AddModelError(beallitas.ToString(), StringResourcesUtil.GetString(4319) + TimeSpan.Parse(csengetesiVege) /*Az elektronikus napló megjelenésének záróidőpontja legkorábban a legkésőbbi csengetési rendi időpont vége lehet. Ennek értéke jelenleg: */); } if (rendszerKezdes > rendszerVege) { modelState.AddModelError(beallitas.ToString(), SystemSettingsResource.ElektronikusNaploMegjelenesKezdoKesobbi); } } else { modelState.AddModelError(beallitas.ToString(), SystemSettingsResource.ElektronikusNaploMegjelenesZaroFormatum); } } #endregion Az elektronikus napló megjelenésének kezdőidőpontja és záróidőpontja TimeSpan fogadoOraKezdo = default; TimeSpan fogadoOraZaro = default; beallitas = RendszerBeallitasTipusEnum.Fogado_Ora_Kezdoidopontja; if (!model.ContainsKey(beallitas)) { modelState.AddModelError(beallitas.ToString(), SystemSettingsResource.FogadoOraKezdoUres); } else if (!TimeSpan.TryParse(model[beallitas], out fogadoOraKezdo)) { modelState.AddModelError(beallitas.ToString(), SystemSettingsResource.FogadoOraKezdoFormatum); } beallitas = RendszerBeallitasTipusEnum.Fogado_Ora_Zaroidopontja; if (!model.ContainsKey(beallitas)) { modelState.AddModelError(beallitas.ToString(), SystemSettingsResource.FogadoOraZaroUres); } else if (!TimeSpan.TryParse(model[beallitas], out fogadoOraZaro)) { modelState.AddModelError(beallitas.ToString(), SystemSettingsResource.FogadoOraZaroFormatum); } else if (fogadoOraKezdo > fogadoOraZaro) { modelState.AddModelError(beallitas.ToString(), SystemSettingsResource.FogadoOraKezdoKesobbi); } TimeSpan nemKotottKezdete = default; beallitas = RendszerBeallitasTipusEnum.Nem_kotott_munkaido_megjelenesenek_kezdoidopontja; if (!model.ContainsKey(beallitas)) { modelState.AddModelError(beallitas.ToString(), SystemSettingsResource.NemKotottMunkaidoMegjelenesKezdoUres); } else if (!(TimeSpan.TryParse(model[beallitas], out nemKotottKezdete) && nemKotottKezdete.TotalMilliseconds >= 0)) { modelState.AddModelError(beallitas.ToString(), SystemSettingsResource.NemKotottMunkaidoMegjelenesKezdoFormatum); } beallitas = RendszerBeallitasTipusEnum.Nem_kotott_munkaido_megjelenesenek_zaroidopontja; if (!model.ContainsKey(beallitas)) { modelState.AddModelError(beallitas.ToString(), SystemSettingsResource.NemKotottMunkaidoMegjelenesZaroUres); } else if (!(TimeSpan.TryParse(model[beallitas], out TimeSpan nemKotottVege) && nemKotottVege.TotalMilliseconds >= 0)) { modelState.AddModelError(beallitas.ToString(), SystemSettingsResource.NemKotottMunkaidoMegjelenesZaroFormatum); } else { if (nemKotottKezdete > nemKotottVege) { modelState.AddModelError(beallitas.ToString(), SystemSettingsResource.NemKotottMunkaIdoMegjelenesKezdoKesobbi); } if (nemKotottKezdete == nemKotottVege) { modelState.AddModelError(beallitas.ToString(), SystemSettingsResource.NemKotottMunkaidoKezdoZaroMegegyezik); } } DateTime gyakorlatKezdeteDatum = default; DateTime gyakorlatVegDatum = default; beallitas = RendszerBeallitasTipusEnum.Osszefuggo_gyakorlat_kezd_datum; if (!model.ContainsKey(beallitas)) { modelState.AddModelError(beallitas.ToString(), SystemSettingsResource.OsszefuggoSzakmaiGyakorlatKezdeteUres); } else if (!DateTime.TryParse(model[beallitas], out gyakorlatKezdeteDatum)) { modelState.AddModelError(beallitas.ToString(), SystemSettingsResource.OsszefuggoSzakmaiGyakorlatKezdeteFormatum); } beallitas = RendszerBeallitasTipusEnum.Osszefuggo_gyakorlat_veg_datum; if (!model.ContainsKey(beallitas)) { modelState.AddModelError(beallitas.ToString(), SystemSettingsResource.OsszefuggoSzakmaiGyakorlatVegeUres); } else if (!DateTime.TryParse(model[beallitas], out gyakorlatVegDatum)) { modelState.AddModelError(beallitas.ToString(), SystemSettingsResource.OsszefuggoSzakmaiGyakorlatVegeFormatum); } else if (gyakorlatKezdeteDatum > gyakorlatVegDatum) { modelState.AddModelError(beallitas.ToString(), SystemSettingsResource.OsszefuggoSzakmaiGyakorlatKezdeteKesobbi); } var (kezdoNap, utolsoNap) = new SystemSettingsHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetTanevElsoEsUtolsoNapja(); beallitas = RendszerBeallitasTipusEnum.Naplozaras_eves_datuma; if (model.Keys.Contains(beallitas)) { DatumEllenorzes(model[beallitas], kezdoNap, utolsoNap, modelState, beallitas); } beallitas = RendszerBeallitasTipusEnum.Osszefuggo_gyakorlat_kezd_datum; if (model.Keys.Contains(beallitas)) { DatumEllenorzes(model[beallitas], kezdoNap, utolsoNap, modelState, beallitas); } beallitas = RendszerBeallitasTipusEnum.Osszefuggo_gyakorlat_veg_datum; if (model.Keys.Contains(beallitas)) { DatumEllenorzes(model[beallitas], kezdoNap, utolsoNap, modelState, beallitas); } beallitas = RendszerBeallitasTipusEnum.I_Negyedeves_jegyek_megjelenesenek_datuma; if (model.Keys.Contains(beallitas)) { DatumEllenorzes(model[beallitas], kezdoNap, utolsoNap, modelState, beallitas); } beallitas = RendszerBeallitasTipusEnum.II_Negyedeves_jegyek_megjelenesenek_datuma; if (model.Keys.Contains(beallitas)) { DatumEllenorzes(model[beallitas], kezdoNap, utolsoNap, modelState, beallitas); } beallitas = RendszerBeallitasTipusEnum.III_Negyedeves_jegyek_megjelenesenek_datuma; if (model.Keys.Contains(beallitas)) { DatumEllenorzes(model[beallitas], kezdoNap, utolsoNap, modelState, beallitas); } beallitas = RendszerBeallitasTipusEnum.IV_Negyedeves_jegyek_megjelenesenek_datuma; if (model.Keys.Contains(beallitas)) { DatumEllenorzes(model[beallitas], kezdoNap, utolsoNap, modelState, beallitas); } beallitas = RendszerBeallitasTipusEnum.Felevi_jegyek_megjelenesenek_datuma; if (model.Keys.Contains(beallitas)) { DatumEllenorzes(model[beallitas], kezdoNap, utolsoNap, modelState, beallitas); } beallitas = RendszerBeallitasTipusEnum.Ev_vegi_jegyek_megjelenesenek_datuma; if (model.Keys.Contains(beallitas)) { DatumEllenorzes(model[beallitas], kezdoNap, utolsoNap, modelState, beallitas); } beallitas = RendszerBeallitasTipusEnum.Ev_vegi_jegyek_megjelenesenek_datuma_vegzos; if (model.Keys.Contains(beallitas)) { DatumEllenorzes(model[beallitas], kezdoNap, utolsoNap, modelState, beallitas); } beallitas = RendszerBeallitasTipusEnum.Ertekeles_datumanak_minimuma; if (model.Keys.Contains(beallitas)) { DatumEllenorzes(model[beallitas], kezdoNap, utolsoNap, modelState, beallitas); } beallitas = RendszerBeallitasTipusEnum.Ertesites_bukasra_allo_tanulokrol; if (model.Keys.Contains(beallitas)) { DatumEllenorzes(model[beallitas], kezdoNap, utolsoNap, modelState, beallitas); } beallitas = RendszerBeallitasTipusEnum.Ertesites_bukasra_allo_vegzos_tanulokrol; if (model.Keys.Contains(beallitas)) { DatumEllenorzes(model[beallitas], kezdoNap, utolsoNap, modelState, beallitas); } beallitas = RendszerBeallitasTipusEnum.Ertesites_Tanev_rendi_valtoztatasrol_esetek; if (model.Keys.Contains(beallitas)) { DatumEllenorzes(model[beallitas], kezdoNap, utolsoNap, modelState, beallitas); } return modelState; } private void DatumEllenorzes(string ertek, DateTime kezdoNap, DateTime utolsoNap, ModelStateDictionary modelState, RendszerBeallitasTipusEnum beallitas) { if (!(DateTime.TryParse(ertek, out DateTime naplozarasEvesDatum))) { modelState.AddModelError(beallitas.ToString(), "Rossz dátum formátum"); } else if ((naplozarasEvesDatum < kezdoNap) || (naplozarasEvesDatum > utolsoNap)) { modelState.AddModelError(beallitas.ToString(), "A beállított dátumnak a tanév első és utolsó napja között kell lennie."); } } #region Tanuló Értékelés Mondatbank public DataSourceResult GetTanuloErtekelesMondatbankGrid(string data, [ModelBinder(typeof(ModelBinder.DataSourceRequestModelBinder))] KretaGridDataSourceRequest request) { data = data.Replace("_", string.Empty); var model = JsonConvert.DeserializeObject(data); var helper = new TanuloErtekelesMondatbankHelper(ConnectionTypeExtensions.GetSessionConnectionType()) { GridParameters = Converter.GridParameter(request) }; DataSet dataSet = helper.GetTanuloErtekelesMondatbankGrid(ConvertTanuloErtekelesMondatbankSearchModelToSearchCo(model)); return dataSet.ToDataSourceResult(); } [HttpPost] [ApiValidateAjaxAntiForgeryToken] public HttpResponseMessage SaveTanuloErtekelesMondatbankItem(TanuloErtekelesMondatbankItemModel model) { ModelState.Merge(model.Validate()); if (ModelState.IsValid) { var helper = new TanuloErtekelesMondatbankHelper(ConnectionTypeExtensions.GetSessionConnectionType()); helper.SaveTanuloErtekelesMondatbankItem(model.ToCo()); return new HttpResponseMessage(HttpStatusCode.OK); } return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState); } [HttpPost] [ApiValidateAjaxAntiForgeryToken] public HttpResponseMessage DeleteTanuloErtekelesMondatbankItem([FromBody] int id) { try { var helper = new TanuloErtekelesMondatbankHelper(ConnectionTypeExtensions.GetSessionConnectionType()); helper.DeleteTanuloErtekelesMondatbankItems(new List { id }); return new HttpResponseMessage(HttpStatusCode.OK); } catch (CannotBeDeletedException ex) { throw new StatusError(HttpStatusCode.BadRequest, ex.Message); } } [HttpPost] [ApiValidateAjaxAntiForgeryToken] public IHttpActionResult DeleteSelectedTanuloErtekelesMondatbankItems(List idList) { var helper = new TanuloErtekelesMondatbankHelper(ConnectionTypeExtensions.GetSessionConnectionType()); var (counter, errorMsg) = helper.DeleteTanuloErtekelesMondatbankItems(idList); if (counter == idList.Count) return Json(new { Message = errorMsg }); throw new StatusError(HttpStatusCode.BadRequest, errorMsg); } [HttpPost] [ApiValidateAjaxAntiForgeryToken] public IHttpActionResult SaveSelectedTanuloErtekelesMondatbankItems(TanuloErtekelesMondatbankTobbesItemModel model) { ModelState.Merge(model.Validate()); if (ModelState.IsValid) { var helper = new TanuloErtekelesMondatbankHelper(ConnectionTypeExtensions.GetSessionConnectionType()); var (counter, errorMsg) = helper.ModifyTanuloErtekelesMondatbankItems(model.ToCo()); if (counter == model.SelectedIdList.Count) return Json(new { Message = errorMsg }); throw new StatusError(HttpStatusCode.BadRequest, errorMsg); } var a = string.Join(Environment.NewLine, ModelState.Values.Select(x => x.Errors.Select(y => y.ErrorMessage)).Select(z => string.Join(Environment.NewLine, z.ToArray())).ToArray()); throw new StatusError(HttpStatusCode.BadRequest, a); } private TanuloErtekelesMondatbankSearchCO ConvertTanuloErtekelesMondatbankSearchModelToSearchCo(TanuloErtekelesMondatbankSearchModel model) { return new TanuloErtekelesMondatbankSearchCO() { EvfolyamTipusIdList = model.EvfolyamTipusIdList, RovidNev = model.RovidNevS, Szoveg = model.SzovegS, TantargyIdList = model.TantargyIdList.Select(x => (tantargyId: x, tipusId: x != 0 ? TanuloErtekelesMondatbankHelper.GetTanuloErtekelesMondatbankTipusIdByTantargyId(x) : (int)ErtMondatbankTipusEnum.Tantargy)).ToList(), TanuloErtekelesTipusIdList = model.TanuloErtekelesTipusIdList, }; } #endregion Tanuló Értékelés Mondatbank #region CsoportTipus public List GetCsoportTipusList() { List csoportTipusList = new AdatszotarHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetCsoportTipusList(); return csoportTipusList.Select(ConvertCOToModel).ToList(); } public DataSourceResult GetCsoportTipusGridList([ModelBinder(typeof(ModelBinder.DataSourceRequestModelBinder))] DataSourceRequest request) { List csoportTipusList = new AdatszotarHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetCsoportTipusList(); return csoportTipusList.Select(ConvertCOToGridModel).ToList().ToDataSourceResult(request); } [HttpPost] [ApiValidateAjaxAntiForgeryToken] public HttpResponseMessage SaveCsoportTipusList(List model) { if (ModelState.IsValid) { List csoportTipusList = model.Select(ConvertModelToCO).ToList(); new AdatszotarHelper(ConnectionTypeExtensions.GetSessionConnectionType()).SaveCsoportTipusList(csoportTipusList, ClaimData.KovTanevID); return new HttpResponseMessage(HttpStatusCode.OK); } return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState); } private CsoportTipusModel ConvertCOToModel(CsoportTipusCO csoportTipus) { return new CsoportTipusModel { Id = csoportTipus.Id, Nev = csoportTipus.Nev, IsTanoraiCelu = csoportTipus.IsTanoraiCelu, IsProtected = csoportTipus.IsProtected, OraPerc = csoportTipus.OraPerc }; } private CsoportTipusGridModel ConvertCOToGridModel(CsoportTipusCO csoportTipus) { return new CsoportTipusGridModel { ID = csoportTipus.Id.ToString(), Nev = csoportTipus.Nev, IsTanoraiCelu = csoportTipus.IsTanoraiCelu, IsProtected = csoportTipus.IsProtected, OraPerc = csoportTipus.OraPerc }; } private CsoportTipusCO ConvertModelToCO(CsoportTipusModel csoportTipus) { return new CsoportTipusCO { Id = csoportTipus.Id, Nev = csoportTipus.Nev, IsTanoraiCelu = csoportTipus.IsTanoraiCelu, IsProtected = csoportTipus.IsProtected, OraPerc = csoportTipus.OraPerc }; } #endregion CsoportTipus #region JuttatasAdatok [HttpPost] [ApiValidateAjaxAntiForgeryToken] public void JuttatasAdatokUjraGeneralasa() { new SzakkepzesiJuttatasokHelper(ConnectionTypeExtensions.GetSessionConnectionType()).UpdateOsszesTanuloSzakkepzesiJuttatasok(); } //[HttpPost] //[ApiValidateAjaxAntiForgeryToken] //public void FeleviAtlagokUjraGeneralasa() //{ // new SzakkepzesiJuttatasokHelper(ConnectionTypeExtensions.GetSessionConnectionType()).UpdateOsszesTanuloAtlag(AtlagTipusEnum.Felevi); //} //[HttpPost] //[ApiValidateAjaxAntiForgeryToken] //public void EvvegiAtlagokUjraGeneralasa() //{ // new SzakkepzesiJuttatasokHelper(ConnectionTypeExtensions.GetSessionConnectionType()).UpdateOsszesTanuloAtlag(AtlagTipusEnum.Evvegi); //} #endregion } }