671 lines
35 KiB
C#
671 lines
35 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.ComponentModel;
|
|
using System.Data;
|
|
using System.Linq;
|
|
using System.Net;
|
|
using System.Net.Http;
|
|
using System.Web.Http;
|
|
using System.Web.Http.Results;
|
|
using System.Web.Mvc;
|
|
using Kendo.Mvc.UI;
|
|
using Kreta.BusinessLogic.Classes;
|
|
using Kreta.BusinessLogic.Helpers;
|
|
using Kreta.BusinessLogic.Security;
|
|
using Kreta.Client.LEP;
|
|
using Kreta.Core.Configuratiaton.Interface;
|
|
using Kreta.Enums;
|
|
using Kreta.Resources;
|
|
using Kreta.Web.Areas.LEPModul.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.LEPModul.ApiControllers
|
|
{
|
|
[ApiRoleClaimsAuthorize(true)]
|
|
[ApiRolePackageAuthorize(KretaClaimPackages.IsLEPKezelo.ClaimValue, KretaClaimPackages.Ellenorzo.ClaimValue)]
|
|
public class EloadasokKezeleseApiController : ApiController
|
|
{
|
|
private readonly ILepConfiguration LepConfiguration;
|
|
|
|
public EloadasokKezeleseApiController(ILepConfiguration lepConfiguration)
|
|
{
|
|
LepConfiguration = lepConfiguration ?? throw new ArgumentNullException(nameof(lepConfiguration));
|
|
}
|
|
|
|
public DataSourceResult GetEloadasokGrid(string data, [System.Web.Http.ModelBinding.ModelBinder(typeof(ModelBinder.DataSourceRequestModelBinder))] DataSourceRequest request)
|
|
{
|
|
try
|
|
{
|
|
EloadasokSearchModel model = JsonConvert.DeserializeObject<EloadasokSearchModel>(data);
|
|
List<EloadasokGridModel> lEloadasok = new List<EloadasokGridModel>();
|
|
List<EloadasokGridModel> LResult = new List<EloadasokGridModel>();
|
|
model.EvfolyamIdList = new List<int>();
|
|
|
|
if (model.EvfolyamID.HasValue)
|
|
{
|
|
model.EvfolyamIdList.Add(model.EvfolyamID.Value);
|
|
}
|
|
else
|
|
{
|
|
if (!model.IsMindenEvfolyamJog)
|
|
{
|
|
foreach (var item in new OsztalyCsoportHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetLEPOszlyCspoortByTanevAndFelhasznalo(ClaimData.FelhasznaloId))
|
|
{
|
|
model.EvfolyamIdList.Add(item.EvfolyamTipusa);
|
|
}
|
|
}
|
|
}
|
|
|
|
var client = new LepClient(LepConfiguration.Url, LepConfiguration.ApiKey);
|
|
var kozpontiResult = client.GetEloadasok(ClaimData.IntezmenyAzonosito, model.EvfolyamIdList);
|
|
|
|
if (kozpontiResult != null)
|
|
{
|
|
var groupedResult = kozpontiResult.GroupBy(x => (x.Id, x.IranyitoSzam, x.Telepules, x.KozteruletNev, x.KozteruletJellegNev, x.Hazszam, x.Kezdete, x.Vege, x.SzervezetNev, x.Nev, x.Leiras))
|
|
.ToDictionary(x => x.Key, x =>
|
|
(EvfolyamIdList: x.Select(y => y.Evfolyam).ToList(),
|
|
Ferohelyek: x.Select(y => (
|
|
FerohelyMax: y.KiseroLetszam + y.TanuloLetszam,
|
|
JelentkezokSzama: (y.KiseroJelentkezokSzama ?? 0) + (y.TanuloJelentkezokSzama ?? 0))).Distinct().Single(),
|
|
EngedelyezettLetszamok: x.Select(y => (
|
|
KiseroLetszam: y.KiseroLetszam,
|
|
KiseroLetszamFennmarado: y.KiseroLetszamFennmarado,
|
|
TanuloLetszam: y.TanuloLetszam,
|
|
TanuloLetszamFennmarado: y.TanuloLetszamFennmarado)).Distinct().Single(),
|
|
IsToroltJelentkezes: x.Select(y => y.IsToroltJelentkezes).Distinct().Single()));
|
|
|
|
foreach (var item in groupedResult)
|
|
{
|
|
if (item.Value.IsToroltJelentkezes)
|
|
{
|
|
new LepEloadasJegyzekHelper(ConnectionTypeExtensions.GetSessionConnectionType()).DeleteTanulokByEloadasId(item.Key.Id);
|
|
}
|
|
if (item.Value.EvfolyamIdList.Intersect(Core.Constants.LepEnabledEvfolyam).Any())
|
|
{
|
|
lEloadasok.Add(new EloadasokGridModel()
|
|
{
|
|
ID = $"{item.Key.Id}",
|
|
Helyszin = $"{item.Key.IranyitoSzam} {item.Key.Telepules} {item.Key.KozteruletNev} {item.Key.KozteruletJellegNev} {item.Key.Hazszam}",
|
|
Datum = item.Key.Kezdete.Date,
|
|
EloadasKezdete = item.Key.Kezdete,
|
|
EloadasVege = item.Key.Vege,
|
|
SzervezetNev = item.Key.SzervezetNev,
|
|
EloadasNev = item.Key.Nev,
|
|
FerohelyFoglaltHelyek = $"{item.Value.Ferohelyek.FerohelyMax} / {item.Value.Ferohelyek.JelentkezokSzama}",
|
|
EvFolyamIdList = string.Join(",", item.Value.EvfolyamIdList),
|
|
Leiras = item.Key.Leiras,
|
|
KiseroLetszam = item.Value.EngedelyezettLetszamok.KiseroLetszam,
|
|
TanuloLetszam = item.Value.EngedelyezettLetszamok.TanuloLetszam,
|
|
KiseroLetszamFennmarado = item.Value.EngedelyezettLetszamok.KiseroLetszamFennmarado,
|
|
TanuloLetszamFennmarado = item.Value.EngedelyezettLetszamok.TanuloLetszamFennmarado,
|
|
IsToroltJelentkezes = item.Value.IsToroltJelentkezes,
|
|
});
|
|
}
|
|
}
|
|
|
|
if (!string.IsNullOrWhiteSpace(model.EloadasNev))
|
|
lEloadasok = lEloadasok.Where(x => x.EloadasNev.ToLower().Contains(model.EloadasNev.ToLower())).ToList();
|
|
|
|
if (!string.IsNullOrWhiteSpace(model.Helyszin))
|
|
lEloadasok = lEloadasok.Where(x => x.Helyszin.ToLower().Contains(model.Helyszin.ToLower())).ToList();
|
|
|
|
if (model.EvfolyamID.HasValue)
|
|
lEloadasok = lEloadasok.Where(x => x.EvFolyamIdList.Contains(model.EvfolyamID.Value.ToString())).ToList();
|
|
|
|
if (model.IdoszakKezdete.HasValue || model.IdoszakVege.HasValue)
|
|
{
|
|
if (model.IdoszakKezdete.HasValue && model.IdoszakVege.HasValue)
|
|
lEloadasok = lEloadasok.Where(x => x.Datum >= model.IdoszakKezdete && x.Datum <= model.IdoszakVege).ToList();
|
|
|
|
if (model.IdoszakKezdete.HasValue && !model.IdoszakVege.HasValue)
|
|
lEloadasok = lEloadasok.Where(x => x.Datum >= model.IdoszakKezdete).ToList();
|
|
|
|
if (!model.IdoszakKezdete.HasValue && model.IdoszakVege.HasValue)
|
|
lEloadasok = lEloadasok.Where(x => x.Datum <= model.IdoszakVege).ToList();
|
|
}
|
|
|
|
if (!string.IsNullOrWhiteSpace(model.SzervezetNev))
|
|
lEloadasok = lEloadasok.Where(x => x.SzervezetNev.ToLower().Contains(model.SzervezetNev.ToLower())).ToList();
|
|
|
|
if (model.IdoszakKezdeteTime.HasValue)
|
|
lEloadasok = lEloadasok.Where(x => x.EloadasKezdete.Value.TimeOfDay == model.IdoszakKezdeteTime.Value.TimeOfDay).ToList();
|
|
|
|
if (model.IdoszakVegeTime.HasValue)
|
|
lEloadasok = lEloadasok.Where(x => x.EloadasVege.Value.TimeOfDay == model.IdoszakVegeTime.Value.TimeOfDay).ToList();
|
|
}
|
|
|
|
if (lEloadasok.Count > 0)
|
|
{
|
|
if (request.Sorts.Count == 1)
|
|
{
|
|
var sort = request.Sorts[0];
|
|
if (sort.Member == "Datum" && sort.SortDirection == ListSortDirection.Ascending)
|
|
{ LResult = lEloadasok.OrderBy(x => x.Datum).ToList(); }
|
|
if (sort.Member == "Datum" && sort.SortDirection == ListSortDirection.Descending)
|
|
{ LResult = lEloadasok.OrderByDescending(x => x.Datum).ToList(); }
|
|
|
|
if (sort.Member == "EloadasKezdete" && sort.SortDirection == ListSortDirection.Ascending)
|
|
{ LResult = lEloadasok.OrderBy(x => x.EloadasKezdete).ToList(); }
|
|
if (sort.Member == "EloadasKezdete" && sort.SortDirection == ListSortDirection.Descending)
|
|
{ LResult = lEloadasok.OrderByDescending(x => x.EloadasKezdete).ToList(); }
|
|
|
|
if (sort.Member == "EloadasVege" && sort.SortDirection == ListSortDirection.Ascending)
|
|
{ LResult = lEloadasok.OrderBy(x => x.EloadasVege).ToList(); }
|
|
if (sort.Member == "EloadasVege" && sort.SortDirection == ListSortDirection.Descending)
|
|
{ LResult = lEloadasok.OrderByDescending(x => x.EloadasVege).ToList(); }
|
|
|
|
if (sort.Member == "EloadasNev" && sort.SortDirection == ListSortDirection.Ascending)
|
|
{ LResult = lEloadasok.OrderBy(x => x.EloadasNev).ToList(); }
|
|
if (sort.Member == "EloadasNev" && sort.SortDirection == ListSortDirection.Descending)
|
|
{ LResult = lEloadasok.OrderByDescending(x => x.EloadasNev).ToList(); }
|
|
|
|
if (sort.Member == "Helyszin" && sort.SortDirection == ListSortDirection.Ascending)
|
|
{ LResult = lEloadasok.OrderBy(x => x.Helyszin).ToList(); }
|
|
if (sort.Member == "Helyszin" && sort.SortDirection == ListSortDirection.Descending)
|
|
{ LResult = lEloadasok.OrderByDescending(x => x.Helyszin).ToList(); }
|
|
|
|
if (sort.Member == "SzervezetNev" && sort.SortDirection == ListSortDirection.Ascending)
|
|
{ LResult = lEloadasok.OrderBy(x => x.SzervezetNev).ToList(); }
|
|
if (sort.Member == "SzervezetNev" && sort.SortDirection == ListSortDirection.Descending)
|
|
{ LResult = lEloadasok.OrderByDescending(x => x.SzervezetNev).ToList(); }
|
|
}
|
|
else
|
|
{
|
|
LResult = lEloadasok.ToList();
|
|
}
|
|
|
|
var cnt = LResult.Count;
|
|
var result = LResult.ToDataSourceResult();
|
|
result.Total = cnt;
|
|
result.Data = GetPage(LResult, request.Page, request.PageSize, cnt);
|
|
|
|
return result;
|
|
}
|
|
|
|
return new DataSourceResult();
|
|
}
|
|
catch
|
|
{
|
|
return new DataSourceResult();
|
|
}
|
|
|
|
}
|
|
|
|
public DataSourceResult GetEloadasokGondviseloGrid(string data, [System.Web.Http.ModelBinding.ModelBinder(typeof(ModelBinder.DataSourceRequestModelBinder))] DataSourceRequest request)
|
|
{
|
|
try
|
|
{
|
|
EloadasokSearchModel model = JsonConvert.DeserializeObject<EloadasokSearchModel>(data);
|
|
List<EloadasokGridModel> lEloadasok = new List<EloadasokGridModel>();
|
|
List<EloadasokGridModel> LResult = new List<EloadasokGridModel>();
|
|
model.EvfolyamIdList = new List<int>();
|
|
model.IntezmenyAzonosito = ClaimData.IntezmenyAzonosito;
|
|
|
|
if (model.EvfolyamID.HasValue)
|
|
{
|
|
model.EvfolyamIdList.Add(model.EvfolyamID.Value);
|
|
}
|
|
else
|
|
{
|
|
if (!model.IsMindenEvfolyamJog)
|
|
{
|
|
foreach (var item in new OsztalyCsoportHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetLEPOszlyCspoortByTanevAndFelhasznalo(ClaimData.FelhasznaloId))
|
|
{
|
|
model.EvfolyamIdList.Add(item.EvfolyamTipusa);
|
|
}
|
|
}
|
|
}
|
|
|
|
var client = new LepClient(LepConfiguration.Url, LepConfiguration.ApiKey);
|
|
var kozpontiResult = client.GetEloadasok(ClaimData.IntezmenyAzonosito, model.EvfolyamIdList);
|
|
|
|
if (kozpontiResult != null)
|
|
{
|
|
var groupedResult = kozpontiResult.GroupBy(x => (x.Id, x.IranyitoSzam, x.Telepules, x.KozteruletNev, x.KozteruletJellegNev, x.Hazszam, x.Kezdete, x.Vege, x.SzervezetNev, x.Nev, x.Leiras)).ToDictionary(x => x.Key, x => (EvfolyamIdList: x.Select(y => y.Evfolyam).ToList(), Ferohelyek: x.Select(y => (FerohelyMax: y.KiseroLetszam + y.TanuloLetszam, JelentkezokSzama: (y.KiseroJelentkezokSzama ?? 0) + (y.TanuloJelentkezokSzama ?? 0))).Distinct().Single(), EngedelyezettLetszamok: x.Select(y => (KiseroLetszam: y.KiseroLetszam, TanuloLetszam: y.TanuloLetszam)).Distinct().Single()));
|
|
foreach (var item in groupedResult)
|
|
{
|
|
if (item.Value.EvfolyamIdList.Intersect(Core.Constants.LepEnabledEvfolyam).Any())
|
|
{
|
|
lEloadasok.Add(new EloadasokGridModel()
|
|
{
|
|
ID = $"{item.Key.Id}",
|
|
Helyszin = $"{item.Key.IranyitoSzam} {item.Key.Telepules} {item.Key.KozteruletNev} {item.Key.KozteruletJellegNev} {item.Key.Hazszam}",
|
|
Datum = item.Key.Kezdete.Date,
|
|
EloadasKezdete = item.Key.Kezdete,
|
|
EloadasVege = item.Key.Vege,
|
|
SzervezetNev = item.Key.SzervezetNev,
|
|
EloadasNev = item.Key.Nev,
|
|
FerohelyFoglaltHelyek = $"{item.Value.Ferohelyek.FerohelyMax} / {item.Value.Ferohelyek.JelentkezokSzama}",
|
|
EvFolyamIdList = string.Join(",", item.Value.EvfolyamIdList),
|
|
KiseroLetszam = item.Value.EngedelyezettLetszamok.KiseroLetszam,
|
|
TanuloLetszam = item.Value.EngedelyezettLetszamok.TanuloLetszam,
|
|
});
|
|
}
|
|
}
|
|
}
|
|
|
|
var eHelper = new LepEloadasJegyzekHelper(ConnectionTypeExtensions.GetSessionConnectionType());
|
|
var tanuloEloadas = eHelper.GetTanuloEloadasai(ClaimData.FelhasznaloId);
|
|
List<EloadasokGridModel> removableList = new List<EloadasokGridModel>();
|
|
|
|
foreach (DataRow item in tanuloEloadas.Tables[0].Rows)
|
|
{
|
|
var removable = lEloadasok.Where(x => x.ID == (item.Field<int>("EloadasId")).ToString()).FirstOrDefault();
|
|
removableList.Add(removable);
|
|
}
|
|
|
|
lEloadasok.RemoveAll(item => !removableList.Contains(item));
|
|
|
|
foreach (var item in lEloadasok)
|
|
{
|
|
foreach (DataRow row in tanuloEloadas.Tables[0].Rows)
|
|
{
|
|
if (item.ID == (row.Field<int>("EloadasId")).ToString())
|
|
{
|
|
item.GondviseloElfogadas = row.Field<string>("GondviseloElfogadas");
|
|
item.Megjelent = row.Field<string>("Megjelent_BNAME");
|
|
}
|
|
}
|
|
}
|
|
|
|
if (!string.IsNullOrWhiteSpace(model.EloadasNev))
|
|
lEloadasok = lEloadasok.Where(x => x.EloadasNev.ToLower().Contains(model.EloadasNev.ToLower())).ToList();
|
|
|
|
if (!string.IsNullOrWhiteSpace(model.Helyszin))
|
|
lEloadasok = lEloadasok.Where(x => x.Helyszin.ToLower().Contains(model.Helyszin.ToLower())).ToList();
|
|
|
|
if (model.EvfolyamID.HasValue)
|
|
lEloadasok = lEloadasok.Where(x => x.EvFolyamIdList.Contains(model.EvfolyamID.Value.ToString())).ToList();
|
|
|
|
if (model.IdoszakKezdete.HasValue || model.IdoszakVege.HasValue)
|
|
{
|
|
if (model.IdoszakKezdete.HasValue && model.IdoszakVege.HasValue)
|
|
lEloadasok = lEloadasok.Where(x => x.Datum >= model.IdoszakKezdete && x.Datum <= model.IdoszakVege).ToList();
|
|
|
|
if (model.IdoszakKezdete.HasValue && !model.IdoszakVege.HasValue)
|
|
lEloadasok = lEloadasok.Where(x => x.Datum >= model.IdoszakKezdete).ToList();
|
|
|
|
if (!model.IdoszakKezdete.HasValue && model.IdoszakVege.HasValue)
|
|
lEloadasok = lEloadasok.Where(x => x.Datum <= model.IdoszakVege).ToList();
|
|
}
|
|
|
|
if (!string.IsNullOrWhiteSpace(model.SzervezetNev))
|
|
lEloadasok = lEloadasok.Where(x => x.SzervezetNev.ToLower().Contains(model.SzervezetNev.ToLower())).ToList();
|
|
|
|
if (model.IdoszakKezdeteTime.HasValue)
|
|
lEloadasok = lEloadasok.Where(x => x.EloadasKezdete.Value.TimeOfDay == model.IdoszakKezdeteTime.Value.TimeOfDay).ToList();
|
|
|
|
if (model.IdoszakVegeTime.HasValue)
|
|
lEloadasok = lEloadasok.Where(x => x.EloadasVege.Value.TimeOfDay == model.IdoszakVegeTime.Value.TimeOfDay).ToList();
|
|
|
|
if (lEloadasok.Count > 0)
|
|
{
|
|
if (request.Sorts.Count == 1)
|
|
{
|
|
var sort = request.Sorts[0];
|
|
if (sort.Member == "Datum" && sort.SortDirection == ListSortDirection.Ascending)
|
|
{ LResult = lEloadasok.OrderBy(x => x.Datum).ToList(); }
|
|
if (sort.Member == "Datum" && sort.SortDirection == ListSortDirection.Descending)
|
|
{ LResult = lEloadasok.OrderByDescending(x => x.Datum).ToList(); }
|
|
|
|
if (sort.Member == "EloadasKezdete" && sort.SortDirection == ListSortDirection.Ascending)
|
|
{ LResult = lEloadasok.OrderBy(x => x.EloadasKezdete).ToList(); }
|
|
if (sort.Member == "EloadasKezdete" && sort.SortDirection == ListSortDirection.Descending)
|
|
{ LResult = lEloadasok.OrderByDescending(x => x.EloadasKezdete).ToList(); }
|
|
|
|
if (sort.Member == "EloadasVege" && sort.SortDirection == ListSortDirection.Ascending)
|
|
{ LResult = lEloadasok.OrderBy(x => x.EloadasVege).ToList(); }
|
|
if (sort.Member == "EloadasVege" && sort.SortDirection == ListSortDirection.Descending)
|
|
{ LResult = lEloadasok.OrderByDescending(x => x.EloadasVege).ToList(); }
|
|
|
|
if (sort.Member == "EloadasNev" && sort.SortDirection == ListSortDirection.Ascending)
|
|
{ LResult = lEloadasok.OrderBy(x => x.EloadasNev).ToList(); }
|
|
if (sort.Member == "EloadasNev" && sort.SortDirection == ListSortDirection.Descending)
|
|
{ LResult = lEloadasok.OrderByDescending(x => x.EloadasNev).ToList(); }
|
|
|
|
if (sort.Member == "Helyszin" && sort.SortDirection == ListSortDirection.Ascending)
|
|
{ LResult = lEloadasok.OrderBy(x => x.Helyszin).ToList(); }
|
|
if (sort.Member == "Helyszin" && sort.SortDirection == ListSortDirection.Descending)
|
|
{ LResult = lEloadasok.OrderByDescending(x => x.Helyszin).ToList(); }
|
|
|
|
if (sort.Member == "SzervezetNev" && sort.SortDirection == ListSortDirection.Ascending)
|
|
{ LResult = lEloadasok.OrderBy(x => x.SzervezetNev).ToList(); }
|
|
if (sort.Member == "SzervezetNev" && sort.SortDirection == ListSortDirection.Descending)
|
|
{ LResult = lEloadasok.OrderByDescending(x => x.SzervezetNev).ToList(); }
|
|
}
|
|
else
|
|
{
|
|
LResult = lEloadasok.ToList();
|
|
}
|
|
|
|
var cnt = LResult.Count;
|
|
var result = LResult.ToDataSourceResult();
|
|
result.Total = cnt;
|
|
result.Data = GetPage(LResult, request.Page, request.PageSize, cnt);
|
|
|
|
return result;
|
|
}
|
|
|
|
return new DataSourceResult();
|
|
}
|
|
catch
|
|
{
|
|
return new DataSourceResult();
|
|
}
|
|
}
|
|
|
|
List<EloadasokGridModel> GetPage(List<EloadasokGridModel> list, int page, int pageSize, int fullCnt)
|
|
{
|
|
page--;
|
|
return list.Skip(page * pageSize).Take(pageSize).ToList();
|
|
}
|
|
|
|
public DataSourceResult GetEloadasokDetailGrid(string data, [System.Web.Mvc.ModelBinder(typeof(ModelBinder.DataSourceRequestModelBinder))] DataSourceRequest request)
|
|
{
|
|
var model = JsonConvert.DeserializeObject<EloadasokDetailModel>(data);
|
|
var id = int.Parse(model.ID);
|
|
var helper = new LepEloadasJegyzekHelper(ConnectionTypeExtensions.GetSessionConnectionType());
|
|
|
|
var result = helper.GetEloadasJegyzekek(id, ClaimData.FelhasznaloId, model.IsMindenEvfolyamJog, model.Datum.Value, model.EvFolyamId, model.SzervezetNev, model.EloadasNev, model.EloadasKezdete.Value, model.EloadasVege.Value, model.Helyszin);
|
|
|
|
return result.ToDataSourceResult();
|
|
}
|
|
|
|
public JsonResult<List<SelectListItem>> GetTanulokForEloadas(int? eloadasId = null, int? evfolyamId = null, string filter = null, string isMindenEvfolyamJog = null)
|
|
{
|
|
var list = new List<SelectListItem>();
|
|
|
|
if (eloadasId.HasValue && evfolyamId.HasValue)
|
|
{
|
|
var helper = new LepEloadasJegyzekHelper(ConnectionTypeExtensions.GetSessionConnectionType());
|
|
DataSet ds = helper.GetTanulokForEloadas(eloadasId.Value, evfolyamId.Value, filter, !string.IsNullOrWhiteSpace(isMindenEvfolyamJog) && SDAConvert.ToBoolean(isMindenEvfolyamJog) == false ? ClaimData.FelhasznaloId : (int?)null);
|
|
|
|
if (ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
|
|
{
|
|
list.AddRange(ds.Tables[0].AsEnumerable().Select(dataRow => new SelectListItem
|
|
{
|
|
Value = dataRow.Field<int>("TanuloId").ToString(),
|
|
Text = dataRow.Field<string>("TanuloNev").ToString(),
|
|
Selected = false
|
|
}).ToList());
|
|
}
|
|
}
|
|
|
|
return Json(list);
|
|
}
|
|
|
|
public JsonResult<List<SelectListItem>> GetTanulokForOsztaly(int? eloadasId = null, int? evfolyamId = null, string filter = null, string isMindenEvfolyamJog = null)
|
|
{
|
|
var list = new List<SelectListItem>();
|
|
|
|
if (eloadasId.HasValue && evfolyamId.HasValue && filter != null)
|
|
{
|
|
var helper = new LepEloadasJegyzekHelper(ConnectionTypeExtensions.GetSessionConnectionType());
|
|
DataSet ds = helper.GetTanulokForOsztaly(int.Parse(filter));
|
|
|
|
if (ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
|
|
{
|
|
list.AddRange(ds.Tables[0].AsEnumerable().Select(dataRow => new SelectListItem
|
|
{
|
|
Value = dataRow.Field<int>("TanuloId").ToString(),
|
|
Text = dataRow.Field<string>("TanuloNyomtatasiNev").ToString(),
|
|
Selected = false
|
|
}).ToList());
|
|
}
|
|
}
|
|
|
|
return Json(list);
|
|
}
|
|
|
|
public JsonResult<(List<SelectListItem>, List<SelectListItem>)> GetOsztalyokForEloadas(int? eloadasId = null, int? evfolyamId = null, string isMindenEvfolyamJog = null)
|
|
{
|
|
var list = new List<SelectListItem>();
|
|
var jelentkezettOsztalyList = new List<SelectListItem>();
|
|
|
|
if (eloadasId.HasValue && evfolyamId.HasValue)
|
|
{
|
|
var helper = new LepEloadasJegyzekHelper(ConnectionTypeExtensions.GetSessionConnectionType());
|
|
DataSet ds = helper.GetOsztalyokForEloadas(eloadasId.Value, evfolyamId.Value, !string.IsNullOrWhiteSpace(isMindenEvfolyamJog) && SDAConvert.ToBoolean(isMindenEvfolyamJog) == false ? ClaimData.FelhasznaloId : (int?)null);
|
|
DataSet jelentkezettOsztalyok = helper.GetJelentkeztetettOsztalyokIdForEloadas(eloadasId.Value, !string.IsNullOrWhiteSpace(isMindenEvfolyamJog) && SDAConvert.ToBoolean(isMindenEvfolyamJog) == false ? ClaimData.FelhasznaloId : (int?)null);
|
|
|
|
if (ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
|
|
{
|
|
list.AddRange(ds.Tables[0].AsEnumerable().Select(dataRow => new SelectListItem
|
|
{
|
|
Value = dataRow.Field<int>("Id").ToString(),
|
|
Text = dataRow.Field<string>("Nev").ToString(),
|
|
Selected = false
|
|
}).ToList());
|
|
}
|
|
|
|
if (jelentkezettOsztalyok.Tables.Count > 0 && jelentkezettOsztalyok.Tables[0].Rows.Count > 0)
|
|
{
|
|
var jelentkezettOsztalyokIdList = jelentkezettOsztalyok.Tables[0].AsEnumerable().Select(datarow => datarow.Field<int>("ID").ToString());
|
|
jelentkezettOsztalyList.AddRange(list.Where(x => jelentkezettOsztalyokIdList.Contains(x.Value)).ToList());
|
|
}
|
|
}
|
|
|
|
return Json((list, jelentkezettOsztalyList));
|
|
}
|
|
|
|
public JsonResult<List<SelectListItem>> GetEvfolyamokForEloadas(int? eloadasId = null, string evfolyamIdList = null, string isMindenEvfolyamJog = null)
|
|
{
|
|
var list = new List<SelectListItem>();
|
|
|
|
if (eloadasId.HasValue && !string.IsNullOrWhiteSpace(evfolyamIdList))
|
|
{
|
|
var evfolyamIds = evfolyamIdList.Split(",".ToCharArray());
|
|
list.AddRange(evfolyamIds.Select(x => new SelectListItem { Value = x, Text = ((EvfolyamTipusEnum)int.Parse(x)).GetDisplayName(ClaimData.SelectedTanevID.Value) }));
|
|
}
|
|
|
|
return Json(list);
|
|
}
|
|
|
|
[System.Web.Http.HttpPost]
|
|
[ApiValidateAjaxAntiForgeryToken]
|
|
public HttpResponseMessage SaveTanulokForEloadas(EloadasTanuloSaveModel model)
|
|
{
|
|
var id = int.Parse(model.eloadasId);
|
|
var helper = new LepEloadasJegyzekHelper(ConnectionTypeExtensions.GetSessionConnectionType());
|
|
var dbSzamossag = helper.GetEloadasSzamok(id);
|
|
var dbTanuloSzam = dbSzamossag.Tables[0].Rows[0].Field<int>("TanuloSzam");
|
|
var tanuloSzam = model.tanuIds != null ? model.tanuIds.Length + dbTanuloSzam : 0 + dbTanuloSzam;
|
|
var kiseroSzam = model.kiseroSzam;
|
|
|
|
string errors = string.Empty;
|
|
if (model.TanuloLetszamFennmarado.HasValue && (model.tanuIds?.Length ?? 0) > model.TanuloLetszamFennmarado.Value)
|
|
{
|
|
errors += string.Format("{0}<br/>", EloadasokResource.AFoglaltHelyekSzamaMeghaladjaATanuloKeretszamot);
|
|
}
|
|
|
|
if (model.kiseroSzam > model.KiseroLetszam)
|
|
{
|
|
errors += EloadasokResource.AFoglaltHelyekSzamaMeghaladjaAKiseroKeretszamot;
|
|
}
|
|
|
|
if (!string.IsNullOrWhiteSpace(errors))
|
|
{
|
|
throw new StatusError(HttpStatusCode.BadRequest, errors);
|
|
}
|
|
|
|
var client = new LepClient(LepConfiguration.Url, LepConfiguration.ApiKey);
|
|
var kozpontiResult = client.PostEloadasokTanuloszamossag(ClaimData.IntezmenyAzonosito, id, tanuloSzam, kiseroSzam);
|
|
|
|
if (kozpontiResult.Sikeres)
|
|
{
|
|
helper.SaveTanulokEloadas(id, model.tanuIds, model.kiseroSzam);
|
|
|
|
var ds = helper.GetTanulokForEloadasWithMegjelent(id, model.idopont);
|
|
try
|
|
{
|
|
client.PostEloadasokTanulojelenlet(ClaimData.IntezmenyAzonosito, id, ds);
|
|
}
|
|
catch { }
|
|
|
|
return new HttpResponseMessage(HttpStatusCode.OK);
|
|
}
|
|
else
|
|
{
|
|
throw new StatusError(HttpStatusCode.BadRequest, kozpontiResult.StatuszUzenet);
|
|
}
|
|
}
|
|
|
|
[System.Web.Http.HttpPost]
|
|
[ApiValidateAjaxAntiForgeryToken]
|
|
public HttpResponseMessage DeleteTanulokForEloadasByOsztaly(DeleteModel model)
|
|
{
|
|
var id = int.Parse(model.eloadasId);
|
|
var helper = new LepEloadasJegyzekHelper(ConnectionTypeExtensions.GetSessionConnectionType());
|
|
|
|
var row = helper.GetEloadasSzamok(id).Tables[0].Rows[0];
|
|
var dbTanuloSzam = row.Field<int>("TanuloSzam");
|
|
var dbKiseroSzam = row.Field<int>("KiseroSzam");
|
|
int torlendoTanuloSzam = helper.GetTorlendoTanuloSzam(id, model.osztalyId);
|
|
int kiseroSzam = (dbTanuloSzam - torlendoTanuloSzam) == 0 ? 0 : dbKiseroSzam;
|
|
|
|
var client = new LepClient(LepConfiguration.Url, LepConfiguration.ApiKey);
|
|
var kozpontiResult = client.PostEloadasokTanuloszamossag(ClaimData.IntezmenyAzonosito, id, dbTanuloSzam - torlendoTanuloSzam, dbKiseroSzam);
|
|
|
|
if (kozpontiResult.Sikeres)
|
|
{
|
|
helper.DeleteTanulokForEloadasByOsztaly(id, model.osztalyId);
|
|
if (kiseroSzam == 0)
|
|
{
|
|
helper.UpdateEloadasKiseroSzam(id, kiseroSzam);
|
|
}
|
|
|
|
return new HttpResponseMessage(HttpStatusCode.OK);
|
|
}
|
|
else
|
|
{
|
|
throw new StatusError(HttpStatusCode.BadRequest, kozpontiResult.StatuszUzenet);
|
|
}
|
|
}
|
|
|
|
[System.Web.Http.HttpPost]
|
|
[ApiValidateAjaxAntiForgeryToken]
|
|
public HttpResponseMessage SaveGondviseloEngedelyezes(GVEngedelyModel model)
|
|
{
|
|
var id = int.Parse(model.eloadasId);
|
|
var helper = new LepEloadasJegyzekHelper(ConnectionTypeExtensions.GetSessionConnectionType());
|
|
helper.SaveGondviseloEngedelyezes(id, model.tanuloId, ClaimData.GondviseloId.Value, model.engedelyezve == true ? "T" : model.engedelyezve == false ? "F" : "");
|
|
|
|
return new HttpResponseMessage(HttpStatusCode.OK);
|
|
}
|
|
|
|
[System.Web.Http.HttpPost]
|
|
[ApiValidateAjaxAntiForgeryToken]
|
|
public HttpResponseMessage SaveTanulokMegjelent(List<MegjelentDataModel> listModel)
|
|
{
|
|
var helper = new LepEloadasJegyzekHelper(ConnectionTypeExtensions.GetSessionConnectionType());
|
|
foreach (var item in listModel)
|
|
{
|
|
if (item.Id.HasValue)
|
|
{
|
|
helper.SaveTanulokMegjelent(item.Id.Value, item.Megjelent);
|
|
}
|
|
}
|
|
|
|
var ds = helper.GetTanulokForEloadasWithMegjelent(listModel[0].EloadasId, listModel[0].EloadasDatum);
|
|
var client = new LepClient(LepConfiguration.Url, LepConfiguration.ApiKey);
|
|
try
|
|
{
|
|
var kozpontiResult = client.PostEloadasokTanulojelenlet(ClaimData.IntezmenyAzonosito, listModel[0].EloadasId, ds);
|
|
if (!kozpontiResult.Sikeres)
|
|
{
|
|
throw new StatusError(HttpStatusCode.BadRequest, kozpontiResult.StatuszUzenet);
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
throw;
|
|
}
|
|
|
|
return new HttpResponseMessage(HttpStatusCode.OK);
|
|
}
|
|
|
|
[System.Web.Http.HttpPost]
|
|
[ApiValidateAjaxAntiForgeryToken]
|
|
public string DeleteTanulokForEloadas(int Id, string eloadasId, string szervNev, string eloadasNev, DateTime idopont, DateTime kezdete, DateTime vege)
|
|
{
|
|
var id = int.Parse(eloadasId);
|
|
var helper = new LepEloadasJegyzekHelper(ConnectionTypeExtensions.GetSessionConnectionType());
|
|
var dataRow = helper.GetEloadasSzamok(id).Tables[0].Rows[0];
|
|
int tanuloSzam = dataRow.Field<int>("TanuloSzam") - 1;
|
|
int kiseroSzam = tanuloSzam == 0 ? 0 : dataRow.Field<int>("KiseroSzam");
|
|
|
|
var client = new LepClient(LepConfiguration.Url, LepConfiguration.ApiKey);
|
|
var kozpontiResult = client.PostEloadasokTanuloszamossag(ClaimData.IntezmenyAzonosito, id, tanuloSzam, kiseroSzam);
|
|
|
|
if (kozpontiResult.Sikeres)
|
|
{
|
|
helper.DeleteTanuloEloadas(Id);
|
|
if (kiseroSzam == 0)
|
|
{
|
|
helper.UpdateEloadasKiseroSzam(id, kiseroSzam);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
throw new StatusError(HttpStatusCode.BadRequest, kozpontiResult.StatuszUzenet);
|
|
}
|
|
|
|
return eloadasId;
|
|
}
|
|
|
|
private void SendEmailLEPJelentkezes(int eloadasId, string[] tanuloIds, int dbTanuloSzam, string szervNev, string eloadasNev, string idopont, string kezdete, string vege)
|
|
{
|
|
var helper = new LepEloadasJegyzekHelper(ConnectionTypeExtensions.GetSessionConnectionType());
|
|
var emailList = helper.GetEloadasJelentkezesEmailData(eloadasId);
|
|
|
|
foreach (DataRow item in emailList.Tables[0].Rows)
|
|
{
|
|
if ((tanuloIds != null && tanuloIds.Length > 0 && tanuloIds.Contains(item.Field<int>("TanuloId").ToString())) || dbTanuloSzam == 0)
|
|
{
|
|
var uzenetHelper = new UzenetekHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType());
|
|
var emailMsg = string.Format(EmailResource.LEPJelentkezesContent,
|
|
item.Field<string>("Nev"),
|
|
item.Field<string>("TanuloNev"),
|
|
item.Field<string>("TanuloOsztalyNev"),
|
|
item.Field<string>("IntezmenyNev"),
|
|
szervNev,
|
|
eloadasNev,
|
|
idopont,
|
|
kezdete,
|
|
vege,
|
|
item.Field<string>("IntezmenyEmail")
|
|
);
|
|
//uzenetHelper.EmailKuldes(emailMsg, EmailResource.LEPJelentkezesSubject, item.Field<string>("EmailCim"), ClaimData.IntezmenyAzonosito);
|
|
}
|
|
}
|
|
}
|
|
|
|
private void SendEmailLEPTorles(int eloadasJegyzesId, string szervNev, string eloadasNev, string idopont, string kezdete, string vege)
|
|
{
|
|
var helper = new LepEloadasJegyzekHelper(ConnectionTypeExtensions.GetSessionConnectionType());
|
|
var emailList = helper.GetEloadasLemondasEmailData(eloadasJegyzesId);
|
|
|
|
foreach (DataRow item in emailList.Tables[0].Rows)
|
|
{
|
|
var uzenetHelper = new UzenetekHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType());
|
|
var emailMsg = string.Format(EmailResource.LEPTorlesContent,
|
|
item.Field<string>("Nev"),
|
|
item.Field<string>("TanuloNev"),
|
|
item.Field<string>("TanuloOsztalyNev"),
|
|
item.Field<string>("IntezmenyNev"),
|
|
szervNev,
|
|
eloadasNev,
|
|
idopont,
|
|
kezdete,
|
|
vege,
|
|
item.Field<string>("IntezmenyEmail")
|
|
);
|
|
//uzenetHelper.EmailKuldes(emailMsg, EmailResource.LEPTorlesSubject, item.Field<string>("EmailCim"), ClaimData.IntezmenyAzonosito);
|
|
}
|
|
}
|
|
}
|
|
}
|