init
This commit is contained in:
commit
e124a47765
19374 changed files with 9806149 additions and 0 deletions
|
@ -0,0 +1,136 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Net;
|
||||
using System.Net.Http;
|
||||
using System.Web.Http;
|
||||
using System.Web.Http.Results;
|
||||
using Kendo.Mvc.UI;
|
||||
using Kreta.BusinessLogic.Classes.ComboBox;
|
||||
using Kreta.BusinessLogic.HelperClasses.ImportCo;
|
||||
using Kreta.BusinessLogic.Helpers;
|
||||
using Kreta.BusinessLogic.Logic;
|
||||
using Kreta.BusinessLogic.Security;
|
||||
using Kreta.Core.Exceptions;
|
||||
using Kreta.Enums.ManualEnums;
|
||||
using Kreta.Resources;
|
||||
using Kreta.Web.Areas.Felhasznalok.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.Felhasznalok.ApiControllers
|
||||
{
|
||||
[ApiRoleClaimsAuthorize(true)]
|
||||
[ApiRolePackageAuthorize(KretaClaimPackages.Adminisztrator.ClaimValue, KretaClaimPackages.Osztalyfonok.ClaimValue, KretaClaimPackages.CsoportVezeto.ClaimValue)]
|
||||
public class FelhasznalokApiController : ApiController
|
||||
{
|
||||
public DataSourceResult GetFelhasznalokGrid(string data, DataSourceRequest request)
|
||||
{
|
||||
var model = JsonConvert.DeserializeObject<FelhasznalokSearchModel>(data);
|
||||
|
||||
var co = FelhasznalokSearchModel.ConvertModelToCo(model);
|
||||
|
||||
var gridParameter = Converter.GridParameter(request);
|
||||
|
||||
var helper = new FelhasznaloHelper(ConnectionTypeExtensions.GetSessionConnectionType());
|
||||
|
||||
var icHelper = new IntezmenyConfigHelper(ConnectionTypeExtensions.GetSystemConnectionType());
|
||||
|
||||
var hrModulEnabled = icHelper.GetIntezmenyConfig<bool>(IntezmenyConfigModulEnum.HRModul, IntezmenyConfigTipusEnum.IsEnabled);
|
||||
|
||||
var coList = helper.GetFelhasznaloList(co, hrModulEnabled);
|
||||
|
||||
var modelList = new List<FelhasznalokGridModel>();
|
||||
foreach (var item in coList)
|
||||
{
|
||||
var gridModel = new FelhasznalokGridModel(item);
|
||||
modelList.Add(gridModel);
|
||||
}
|
||||
|
||||
return modelList.ToDataSourceResult(gridParameter);
|
||||
}
|
||||
|
||||
public JsonResult<List<ComboBoxListItem>> GetFelhasznaloTipusList([DataSourceRequest] DataSourceRequest request)
|
||||
{
|
||||
var listItems = new List<ComboBoxListItem>
|
||||
{
|
||||
new ComboBoxListItem {Text = FelhasznalokResource.Alkalmazott , Value = ((int) FelhasznaloTipusEnum.Alkalmazott).ToString()},
|
||||
new ComboBoxListItem {Text = FelhasznalokResource.Gondviselo, Value = ((int) FelhasznaloTipusEnum.Gondviselo).ToString()},
|
||||
new ComboBoxListItem {Text = FelhasznalokResource.Tanulo, Value = ((int) FelhasznaloTipusEnum.Tanulo).ToString()}
|
||||
};
|
||||
return Json(listItems);
|
||||
}
|
||||
|
||||
[HttpPost]
|
||||
[ApiRolePackageDenyAuthorize(KretaClaimPackages.IsSzirIntezmeny.ClaimValue)]
|
||||
public HttpResponseMessage DeleteSelectedFelhasznaloBelepes(List<FelhasznalokBelepesTorlesModel> model)
|
||||
{
|
||||
try
|
||||
{
|
||||
var helper = new FelhasznaloHelper(ConnectionTypeExtensions.GetSessionConnectionType());
|
||||
foreach (var item in model)
|
||||
{
|
||||
helper.DeleteFelhasznaloBelepes(item.Id, item.IsGondviselo);
|
||||
}
|
||||
|
||||
return new HttpResponseMessage(HttpStatusCode.OK);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
throw new StatusError(HttpStatusCode.BadRequest, ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
public HttpResponseMessage GetExportGondviselokBelepesiAdatokNelkul(string data, DataSourceRequest request)
|
||||
{
|
||||
try
|
||||
{
|
||||
var model = JsonConvert.DeserializeObject<FelhasznalokSearchModel>(data);
|
||||
|
||||
var gridParameter = Converter.GridParameter(request);
|
||||
|
||||
var helper = new FelhasznaloHelper(ConnectionTypeExtensions.GetSessionConnectionType());
|
||||
|
||||
var coList = helper.GetGondviseloBelepesItemCoList(FelhasznalokSearchModel.ConvertModelToCo(model));
|
||||
|
||||
var simpleExportColumnCos = SimpleExportLogic.GetSimpleExportColumnCos<FelhasznaloBelepesImportItemCo>(FelhasznaloBelepesImportItemCo.GondviseloNemImportalhatoSorokExportAttributeId, helper.GetGondviseloBelepesiAdatokNelkulDropDownColumnSourceDictionary());
|
||||
|
||||
var memoryStream = SimpleExportLogic.GetExport(ImportExportFelhasznaloBelepesResource.GondviseloFelhasznaloBelepesiAdatok, simpleExportColumnCos, coList, ClaimData.SelectedTanevID.Value);
|
||||
|
||||
return HttpResponseExtensions.GetFileHttpResponse(memoryStream.ToArray(), FelhasznalokResource.GonviselokBelepesiAdatokNelkulExportFileName);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
throw new StatusError(HttpStatusCode.BadRequest, ErrorResource.HibaTortentAFajlExportalasaKozben) { UnHandledException = ex };
|
||||
}
|
||||
}
|
||||
|
||||
[HttpPost]
|
||||
public HttpResponseMessage BovitettJogosultsagGeneralas(List<int> gondviseloIdList)
|
||||
{
|
||||
try
|
||||
{
|
||||
var hozzaferesGeneralasaHelper = new HozzaferesGeneralasaHelper(ConnectionTypeExtensions.GetSessionConnectionType());
|
||||
|
||||
var belepesList = hozzaferesGeneralasaHelper.SetGondviseloToBovitett(gondviseloIdList, false);
|
||||
|
||||
if (!string.IsNullOrWhiteSpace(belepesList.EmailErrors))
|
||||
{
|
||||
throw new BlException(belepesList.EmailErrors);
|
||||
}
|
||||
|
||||
return new HttpResponseMessage(HttpStatusCode.OK);
|
||||
}
|
||||
catch (BlException ex)
|
||||
{
|
||||
throw new StatusError(HttpStatusCode.BadRequest, ex.Message);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
throw new StatusError(HttpStatusCode.BadRequest, ErrorResource.NemSikerultAMuvelet) { UnHandledException = ex };
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,137 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data;
|
||||
using System.IO;
|
||||
using System.Web.Http;
|
||||
using System.Web.Mvc;
|
||||
using Kreta.BusinessLogic.Helpers;
|
||||
using Kreta.BusinessLogic.Logic;
|
||||
using Kreta.BusinessLogic.Security;
|
||||
using Kreta.Enums.ManualEnums;
|
||||
using Kreta.Resources;
|
||||
using Kreta.Web.Areas.Felhasznalok.Models;
|
||||
using Kreta.Web.Helpers;
|
||||
using Kreta.Web.Models.EditorTemplates;
|
||||
using Kreta.Web.Security;
|
||||
using OfficeOpenXml;
|
||||
|
||||
namespace Kreta.Web.Areas.Felhasznalok.Controllers
|
||||
{
|
||||
[MvcRoleClaimsAuthorize(true)]
|
||||
[MvcRolePackageAuthorize(KretaClaimPackages.Adminisztrator.ClaimValue)]
|
||||
public class FelhasznalokController : Controller
|
||||
{
|
||||
public ActionResult Index(string filter)
|
||||
{
|
||||
var model = FelhasznalokSearchModel.SetFilterFelhasznalokSearchModel(filter);
|
||||
model.FeladatEllatasiHelyId = ClaimData.FelhelySzuro;
|
||||
return View("Index", model);
|
||||
}
|
||||
|
||||
public ActionResult Export([FromUri] FelhasznalokSearchModel model)
|
||||
{
|
||||
var stream = new MemoryStream();
|
||||
var co = FelhasznalokSearchModel.ConvertModelToCo(model);
|
||||
|
||||
var icHelper = new IntezmenyConfigHelper(ConnectionTypeExtensions.GetSystemConnectionType());
|
||||
var hrModulEnabled = icHelper.GetIntezmenyConfig<bool>(IntezmenyConfigModulEnum.HRModul, IntezmenyConfigTipusEnum.IsEnabled);
|
||||
var dataSet = new FelhasznaloHelper(ConnectionTypeExtensions.GetSessionConnectionType()).FelhasznaloKereses(co, hrModulEnabled);
|
||||
|
||||
var dataTable = dataSet.Tables[0];
|
||||
ExportLogic.TryCreateHeaderIfNotExist(dataTable);
|
||||
|
||||
using (var excel = new ExcelPackage(stream))
|
||||
{
|
||||
var workSheet = excel.Workbook.Worksheets.Add(FelhasznalokResource.Export);
|
||||
|
||||
(string nameFrom, string nameTo, Type type)[] map = new[]
|
||||
{
|
||||
("FelhasznaloNyomtatasiNeveElotagNelkul", FelhasznalokResource.FelhasznaloNyomtatasiNeve, typeof(string)),
|
||||
("OktatasiAzonosito", FelhasznalokResource.OktatasiAzonosito, typeof(string)),
|
||||
("FelhasznaloTipusa", FelhasznalokResource.FelhasznaloTipusa, typeof(string)),
|
||||
("FelhasznaloNev", FelhasznalokResource.FelhasznaloNev, typeof(string)),
|
||||
("UtolsoBelepes", FelhasznalokResource.BelepesiDatum, typeof(string)),
|
||||
("UtolsoBelepesMobil", FelhasznalokResource.BelepesiDatumMobil, typeof(string)),
|
||||
("JelszovaltoztatasIdeje", FelhasznalokResource.JelszoModositasIdeje, typeof(string)),
|
||||
("Jogosultsag", FelhasznalokResource.Jogosultsag, typeof(string)),
|
||||
("CsokkentettGondviselo_BNAME", FelhasznalokResource.CsokkentettGondviselo, typeof(string)),
|
||||
("TorvenyesKepviselo_BNAME", FelhasznalokResource.TorvenyesKepviselo, typeof(string)),
|
||||
("Tanulo", FelhasznalokResource.TanuloNeve, typeof(string)),
|
||||
("Osztaly", FelhasznalokResource.TanuloOsztalyfonokOsztalya, typeof(string)),
|
||||
("IsAktiv", FelhasznalokResource.Aktiv, typeof(string))
|
||||
};
|
||||
workSheet.Cells[1, 1].LoadFromDataTable(ExportLogic.MapDataTable(dataTable, map), true);
|
||||
|
||||
ExportLogic.SetHeaderStyles(workSheet.Cells[1, 1, 1, map.Length]);
|
||||
|
||||
workSheet.Cells.AutoFitColumns();
|
||||
excel.Save();
|
||||
}
|
||||
|
||||
stream.Position = 0;
|
||||
|
||||
var result = new FileStreamResult(stream, Core.Constants.ContentTypes.Xlsx) { FileDownloadName = FelhasznalokResource.Export + "_" + DateTime.Now.ToString("yyyy_MM_dd") + ".xlsx" };
|
||||
return result;
|
||||
}
|
||||
|
||||
[MvcRolePackageDenyAuthorize(KretaClaimPackages.IsSzirIntezmeny.ClaimValue)]
|
||||
public ActionResult AzonositoGeneralasPopup(bool isTanulo, bool isGondviselo, bool isAlkalmazott, List<int> idList = null, bool generaltFileLetoltes = true, bool emailKuldes = true)
|
||||
{
|
||||
var hozzaferesModel = new FelhasznalokJelszoGeneralasModel
|
||||
{
|
||||
IdList = idList,
|
||||
ConfirmText = "A kijelölt felhasználó(k)nak új jelszó lesz generálva. Biztosan folytatja?",
|
||||
EmailKuldes = emailKuldes,
|
||||
GeneraltFileLetoltes = generaltFileLetoltes,
|
||||
IsTanulo = isTanulo,
|
||||
IsGondviselo = isGondviselo,
|
||||
IsAlkalmazott = isAlkalmazott
|
||||
};
|
||||
|
||||
var model = new PopUpModel(hozzaferesModel, "JelszoGeneralasModal");
|
||||
model.AddBtn(model, "hozzaferes_generalas_Nem", CommonResource.Nem, "KretaWindowHelper.destroyAllWindow");
|
||||
|
||||
var postFix = "";
|
||||
if (isTanulo)
|
||||
{ postFix = "Tanulo"; }
|
||||
else if (isGondviselo)
|
||||
{ postFix = "Gondviselo"; }
|
||||
model.AddBtn(model, "hozzaferes_generalas_Igen", CommonResource.Igen, "FelhasznaloHelper.setUjJelszoIgenyles" + postFix);
|
||||
|
||||
return PartialView(Constants.General.PopupView, model);
|
||||
}
|
||||
|
||||
public ActionResult EmailErrorFileDownload(string emailErrors)
|
||||
{
|
||||
var data = emailErrors.Replace("<br />", "*");
|
||||
var splittedString = data.Split('*');
|
||||
|
||||
var dataTable = new DataTable();
|
||||
dataTable.Columns.Add("Column1");
|
||||
foreach (var s in splittedString)
|
||||
{
|
||||
dataTable.Rows.Add(s);
|
||||
}
|
||||
|
||||
var stream = new MemoryStream();
|
||||
using (var excel = new ExcelPackage(stream))
|
||||
{
|
||||
var workSheet = excel.Workbook.Worksheets.Add(FelhasznalokResource.HibasEmail);
|
||||
|
||||
(string nameFrom, string nameTo, Type type)[] map = new[]
|
||||
{
|
||||
("Column1", "Column1", typeof(string)),
|
||||
};
|
||||
workSheet.Cells[1, 1].LoadFromDataTable(ExportLogic.MapDataTable(dataTable, map), true);
|
||||
|
||||
workSheet.Cells.AutoFitColumns();
|
||||
excel.Save();
|
||||
}
|
||||
|
||||
stream.Position = 0;
|
||||
|
||||
var result = new FileStreamResult(stream, Core.Constants.ContentTypes.Xlsx) { FileDownloadName = FelhasznalokResource.EmailError + "_" + DateTime.Now.ToString("yyyy_MM_dd") + ".xlsx" };
|
||||
return result;
|
||||
}
|
||||
}
|
||||
}
|
21
KretaWeb/Areas/Felhasznalok/FelhasznalokAreaRegistration.cs
Normal file
21
KretaWeb/Areas/Felhasznalok/FelhasznalokAreaRegistration.cs
Normal file
|
@ -0,0 +1,21 @@
|
|||
using System.Web.Mvc;
|
||||
|
||||
namespace Kreta.Web.Areas.Felhasznalok
|
||||
{
|
||||
public class FelhasznalokAreaRegistration : AreaRegistration
|
||||
{
|
||||
public override string AreaName
|
||||
{
|
||||
get { return "Felhasznalok"; }
|
||||
}
|
||||
|
||||
public override void RegisterArea(AreaRegistrationContext context)
|
||||
{
|
||||
context.MapRoute(
|
||||
"Felhasznalok_default",
|
||||
"Felhasznalok/{controller}/{action}/{id}",
|
||||
new { action = "Index", id = UrlParameter.Optional }
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,8 @@
|
|||
namespace Kreta.Web.Areas.Felhasznalok.Models
|
||||
{
|
||||
public class FelhasznalokBelepesTorlesModel
|
||||
{
|
||||
public int Id { get; set; }
|
||||
public bool IsGondviselo { get; set; }
|
||||
}
|
||||
}
|
80
KretaWeb/Areas/Felhasznalok/Models/FelhasznalokGridModel.cs
Normal file
80
KretaWeb/Areas/Felhasznalok/Models/FelhasznalokGridModel.cs
Normal file
|
@ -0,0 +1,80 @@
|
|||
using System;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using Kreta.BusinessLogic.HelperClasses;
|
||||
using Kreta.BusinessLogic.Interfaces;
|
||||
using Kreta.Resources;
|
||||
|
||||
namespace Kreta.Web.Areas.Felhasznalok.Models
|
||||
{
|
||||
public class FelhasznalokGridModel : IKretaIdentity
|
||||
{
|
||||
public FelhasznalokGridModel()
|
||||
{
|
||||
}
|
||||
|
||||
public FelhasznalokGridModel(FelhasznaloGridItemCo itemCo)
|
||||
{
|
||||
ID = itemCo.ID;
|
||||
FelhasznaloNyomtatasiNeve = itemCo.FelhasznaloNyomtatasiNeve;
|
||||
FelhasznaloNyomtatasiNeveElotagNelkul = itemCo.FelhasznaloNyomtatasiNeveElotagNelkul;
|
||||
FelhasznaloTipusa = itemCo.FelhasznaloTipusa;
|
||||
FelhasznaloNev = itemCo.FelhasznaloNev;
|
||||
UtolsoBelepes = itemCo.UtolsoBelepes;
|
||||
UtolsoBelepesMobil = itemCo.UtolsoBelepesMobil;
|
||||
JelszovaltoztatasIdeje = itemCo.JelszovaltoztatasIdeje;
|
||||
Jogosultsag = itemCo.Jogosultsag;
|
||||
Tanulo = itemCo.Tanulo;
|
||||
Osztaly = itemCo.Osztaly;
|
||||
FelhasznaloEgyediAzonosito = itemCo.FelhasznaloEgyediAzonosito;
|
||||
GondviseloEgyediAzonosito = itemCo.GondviseloEgyediAzonosito;
|
||||
TanuloId = itemCo.TanuloId;
|
||||
GondviseloBovitettJog_BNAME = itemCo.GondviseloBovitettJog_BNAME;
|
||||
}
|
||||
|
||||
public string ID { get; set; }
|
||||
public string TanuloId { get; set; }
|
||||
public int? OsztalyCsoportId { get; set; }
|
||||
|
||||
[Display(Name = nameof(FelhasznalokResource.FelhasznaloNyomtatasiNeve), ResourceType = typeof(FelhasznalokResource))]
|
||||
public string FelhasznaloNyomtatasiNeve { get; set; }
|
||||
|
||||
[Display(Name = nameof(FelhasznalokResource.FelhasznaloNyomtatasiNeve), ResourceType = typeof(FelhasznalokResource))]
|
||||
public string FelhasznaloNyomtatasiNeveElotagNelkul { get; set; }
|
||||
|
||||
[Display(Name = nameof(FelhasznalokResource.FelhasznaloTipusa), ResourceType = typeof(FelhasznalokResource))]
|
||||
public string FelhasznaloTipusa { get; set; }
|
||||
|
||||
[Display(Name = nameof(FelhasznalokResource.FelhasznaloNev), ResourceType = typeof(FelhasznalokResource))]
|
||||
public string FelhasznaloNev { get; set; }
|
||||
|
||||
[Display(Name = nameof(FelhasznalokResource.BelepesiDatum), ResourceType = typeof(FelhasznalokResource))]
|
||||
public DateTime? UtolsoBelepes { get; set; }
|
||||
|
||||
[Display(Name = nameof(FelhasznalokResource.BelepesiDatumMobil), ResourceType = typeof(FelhasznalokResource))]
|
||||
public DateTime? UtolsoBelepesMobil { get; set; }
|
||||
|
||||
[Display(Name = nameof(FelhasznalokResource.JelszoModositasIdeje), ResourceType = typeof(FelhasznalokResource))]
|
||||
public DateTime? JelszovaltoztatasIdeje { get; set; }
|
||||
|
||||
public int Id { get; set; }
|
||||
|
||||
[Display(Name = nameof(FelhasznalokResource.Jogosultsag), ResourceType = typeof(FelhasznalokResource))]
|
||||
public string Jogosultsag { get; set; }
|
||||
|
||||
[Display(Name = nameof(FelhasznalokResource.TanuloNeve), ResourceType = typeof(FelhasznalokResource))]
|
||||
public string Tanulo { get; set; }
|
||||
|
||||
[Display(Name = nameof(FelhasznalokResource.TanuloOsztalyfonokOsztalya), ResourceType = typeof(FelhasznalokResource))]
|
||||
public string Osztaly { get; set; }
|
||||
|
||||
[Display(Name = nameof(FelhasznalokResource.CsokkentettGondviselo), ResourceType = typeof(FelhasznalokResource))]
|
||||
public string CsokkentettGondviselo_BNAME { get; set; }
|
||||
|
||||
[Display(Name = nameof(FelhasznalokResource.GondviseloBovitettJog), ResourceType = typeof(FelhasznalokResource))]
|
||||
public string GondviseloBovitettJog_BNAME { get; set; }
|
||||
|
||||
public string FelhasznaloEgyediAzonosito { get; set; }
|
||||
|
||||
public string GondviseloEgyediAzonosito { get; set; }
|
||||
}
|
||||
}
|
|
@ -0,0 +1,23 @@
|
|||
using System.Collections.Generic;
|
||||
|
||||
namespace Kreta.Web.Areas.Felhasznalok.Models
|
||||
{
|
||||
public class FelhasznalokJelszoGeneralasModel
|
||||
{
|
||||
public FelhasznalokJelszoGeneralasModel()
|
||||
{
|
||||
ErrorList = new List<string>();
|
||||
}
|
||||
|
||||
public bool GeneraltFileLetoltes { get; set; }
|
||||
public bool EmailKuldes { get; set; }
|
||||
public List<int> IdList { get; set; } = new List<int>();
|
||||
public List<string> ErrorList { get; set; }
|
||||
public string ConfirmText { get; set; }
|
||||
public string FileString { get; set; }
|
||||
public bool IsError { get; set; }
|
||||
public bool IsTanulo { get; set; }
|
||||
public bool IsGondviselo { get; set; }
|
||||
public bool IsAlkalmazott { get; set; }
|
||||
}
|
||||
}
|
26
KretaWeb/Areas/Felhasznalok/Models/FelhasznalokModel.cs
Normal file
26
KretaWeb/Areas/Felhasznalok/Models/FelhasznalokModel.cs
Normal file
|
@ -0,0 +1,26 @@
|
|||
using Kreta.BusinessLogic.Classes;
|
||||
using Kreta.Web.Models.EditorTemplates;
|
||||
|
||||
namespace Kreta.Web.Areas.Felhasznalok.Models
|
||||
{
|
||||
public class FelhasznalokModel : TabStripModel
|
||||
{
|
||||
public FelhasznalokModel()
|
||||
{
|
||||
AlapAdatModel = new AlapAdatModel();
|
||||
}
|
||||
|
||||
public int? AlkalmazottId { get; set; }
|
||||
|
||||
[ValidateObject]
|
||||
public AlapAdatModel AlapAdatModel { get; set; }
|
||||
}
|
||||
|
||||
public class AlapAdatModel
|
||||
{
|
||||
public AlapAdatModel()
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
}
|
110
KretaWeb/Areas/Felhasznalok/Models/FelhasznalokSearchModel.cs
Normal file
110
KretaWeb/Areas/Felhasznalok/Models/FelhasznalokSearchModel.cs
Normal file
|
@ -0,0 +1,110 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using Kreta.BusinessLogic.HelperClasses;
|
||||
using Kreta.BusinessLogic.Helpers.SystemSettings;
|
||||
using Kreta.Enums;
|
||||
using Kreta.Resources;
|
||||
using Kreta.Web.Helpers;
|
||||
using Kreta.Web.Security;
|
||||
|
||||
namespace Kreta.Web.Areas.Felhasznalok.Models
|
||||
{
|
||||
public class FelhasznalokSearchModel
|
||||
{
|
||||
public FelhasznalokSearchModel()
|
||||
{
|
||||
if (ClaimData.IsVegyes)
|
||||
{
|
||||
FeladatKategoriaId = new SystemSettingsHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetSystemSettingValue<int>(RendszerBeallitasTipusEnum.Default_Feladat_Kategoria);
|
||||
}
|
||||
}
|
||||
|
||||
[Display(Name = nameof(OsztalyCsoportResource.EllatottKoznevelesiFeladatTipus), ResourceType = typeof(OsztalyCsoportResource))]
|
||||
public int? FeladatKategoriaId { get; set; }
|
||||
[Display(Name = nameof(FelhasznalokResource.Nev), ResourceType = typeof(FelhasznalokResource))]
|
||||
public string FelhasznaloNyomtatasiNeve { get; set; }
|
||||
|
||||
[Display(Name = nameof(FelhasznalokResource.FelhasznaloNev), ResourceType = typeof(FelhasznalokResource))]
|
||||
public string FelhasznaloNev { get; set; }
|
||||
|
||||
[Display(Name = nameof(FelhasznalokResource.BelepesiDatum), ResourceType = typeof(FelhasznalokResource))]
|
||||
public DateTime? BelepesDatumTol { get; set; }
|
||||
public DateTime? BelepesDatumIg { get; set; }
|
||||
|
||||
[Display(Name = nameof(FelhasznalokResource.FelhasznaloTipusa), ResourceType = typeof(FelhasznalokResource))]
|
||||
public int? FelhasznaloTipusa { get; set; }
|
||||
|
||||
[Display(Name = nameof(FelhasznalokResource.JelszoValtozottE), ResourceType = typeof(FelhasznalokResource))]
|
||||
public int? JelszoValtozottE { get; set; }
|
||||
|
||||
[Display(Name = nameof(FelhasznalokResource.VanBelepese), ResourceType = typeof(FelhasznalokResource))]
|
||||
public int? VanBelepese { get; set; }
|
||||
|
||||
[Display(Name = nameof(FelhasznalokResource.Jogosultsag), ResourceType = typeof(FelhasznalokResource))]
|
||||
public List<int> JogosultsagIdList { get; set; }
|
||||
|
||||
public bool? GondviseloBelepesNelkul { get; set; }
|
||||
|
||||
[Display(Name = nameof(FelhasznalokResource.TanuloNeve), ResourceType = typeof(FelhasznalokResource))]
|
||||
public string Tanulo { get; set; }
|
||||
|
||||
[Display(Name = nameof(FelhasznalokResource.TanuloOsztalyfonokOsztalya), ResourceType = typeof(FelhasznalokResource))]
|
||||
public int? OsztalyId { get; set; }
|
||||
|
||||
[Display(Name = nameof(FelhasznalokResource.CsokkentettGondviselo), ResourceType = typeof(FelhasznalokResource))]
|
||||
public int? CsokkentettGondviseloE { get; set; }
|
||||
|
||||
[Display(Name = nameof(FelhasznalokResource.GondviseloBovitettJog), ResourceType = typeof(FelhasznalokResource))]
|
||||
public int? GondviseloBovitettJogE { get; set; }
|
||||
|
||||
[Display(Name = nameof(FelhasznalokResource.TorvenyesKepviselo), ResourceType = typeof(FelhasznalokResource))]
|
||||
public int? TorvenyesKepviseloE { get; set; }
|
||||
|
||||
[Display(Name = nameof(CommonResource.Feladatellatasihely), ResourceType = typeof(CommonResource))]
|
||||
public int? FeladatEllatasiHelyId { get; set; }
|
||||
|
||||
[Display(Name = nameof(TanuloResource.Aktiv), ResourceType = typeof(TanuloResource))]
|
||||
public bool IsAktiv { get; set; } = true;
|
||||
|
||||
public static FelhasznalokCO ConvertModelToCo(FelhasznalokSearchModel model)
|
||||
{
|
||||
return new FelhasznalokCO()
|
||||
{
|
||||
FeladatKategoriaId = model.FeladatKategoriaId,
|
||||
BelepesDatumIg = model.BelepesDatumIg,
|
||||
BelepesDatumTol = model.BelepesDatumTol,
|
||||
FelhasznaloNev = model.FelhasznaloNev,
|
||||
FelhasznaloNyomtatasiNeve = model.FelhasznaloNyomtatasiNeve,
|
||||
FelhasznaloTipusa = model.FelhasznaloTipusa,
|
||||
JelszoValtozottE = model.JelszoValtozottE,
|
||||
VanBelepese = model.VanBelepese,
|
||||
GondviseloBelepesNelkul = model.GondviseloBelepesNelkul,
|
||||
JogosultsagIdList = model.JogosultsagIdList,
|
||||
Tanulo = model.Tanulo,
|
||||
OsztalyId = model.OsztalyId,
|
||||
CsokkentettGondviseloE = model.CsokkentettGondviseloE,
|
||||
GondviseloBovitettJogE = model.GondviseloBovitettJogE,
|
||||
TorvenyesKepviseloE = model.TorvenyesKepviseloE,
|
||||
FeladatEllatasiHelyId = model.FeladatEllatasiHelyId,
|
||||
IsAktiv = model.IsAktiv
|
||||
};
|
||||
}
|
||||
|
||||
public static FelhasznalokSearchModel SetFilterFelhasznalokSearchModel(string filter)
|
||||
{
|
||||
FelhasznalokSearchModel result = new FelhasznalokSearchModel();
|
||||
|
||||
switch (filter)
|
||||
{
|
||||
case "nincsbelepesgondviselo":
|
||||
result.GondviseloBelepesNelkul = true;
|
||||
result.IsAktiv = false;
|
||||
result.FeladatKategoriaId = Constants.MindenErteke.FeladatKategoria;
|
||||
break;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
||||
}
|
631
KretaWeb/Areas/Felhasznalok/Views/Felhasznalok/Index.cshtml
Normal file
631
KretaWeb/Areas/Felhasznalok/Views/Felhasznalok/Index.cshtml
Normal file
|
@ -0,0 +1,631 @@
|
|||
@using Kreta.Web.Helpers.Grid;
|
||||
@using Kreta.BusinessLogic.Classes;
|
||||
@using Kreta.Web.Areas.Felhasznalok.Models;
|
||||
@using Kreta.Web.Security;
|
||||
@using Kreta.Enums.ManualEnums;
|
||||
@using Kreta.Resources;
|
||||
@model FelhasznalokSearchModel
|
||||
|
||||
@{
|
||||
const string TanuloController = Constants.Controllers.Tanulo;
|
||||
const string AlkalmazottController = Constants.Controllers.Alkalmazott;
|
||||
const string FelhasznalokController = Constants.Controllers.Felhasznalok;
|
||||
|
||||
List<FunctionCommand> functions = new List<FunctionCommand> { };
|
||||
List<FunctionCommand> nestedFunctions = new List<FunctionCommand> { };
|
||||
nestedFunctions.Add(new FunctionCommand { Name = AdminisztracioResource.TanuloJelszoGeneralas, ClientAction = "function() { FelhasznaloHelper.AzonositoGeneralasKijelolteknekConfirmWindow('T'); }" });
|
||||
//nestedFunctions.Add(new FunctionCommand { Name = AdminisztracioResource.GondviseloJelszoGeneralas, ClientAction = "function() { FelhasznaloHelper.AzonositoGeneralasKijelolteknekConfirmWindow('G'); }" });
|
||||
//nestedFunctions.Add(new FunctionCommand { Name = "Alkalmazott jelszó újragenerálás", ClientAction = "function() { FelhasznaloHelper.AzonositoGeneralasKijelolteknekConfirmWindow('A'); }" });
|
||||
|
||||
List<FunctionCommand> nestedExportFunctions = new List<FunctionCommand>
|
||||
{
|
||||
new FunctionCommand { Name = ImportExportCommonResource.Export, ClientAction = "FelhasznaloHelper.exportGrid" },
|
||||
new FunctionCommand { Name = FelhasznalokResource.GondviselokBelepesiAdatokNelkulImporthozExport, ClientAction = "FelhasznaloHelper.getExportGondviselokBelepesiAdatokNelkul" }
|
||||
};
|
||||
|
||||
functions.Add( (Model.GondviseloBelepesNelkul.HasValue && Model.GondviseloBelepesNelkul.Value && !Model.IsAktiv && Model.FeladatKategoriaId == -1) ? new FunctionCommand { Name = ImportExportCommonResource.Export.ToUpper(), NestedCommands = nestedExportFunctions } : new FunctionCommand { Name = ImportExportCommonResource.Export, ClientAction = "FelhasznaloHelper.exportGrid" });
|
||||
|
||||
if (!ClaimData.IsSzirIntezmeny)
|
||||
{
|
||||
functions.Add(new FunctionCommand { Name = AdminisztracioResource.JelszoGeneralas.ToUpper(), NestedCommands = nestedFunctions });
|
||||
//functions.Add(new FunctionCommand { Name = CommonResource.BovitettGondviseloGeneralas, ClientAction = "function() { FelhasznaloHelper.bovitettGondviseloGeneralas('G') }" });
|
||||
functions.Add(new FunctionCommand { Name = CommonResource.BelepesiAdatokTorlese, ClientAction = "FelhasznaloHelper.belepesiAdatTorlesConfirm", Classes = "kendo-gridFunctionKommandRed" });
|
||||
}
|
||||
|
||||
functions.Add(new FunctionCommand { Name = CommonResource.BovitettJogosultsag, ClientAction = "FelhasznaloHelper.BovitettJogosultsagConfirm"});
|
||||
}
|
||||
|
||||
@section AddSearchPanel {
|
||||
@using (Html.SearchPanelSideBar("searchForm", "FelhasznalokGrid"))
|
||||
{
|
||||
if (ClaimData.IsVegyes)
|
||||
{
|
||||
@Html.KretaComboBoxFor(model => model.FeladatKategoriaId, Url.HttpRouteUrl(Constants.RouteKey.ActionApi, new { controller = "ComboBoxHelperApi", action = "GetFeladatKategoriaSzuro" }), "Text", "Value", isSingleElementSet: false).AutoBind(true).RenderSearchPanelSideBar()
|
||||
}
|
||||
@Html.KretaTextBoxFor(model => model.FelhasznaloNyomtatasiNeve).RenderSearchPanelSideBar()
|
||||
@Html.KretaComboBoxFor(model => model.FelhasznaloTipusa, Url.HttpRouteUrl(Constants.RouteKey.ActionApi, new { controller = "FelhasznalokApi", action = "GetFelhasznaloTipusList" }), "Text", "Value", isSingleElementSet: false).RenderSearchPanelSideBar()
|
||||
@Html.KretaTextBoxFor(model => model.FelhasznaloNev).RenderSearchPanelSideBar()
|
||||
@Html.KretaCheckBoxFor(model => model.IsAktiv).RenderSearchPanelSideBar()
|
||||
@Html.KretaComboBoxFor(model => model.VanBelepese, Url.HttpRouteUrl(Constants.RouteKey.ActionApi, new { controller = "ComboBoxHelperEnumApi", action = "GetIgenNemEnumList" }), isSingleElementSet: false).RenderSearchPanelSideBar()
|
||||
@Html.KretaComboBoxFor(model => model.JelszoValtozottE, Url.HttpRouteUrl(Constants.RouteKey.ActionApi, new { controller = "ComboBoxHelperEnumApi", action = "GetIgenNemEnumList" }), isSingleElementSet: false).RenderSearchPanelSideBar()
|
||||
@Html.KretaRangeDatePickerSideBar(model => model.BelepesDatumTol, model => model.BelepesDatumIg)
|
||||
@Html.KretaMultiSelectFor(model => model.JogosultsagIdList, Url.HttpRouteUrl(Constants.RouteKey.ActionApi, new { controller = "ComboBoxHelperEnumApi", action = "GetJogosultsagList" }), isSingleElementSet: false).RenderSearchPanelSideBar()
|
||||
@Html.KretaComboBoxFor(model => model.GondviseloBovitettJogE, Url.HttpRouteUrl(Constants.RouteKey.ActionApi, new { controller = "ComboBoxHelperEnumApi", action = "GetIgenNemEnumList" }), isSingleElementSet: false).RenderSearchPanelSideBar()
|
||||
@Html.KretaComboBoxFor(model => model.TorvenyesKepviseloE, Url.HttpRouteUrl(Constants.RouteKey.ActionApi, new { controller = "ComboBoxHelperEnumApi", action = "GetIgenNemEnumList" }), isSingleElementSet: false).RenderSearchPanelSideBar()
|
||||
@Html.KretaTextBoxFor(model => model.Tanulo).RenderSearchPanelSideBar()
|
||||
@Html.KretaComboBoxFor(model => model.OsztalyId, Url.HttpRouteUrl(Constants.RouteKey.ActionApi, new { controller = Constants.ApiControllers.ComboBoxHelperApi, action = "GetOsztalyListByEvfolyam" }), isSingleElementSet: false).RenderSearchPanelSideBar()
|
||||
@Html.HiddenFor(model => model.GondviseloBelepesNelkul)
|
||||
@Html.KretaComboBoxFor(model => model.FeladatEllatasiHelyId, Url.HttpRouteUrl(Constants.RouteKey.ActionApi, new { controller = Constants.ApiControllers.ComboBoxHelperApi, action = "GetFeladatEllatasiHelyList" }), isSingleElementSet: false).RenderSearchPanelSideBar()
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
<div>
|
||||
@(
|
||||
Html.KretaGrid<FelhasznalokGridModel>(
|
||||
name: "FelhasznalokGrid",
|
||||
getUrl: new GridApiUrl("FelhasznalokApi", "GetFelhasznalokGrid", new Dictionary<string, string> { }),
|
||||
dataParameterFunction: "searchForm",
|
||||
allowExcelExport: false,
|
||||
allowScrolling: true,
|
||||
excelExportFileName: "FelhasznalokTablazatExport",
|
||||
sort: sort => sort.Add(model => model.FelhasznaloNev).Ascending()
|
||||
)
|
||||
.SelectBoxColumn(Html, 0)
|
||||
.LinkButtonColumn(string.Empty,
|
||||
c => c.FelhasznaloNyomtatasiNeveElotagNelkul,
|
||||
"FelhasznaloHelper.openDetailWindow",
|
||||
GridButtonsEnum.Reszletek,
|
||||
customField: "FelhasznaloNyomtatasiNeve")
|
||||
.Columns(columns =>
|
||||
{
|
||||
columns.Bound(c => c.FelhasznaloTipusa);
|
||||
columns.Bound(c => c.FelhasznaloNev).Width("10%");
|
||||
columns.Bound(c => c.UtolsoBelepes).Format(SDAFormat.Format[SDAFormat.FormatType.ShortDateAndTime]).Width("10%");
|
||||
columns.Bound(c => c.UtolsoBelepesMobil).Format(SDAFormat.Format[SDAFormat.FormatType.ShortDateAndTime]).Width("10%");
|
||||
columns.Bound(c => c.JelszovaltoztatasIdeje).Format(SDAFormat.Format[SDAFormat.FormatType.ShortDate]).Width("10%");
|
||||
columns.Bound(c => c.Jogosultsag);
|
||||
columns.Bound(c => c.GondviseloBovitettJog_BNAME).Width("10%");
|
||||
columns.Bound(c => c.Tanulo);
|
||||
columns.Bound(c => c.Osztaly);
|
||||
})
|
||||
.FunctionCommand(Html, functions)
|
||||
.Sortable(sortable => sortable
|
||||
.AllowUnsort(true)
|
||||
.SortMode(GridSortMode.MultipleColumn))
|
||||
)
|
||||
</div>
|
||||
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function () {
|
||||
if (!CommonUtils.isNullOrUndefined("@ClaimData.FelhelySzuro") && !CommonUtils.isNullOrUndefined($("#FeladatEllatasiHelyId").data("kendoComboBox"))) {
|
||||
$("#FeladatEllatasiHelyId").data("kendoComboBox").value("@ClaimData.FelhelySzuro");
|
||||
}
|
||||
});
|
||||
var FelhasznaloHelper = (function () {
|
||||
var felhasznaloHelper = function () { };
|
||||
|
||||
var searchFormName = "searchForm";
|
||||
var gridName = "FelhasznalokGrid";
|
||||
|
||||
var url = {
|
||||
OpenDetailTanuloPopUp: "@Url.Action("OpenDetailTanuloPopUp", TanuloController, new { area = Constants.Areas.Tanulo })",
|
||||
OpenDetailAlkalmazottPopUp: "@Url.Action("OpenAlkalmazottInfoPopUp", AlkalmazottController, new { area = Constants.Areas.Alkalmazott })",
|
||||
Export: "@Url.Action("Export", FelhasznalokController, new { area = Constants.Areas.Felhasznalok })",
|
||||
EmailErrorFileDownload: "@Url.Action("EmailErrorFileDownload", FelhasznalokController, new { area = Constants.Areas.Felhasznalok })",
|
||||
AzonositoGeneralasKijelolteknekPopup: "@Url.Action("AzonositoGeneralasPopup", FelhasznalokController, new { area = Constants.Areas.Felhasznalok })",
|
||||
BovitettJogosultsagGeneralas: "@Url.HttpRouteUrl(Constants.RouteKey.ActionApi, new { controller = "FelhasznalokApi", action= "BovitettJogosultsagGeneralas" })",
|
||||
SetGondviseloToBovitett: "@Url.Action("SetGondviseloToBovitett", TanuloController, new { area = Constants.Areas.Tanulo })",
|
||||
AzonositoGeneralas: "@Url.Action("AzonositoGeneralas", TanuloController, new { area = Constants.Areas.Tanulo })",
|
||||
SetBelepesiAdatTorles: "@Url.HttpRouteUrl(Constants.RouteKey.ActionApi, new { controller = "FelhasznalokApi", action="DeleteSelectedFelhasznaloBelepes" })",
|
||||
GetExportGondviselokBelepesiAdatokNelkul: "@Url.HttpRouteUrl(Constants.RouteKey.ActionApi, new { controller = Constants.ApiControllers.FelhasznalokApi, action = "GetExportGondviselokBelepesiAdatokNelkul" })",
|
||||
}
|
||||
|
||||
felhasznaloHelper.openDetailWindow = function (data) {
|
||||
if (data.FelhasznaloTipusa === "Tanuló") {
|
||||
var postData = { TanuloId: data.ID, OsztalyCsoportId: data.OsztalyCsoportId };
|
||||
AjaxHelper.DoPost(url.OpenDetailTanuloPopUp, postData, popUpDetailTanuloWindow);
|
||||
}
|
||||
else if (data.FelhasznaloTipusa === "Alkalmazott") {
|
||||
var postData = { AlkalmazottId: data.ID };
|
||||
AjaxHelper.DoPost(url.OpenDetailAlkalmazottPopUp, postData, popUpDetailAlkalmazottWindow);
|
||||
}
|
||||
else if (data.FelhasznaloTipusa === "Gondviselő") {
|
||||
var postData = { TanuloId: data.TanuloId, OsztalyCsoportId: data.OsztalyCsoportId };
|
||||
AjaxHelper.DoPost(url.OpenDetailTanuloPopUp, postData, popUpDetailGondviseloWindow);
|
||||
}
|
||||
}
|
||||
|
||||
felhasznaloHelper.exportGrid = function () {
|
||||
window.location = url.Export + "?" + $.param(KretaGridHelper.getSearchParametersWithoutInputNames(searchFormName));
|
||||
}
|
||||
|
||||
felhasznaloHelper.getExportGondviselokBelepesiAdatokNelkul = function () {
|
||||
KretaGridHelper.getExportBySearchForm(gridName, url.GetExportGondviselokBelepesiAdatokNelkul, searchFormName);
|
||||
}
|
||||
|
||||
felhasznaloHelper.emailErrorFileDownload = function () {
|
||||
window.location = url.EmailErrorFileDownload + "?" + $.param(KretaGridHelper.getSearchParametersWithoutInputNames(searchFormName));
|
||||
}
|
||||
|
||||
felhasznaloHelper.AzonositoGeneralasKijelolteknekConfirmWindow = function (generateType) {
|
||||
var selectedRows = KretaGridHelper.getSelectedRowsByGridName(gridName);
|
||||
if (selectedRows.length == 0) {
|
||||
KretaWindowHelper.warningWindow("@(CommonResource.Kivalasztas)", "@(FelhasznalokResource.LegyenLegalabbEgyFelhasznalo)");
|
||||
}
|
||||
else {
|
||||
var tanuloParameters = [];
|
||||
var gondviseloParameters = [];
|
||||
var alkalmazottParameters = [];
|
||||
$.each(selectedRows, function (i, v) {
|
||||
if (v.FelhasznaloTipusa === "Tanuló") {
|
||||
tanuloParameters.push(v.ID);
|
||||
}
|
||||
if (v.FelhasznaloTipusa === "Gondviselő") {
|
||||
gondviseloParameters.push(v.ID);
|
||||
}
|
||||
if (v.FelhasznaloTipusa === "Alkalmazott") {
|
||||
alkalmazottParameters.push(v.ID);
|
||||
}
|
||||
});
|
||||
|
||||
errorMsg = ""; var jsonData;
|
||||
if (generateType === 'T') {
|
||||
jsonData = { "isTanulo": true, "isGondviselo": false, "isAlkalmazott": false, "idList": tanuloParameters };
|
||||
|
||||
if (gondviseloParameters.length != 0 || alkalmazottParameters.length != 0) {
|
||||
errorMsg += '@AdminisztracioResource.KijeloltFelhasznalokKozott';
|
||||
|
||||
if (gondviseloParameters.length != 0 ) {
|
||||
errorMsg += gondviseloParameters.length + "@AdminisztracioResource.Gondviselo";
|
||||
}
|
||||
if (alkalmazottParameters.length != 0) {
|
||||
errorMsg += alkalmazottParameters.length + "@AdminisztracioResource.Alkalmazott";
|
||||
}
|
||||
|
||||
errorMsg += "@AdminisztracioResource.Szerepel";
|
||||
}
|
||||
}
|
||||
else if (generateType === 'G') {
|
||||
jsonData = { "isTanulo": false, "isGondviselo": true, "isAlkalmazott": false, "idList": gondviseloParameters };
|
||||
|
||||
if (tanuloParameters.length != 0 || alkalmazottParameters.length != 0) {
|
||||
errorMsg += '@AdminisztracioResource.KijeloltFelhasznalokKozott';
|
||||
|
||||
if (tanuloParameters.length != 0) {
|
||||
errorMsg += tanuloParameters.length + "@AdminisztracioResource.Tanulo";
|
||||
}
|
||||
if (alkalmazottParameters.length != 0) {
|
||||
errorMsg += alkalmazottParameters.length + "@AdminisztracioResource.Alkalmazott";
|
||||
}
|
||||
|
||||
errorMsg += "@AdminisztracioResource.Szerepel";
|
||||
}
|
||||
}
|
||||
else if (generateType === 'A') {
|
||||
jsonData = { "isTanulo": false, "isGondviselo": false, "isAlkalmazott": true, "idList": alkalmazottParameters };
|
||||
|
||||
if (tanuloParameters.length != 0 || gondviseloParameters.length != 0) {
|
||||
errorMsg += '@AdminisztracioResource.KijeloltFelhasznalokKozott';
|
||||
|
||||
if (tanuloParameters.length != 0) {
|
||||
errorMsg += tanuloParameters.length + "@AdminisztracioResource.Tanulo";
|
||||
}
|
||||
if (gondviseloParameters.length != 0) {
|
||||
errorMsg += gondviseloParameters.length + "@AdminisztracioResource.Gondviselo";
|
||||
}
|
||||
|
||||
errorMsg += "@AdminisztracioResource.Szerepel";
|
||||
}
|
||||
}
|
||||
|
||||
if (errorMsg.length != 0) {
|
||||
KretaWindowHelper.warningWindow("@(CommonResource.Hiba)", errorMsg);
|
||||
}
|
||||
else {
|
||||
AjaxHelper.DoPost(url.AzonositoGeneralasKijelolteknekPopup, jsonData, TanuloHelper.popUpHozzaferesWindow);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
felhasznaloHelper.BovitettJogosultsagConfirm = function () {
|
||||
var selectedRows = KretaGridHelper.getSelectedRowsByGridName(gridName);
|
||||
if (selectedRows.length == 0) {
|
||||
KretaWindowHelper.warningWindow("@(CommonResource.Kivalasztas)", "@(FelhasznalokResource.LegyenLegalabbEgyFelhasznalo)");
|
||||
}
|
||||
else {
|
||||
var tanuloParameters = [];
|
||||
var gondviseloParameters = [];
|
||||
var gondviseloBovitettJogosultsagParameters = [];
|
||||
var alkalmazottParameters = [];
|
||||
$.each(selectedRows, function (i, v) {
|
||||
if (v.FelhasznaloTipusa === "Tanuló") {
|
||||
tanuloParameters.push(v.ID);
|
||||
}
|
||||
if (v.FelhasznaloTipusa === "Gondviselő") {
|
||||
if (v.GondviseloBovitettJog_BNAME == "Igen") {
|
||||
gondviseloBovitettJogosultsagParameters.push(v.ID);
|
||||
} else {
|
||||
gondviseloParameters.push(v.ID);
|
||||
}
|
||||
}
|
||||
if (v.FelhasznaloTipusa === "Alkalmazott") {
|
||||
alkalmazottParameters.push(v.ID);
|
||||
}
|
||||
});
|
||||
|
||||
errorMsg = "";
|
||||
|
||||
if (tanuloParameters.length != 0 || alkalmazottParameters.length != 0 || gondviseloBovitettJogosultsagParameters.length != 0 ) {
|
||||
errorMsg += '@AdminisztracioResource.KijeloltFelhasznalokKozott';
|
||||
|
||||
if (tanuloParameters.length != 0) {
|
||||
errorMsg += tanuloParameters.length + "@AdminisztracioResource.Tanulo";
|
||||
}
|
||||
if (alkalmazottParameters.length != 0) {
|
||||
errorMsg += alkalmazottParameters.length + "@AdminisztracioResource.Alkalmazott";
|
||||
}
|
||||
if (gondviseloBovitettJogosultsagParameters.length != 0) {
|
||||
errorMsg += gondviseloBovitettJogosultsagParameters.length + "@AdminisztracioResource.GondviseloBovitettJogosultsaggal";
|
||||
}
|
||||
|
||||
errorMsg += "@AdminisztracioResource.Szerepel";
|
||||
}
|
||||
|
||||
if (errorMsg.length != 0) {
|
||||
KretaWindowHelper.warningWindow("@(CommonResource.Hiba)", errorMsg);
|
||||
}
|
||||
else {
|
||||
AjaxHelper.DoPost(url.BovitettJogosultsagGeneralas, gondviseloParameters, FelhasznaloHelper.bovitettJogosultsagGeneralasSuccess);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
felhasznaloHelper.bovitettJogosultsagGeneralasSuccess = function () {
|
||||
KretaWindowHelper.feedbackWindow(
|
||||
"@CommonResource.Ertesites",
|
||||
"@FelhasznalokResource.ModositasSikeresenVegbement");
|
||||
KretaGridHelper.refreshGrid(gridName);
|
||||
}
|
||||
|
||||
felhasznaloHelper.setUjJelszoIgenylesGondviselo = function () {
|
||||
var postData = {
|
||||
gondviseloIdList: HozzaferesGeneralasHelper.getList(),
|
||||
fileLetoltesSzukseges: HozzaferesGeneralasHelper.getGeneraltFileLetoltes(),
|
||||
emailKuldesSzukseges: HozzaferesGeneralasHelper.getEmailKuldesSzukseges(),
|
||||
};
|
||||
|
||||
AjaxHelper.DoPost(url.SetGondviseloToBovitett, postData, function (data) { FelhasznaloHelper.hozzaferesGeneralasFeedback(data); });
|
||||
}
|
||||
|
||||
felhasznaloHelper.setUjJelszoIgenylesTanulo = function () {
|
||||
var postData = {
|
||||
tanuloIdList: HozzaferesGeneralasHelper.getList(),
|
||||
isPasswordReset: true,
|
||||
fileLetoltesSzukseges: HozzaferesGeneralasHelper.getGeneraltFileLetoltes(),
|
||||
emailKuldesSzukseges: HozzaferesGeneralasHelper.getEmailKuldesSzukseges(),
|
||||
isTanulo: true,
|
||||
toroltFelhasznaloBelepes: true
|
||||
};
|
||||
|
||||
AjaxHelper.DoPost(url.AzonositoGeneralas, postData, function (data) { FelhasznaloHelper.hozzaferesGeneralasFeedback(data); });
|
||||
}
|
||||
|
||||
felhasznaloHelper.hozzaferesGeneralasFeedback = function (data) {
|
||||
var responseAsJson = data;
|
||||
var message = "@TanuloResource.SikeresGeneralas";
|
||||
if (responseAsJson.EmailErrors) {
|
||||
var isGondviselo = false;
|
||||
|
||||
var a = responseAsJson.EmailErrors.replace(new RegExp('<br />', 'g'), '*');
|
||||
var b = a.split('*');
|
||||
|
||||
if (b.length > 20) {
|
||||
message += "<br /><br />" + "@AdminisztracioResource.AdatGeneraltExcelben";
|
||||
|
||||
var EmailErrorsJson = [];
|
||||
$.each(b, function (index, value) {
|
||||
var c = value.replace(new RegExp(' - ', 'g'), '*');
|
||||
var d = c.split('*');
|
||||
if (d.length == 3) {
|
||||
isGondviselo = true;
|
||||
EmailErrorsJson.push({ nev: d[0], gvNev: d[1], oktAzon: d[2] })
|
||||
}
|
||||
else {
|
||||
EmailErrorsJson.push({ nev: d[0], oktAzon: d[1] })
|
||||
}
|
||||
});
|
||||
|
||||
var localDataSource = new kendo.data.DataSource({ data: EmailErrorsJson });
|
||||
|
||||
if (isGondviselo)
|
||||
var rows = [{ cells: [{ value: "Név" }, { value: "Diák" }, { value: "Oktatási azonosító" }] }];
|
||||
else
|
||||
var rows = [{ cells: [{ value: "Név" }, { value: "Oktatási azonosító" }] }];
|
||||
|
||||
localDataSource.fetch(function () {
|
||||
var data = this.data();
|
||||
for (var i = 0; i < data.length; i++) {
|
||||
if (isGondviselo) {
|
||||
rows.push({
|
||||
cells: [
|
||||
{ value: data[i].nev },
|
||||
{ value: data[i].gvNev },
|
||||
{ value: data[i].oktAzon }
|
||||
]
|
||||
})
|
||||
}
|
||||
else {
|
||||
rows.push({
|
||||
cells: [
|
||||
{ value: data[i].nev },
|
||||
{ value: data[i].oktAzon }
|
||||
]
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
var workbook = new kendo.ooxml.Workbook({
|
||||
sheets: [
|
||||
{
|
||||
columns: [
|
||||
{ autoWidth: true },
|
||||
{ autoWidth: true }
|
||||
],
|
||||
title: "Hibás email",
|
||||
rows: rows
|
||||
}
|
||||
]
|
||||
});
|
||||
|
||||
kendo.saveAs({ dataURI: workbook.toDataURL(), fileName: "EmailHiba.xlsx" });
|
||||
});
|
||||
}
|
||||
else {
|
||||
message += "<br /><br />" + "@TanuloResource.AKovetkezoGondviseloknekNincsRogzitveEmailCimARendszerben";
|
||||
message += "<br />" + responseAsJson.EmailErrors;
|
||||
}
|
||||
}
|
||||
if (responseAsJson.FileString) {
|
||||
window.location = responseAsJson.FileString;
|
||||
KretaWindowHelper.feedbackWindow(
|
||||
"@CommonResource.Ertesites",
|
||||
message);
|
||||
}
|
||||
else {
|
||||
KretaWindowHelper.feedbackWindow(
|
||||
"@CommonResource.Ertesites",
|
||||
message);
|
||||
}
|
||||
|
||||
KretaWindowHelper.destroyWindow("hozzaferesGeneralasa");
|
||||
KretaGridHelper.refreshGrid("FelhasznalokGrid");
|
||||
}
|
||||
|
||||
felhasznaloHelper.belepesiAdatTorlesConfirm = function () {
|
||||
var selectedRows = KretaGridHelper.getSelectedRowsByGridName(gridName);
|
||||
if (selectedRows.length == 0) {
|
||||
KretaWindowHelper.warningWindow("@(CommonResource.Kivalasztas)", "@(FelhasznalokResource.LegyenLegalabbEgyFelhasznalo)");
|
||||
}
|
||||
else {
|
||||
KretaWindowHelper.confirmWindow("@(CommonResource.Kerdes)", "@(CommonResource.BelepesiAdatokTorleseQuestion)", FelhasznaloHelper.belepesiAdatTorles, selectedRows);
|
||||
}
|
||||
}
|
||||
|
||||
felhasznaloHelper.belepesiAdatTorles = function (selectedRows) {
|
||||
var postData = [];
|
||||
$.each(selectedRows, function (i, v) {
|
||||
var IsGondviselo = false;
|
||||
if (v.FelhasznaloTipusa === "Gondviselő") {
|
||||
IsGondviselo = true;
|
||||
}
|
||||
|
||||
if (v.FelhasznaloNev != null) {
|
||||
var json = { Id: parseInt(v.ID), IsGondviselo: IsGondviselo };
|
||||
postData.push(json);
|
||||
}
|
||||
});
|
||||
|
||||
AjaxHelper.DoPost(url.SetBelepesiAdatTorles, postData, FelhasznaloHelper.belepesiAdatTorlesSuccess);
|
||||
}
|
||||
|
||||
felhasznaloHelper.belepesiAdatTorlesSuccess = function () {
|
||||
KretaWindowHelper.feedbackWindow(
|
||||
"@CommonResource.Ertesites",
|
||||
"@AdminisztracioResource.FelhasznaloTorlesSikeres");
|
||||
|
||||
KretaGridHelper.refreshGrid(gridName);
|
||||
}
|
||||
|
||||
felhasznaloHelper.bovitettGondviseloGeneralas = function (generateType) {
|
||||
var selectedRows = KretaGridHelper.getSelectedRowsByGridName(gridName);
|
||||
if (selectedRows.length == 0) {
|
||||
KretaWindowHelper.warningWindow("@(CommonResource.Kivalasztas)", "@(FelhasznalokResource.LegyenLegalabbEgyFelhasznalo)");
|
||||
}
|
||||
else {
|
||||
var tanuloParameters = [];
|
||||
var gondviseloParameters = [];
|
||||
var csokkentettGondviseloParameters = [];
|
||||
var alkalmazottParameters = [];
|
||||
$.each(selectedRows, function (i, v) {
|
||||
if (v.FelhasznaloTipusa === "Tanuló") {
|
||||
tanuloParameters.push(v.ID);
|
||||
}
|
||||
if (v.FelhasznaloTipusa === "Gondviselő" && v.CsokkentettGondviselo_BOOL == false) {
|
||||
gondviseloParameters.push(v.ID);
|
||||
}
|
||||
if (v.FelhasznaloTipusa === "Gondviselő" && v.CsokkentettGondviselo_BOOL == true) {
|
||||
csokkentettGondviseloParameters.push(v.ID);
|
||||
}
|
||||
if (v.FelhasznaloTipusa === "Alkalmazott") {
|
||||
alkalmazottParameters.push(v.ID);
|
||||
}
|
||||
});
|
||||
|
||||
errorMsg = ""; var jsonData;
|
||||
if (generateType === 'G') {
|
||||
jsonData = { "isTanulo": false, "isGondviselo": true, "isAlkalmazott": false, "idList": csokkentettGondviseloParameters };
|
||||
|
||||
if (tanuloParameters.length != 0 || alkalmazottParameters.length != 0 || gondviseloParameters.length != 0) {
|
||||
errorMsg += "A kijelölt felhasználók között ";
|
||||
|
||||
if (tanuloParameters.length != 0) {
|
||||
errorMsg += tanuloParameters.length + "@AdminisztracioResource.Tanulo";
|
||||
}
|
||||
if (alkalmazottParameters.length != 0) {
|
||||
errorMsg += alkalmazottParameters.length + "@AdminisztracioResource.Alkalmazott";
|
||||
}
|
||||
if (gondviseloParameters.length != 0) {
|
||||
errorMsg += gondviseloParameters.length + "@AdminisztracioResource.Gondviselo";
|
||||
}
|
||||
|
||||
errorMsg += "@AdminisztracioResource.Szerepel";
|
||||
}
|
||||
}
|
||||
|
||||
if (errorMsg.length != 0) {
|
||||
KretaWindowHelper.warningWindow("@(CommonResource.Hiba)", errorMsg);
|
||||
}
|
||||
else {
|
||||
AjaxHelper.DoPost(url.AzonositoGeneralasKijelolteknekPopup, jsonData, TanuloHelper.popUpHozzaferesWindow);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function popUpDetailTanuloWindow(data) {
|
||||
var config = KretaWindowHelper.getWindowConfigContainer();
|
||||
config.title = "@(TanuloResource.TanuloiAdatok)";
|
||||
config.content = data;
|
||||
|
||||
var modal = KretaWindowHelper.createWindow("detailTanuloWindow", config);
|
||||
KretaWindowHelper.openWindow(modal, true);
|
||||
|
||||
setTimeout(function () {
|
||||
if ($("#detailTanuloWindow_wnd_title").text().indexOf($("#TanuloModalHeader").val()) === -1) {
|
||||
var tanuloDetailWindowHeader = $("#detailTanuloWindow_wnd_title").text() + " " + $("#TanuloModalHeader").val();
|
||||
$("#detailTanuloWindow_wnd_title").text(tanuloDetailWindowHeader);
|
||||
}
|
||||
}, 1);
|
||||
}
|
||||
|
||||
function popUpDetailGondviseloWindow(data) {
|
||||
var config = KretaWindowHelper.getWindowConfigContainer();
|
||||
config.title = "@(TanuloResource.TanuloiAdatok)";
|
||||
config.content = data;
|
||||
|
||||
var modal = KretaWindowHelper.createWindow("detailTanuloWindow", config);
|
||||
KretaWindowHelper.openWindow(modal, true);
|
||||
|
||||
setTimeout(function () {
|
||||
if ($("#detailTanuloWindow_wnd_title").text().indexOf($("#TanuloModalHeader").val()) === -1) {
|
||||
var tanuloDetailWindowHeader = $("#detailTanuloWindow_wnd_title").text() + " " + $("#TanuloModalHeader").val();
|
||||
$("#detailTanuloWindow_wnd_title").text(tanuloDetailWindowHeader);
|
||||
}
|
||||
}, 1);
|
||||
|
||||
$("#TanuloDetailTabStrip").data('kendoTabStrip').select(2);
|
||||
}
|
||||
|
||||
function popUpDetailAlkalmazottWindow(data) {
|
||||
var config = KretaWindowHelper.getWindowConfigContainer();
|
||||
config.title = "@(AlkalmazottResource.AlkalmazottAdatai)";
|
||||
config.content = data;
|
||||
|
||||
var modal = KretaWindowHelper.createWindow("alkalmazottInfoWindow", config);
|
||||
KretaWindowHelper.openWindow(modal, true);
|
||||
}
|
||||
|
||||
return felhasznaloHelper;
|
||||
})();
|
||||
</script>
|
||||
|
||||
<script type="text/javascript">
|
||||
var AlkalmazottHelper = (function () {
|
||||
var alkalmazottHelper = function () { };
|
||||
|
||||
alkalmazottHelper.alkalmazottInfoCancel = function () {
|
||||
KretaWindowHelper.destroyWindow("alkalmazottInfoWindow");
|
||||
}
|
||||
|
||||
return alkalmazottHelper;
|
||||
})();
|
||||
</script>
|
||||
|
||||
<script type="text/javascript">
|
||||
var TanuloHelper = (function () {
|
||||
var tanuloHelper = function () { };
|
||||
|
||||
tanuloHelper.detailTanuloCancel = function () {
|
||||
KretaWindowHelper.destroyWindow("detailTanuloWindow");
|
||||
}
|
||||
|
||||
tanuloHelper.popUpHozzaferesWindow = function (data) {
|
||||
setTimeout(
|
||||
function () {
|
||||
var config = KretaWindowHelper.getWindowConfigContainer();
|
||||
config.title = "@CommonResource.Ertesites";
|
||||
config.maxWidth = "600px";
|
||||
config.height = "200px";
|
||||
config.content = data;
|
||||
config.actions = ["Close"];
|
||||
|
||||
var modal = KretaWindowHelper.createWindow("hozzaferesGeneralasa", config);
|
||||
KretaWindowHelper.openWindow(modal, true);
|
||||
}, 0);
|
||||
}
|
||||
|
||||
tanuloHelper.hozzaferesGeneralas = function () {
|
||||
var postData = {
|
||||
tanuloIdList: HozzaferesGeneralasHelper.getTanuloList(),
|
||||
fileLetoltesSzukseges: HozzaferesGeneralasHelper.getGeneraltFileLetoltes(),
|
||||
isTanulo: HozzaferesGeneralasHelper.getHozzaferesType(),
|
||||
isPasswordReset: HozzaferesGeneralasHelper.getGenerateOnlyPassword()
|
||||
};
|
||||
|
||||
AjaxHelper.DoPost(
|
||||
url.AzonositoGeneralas,
|
||||
postData,
|
||||
function (data) {
|
||||
var responseAsJson = data;
|
||||
if (data.IsError) {
|
||||
TanuloHelper.showErrors(data.ErrorList);
|
||||
if (responseAsJson.FileString) {
|
||||
window.location = responseAsJson.FileString;
|
||||
}
|
||||
} else {
|
||||
if (responseAsJson.FileString) {
|
||||
window.location = responseAsJson.FileString;
|
||||
KretaWindowHelper.feedbackWindow(
|
||||
"@CommonResource.Ertesites",
|
||||
"@TanuloResource.AzonositoGeneralasSikeres");
|
||||
}
|
||||
else {
|
||||
KretaWindowHelper.feedbackWindow(
|
||||
"@CommonResource.Ertesites",
|
||||
"@TanuloResource.AzonositoGeneralasSikeres");
|
||||
}
|
||||
|
||||
KretaWindowHelper.destroyWindow("hozzaferesGeneralasa");
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
tanuloHelper.showErrors = function (errorList) {
|
||||
$("#validationContainer").hide();
|
||||
$("#validationResultOfAzonositoGeneralasUl").html("");
|
||||
|
||||
$.each(errorList,
|
||||
function (index, row) {
|
||||
var node = document.createElement("li");
|
||||
var textnode = document.createTextNode(row);
|
||||
node.appendChild(textnode);
|
||||
document.getElementById("validationResultOfAzonositoGeneralasUl").appendChild(node);
|
||||
});
|
||||
KretaWindowHelper.setWindowHeight("hozzaferesGeneralasa", 250);
|
||||
|
||||
$("#validationContainer").show();
|
||||
}
|
||||
|
||||
return tanuloHelper;
|
||||
})();
|
||||
</script>
|
|
@ -0,0 +1,58 @@
|
|||
@using Kreta.Resources
|
||||
@using Kreta.Web.Areas.Felhasznalok.Models;
|
||||
@{
|
||||
@model FelhasznalokJelszoGeneralasModel
|
||||
}
|
||||
|
||||
<style type="text/css">
|
||||
.confirmTextDiv {
|
||||
padding-left:11px;
|
||||
}
|
||||
|
||||
.hozzaferesGeneralasEsFajlLetoltesDiv {
|
||||
padding-left:11px;
|
||||
padding-top:10px;
|
||||
}
|
||||
</style>
|
||||
|
||||
<div class="container-fluid details">
|
||||
<div class="row initialBorder confirmTextDiv">
|
||||
<span><i class="fa fa-info confirmWindowIcon"></i> </span>
|
||||
@Model.ConfirmText
|
||||
</div>
|
||||
@if (Model.GeneraltFileLetoltes)
|
||||
{
|
||||
<div class="row initialBorder initialBackgroundColor initialMinHeight hozzaferesGeneralasEsFajlLetoltesDiv">
|
||||
@Html.KretaCheckBoxFor(model => model.GeneraltFileLetoltes).Label(TanuloResource.HozzaferesGeneralasEsFajlLetoltes)
|
||||
</div>
|
||||
}
|
||||
@if (Model.EmailKuldes)
|
||||
{
|
||||
<div class="row initialBorder initialBackgroundColor initialMinHeight hozzaferesGeneralasEsFajlLetoltesDiv">
|
||||
@Html.KretaCheckBoxFor(model => model.EmailKuldes).Label(TanuloResource.BelepesiAdatokKikuldeseEmailben)
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
|
||||
<script type="text/javascript">
|
||||
var HozzaferesGeneralasHelper = (function () {
|
||||
var hozzaferesGeneralasHelper = function () { };
|
||||
|
||||
hozzaferesGeneralasHelper.getList = function () {
|
||||
var result = @Html.Raw(Json.Encode(@Model.IdList));
|
||||
return result;
|
||||
}
|
||||
|
||||
hozzaferesGeneralasHelper.getGeneraltFileLetoltes = function () {
|
||||
var result = KretaCheckBoxHelper.getValue("GeneraltFileLetoltes");
|
||||
return result;
|
||||
}
|
||||
|
||||
hozzaferesGeneralasHelper.getEmailKuldesSzukseges = function () {
|
||||
var result = KretaCheckBoxHelper.getValue("EmailKuldes");
|
||||
return result;
|
||||
}
|
||||
|
||||
return hozzaferesGeneralasHelper;
|
||||
})();
|
||||
</script>
|
3
KretaWeb/Areas/Felhasznalok/Views/_ViewStart.cshtml
Normal file
3
KretaWeb/Areas/Felhasznalok/Views/_ViewStart.cshtml
Normal file
|
@ -0,0 +1,3 @@
|
|||
@{
|
||||
Layout = "~/Views/Shared/_MasterLayout.cshtml";
|
||||
}
|
38
KretaWeb/Areas/Felhasznalok/Views/web.config
Normal file
38
KretaWeb/Areas/Felhasznalok/Views/web.config
Normal file
|
@ -0,0 +1,38 @@
|
|||
<?xml version="1.0"?>
|
||||
|
||||
<configuration>
|
||||
<configSections>
|
||||
<sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
|
||||
<section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
|
||||
<section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
|
||||
</sectionGroup>
|
||||
</configSections>
|
||||
|
||||
<system.web.webPages.razor>
|
||||
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
|
||||
<pages pageBaseType="System.Web.Mvc.WebViewPage">
|
||||
<namespaces>
|
||||
<add namespace="System.Web.Mvc" />
|
||||
<add namespace="System.Web.Mvc.Ajax" />
|
||||
<add namespace="System.Web.Mvc.Html" />
|
||||
<add namespace="System.Web.Routing" />
|
||||
<add namespace="Kreta.Web" />
|
||||
<add namespace="Kreta.BusinessLogic.Utils" />
|
||||
<add namespace="Kendo.Mvc.UI" />
|
||||
<add namespace="Kreta.Web.Helpers" />
|
||||
<add namespace="System.Web.Optimization" />
|
||||
</namespaces>
|
||||
</pages>
|
||||
</system.web.webPages.razor>
|
||||
|
||||
<appSettings>
|
||||
<add key="webpages:Enabled" value="false" />
|
||||
</appSettings>
|
||||
|
||||
<system.webServer>
|
||||
<handlers>
|
||||
<remove name="BlockViewHandler"/>
|
||||
<add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" />
|
||||
</handlers>
|
||||
</system.webServer>
|
||||
</configuration>
|
Loading…
Add table
Add a link
Reference in a new issue