kreta/KretaWeb/Areas/LEPModul/ApiControllers/EloadasokKezeleseApi.cs
2024-03-13 00:33:46 +01:00

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