using System.Collections.Generic; using System.Data; using System.Net; using System.Net.Http; using System.Web.Http; using Kreta.BusinessLogic.Classes; using Kreta.BusinessLogic.HelperClasses; using Kreta.BusinessLogic.Helpers; using Kreta.BusinessLogic.Security; using Kreta.Core; using Kreta.Core.Exceptions; using Kreta.Enums.ManualEnums; using Kreta.Framework; using Kreta.Resources; using Kreta.Web.Areas.Adminisztracio.Models; using Kreta.Web.Helpers; using Kreta.Web.Helpers.Error; using Kreta.Web.Security; namespace Kreta.Web.Areas.Adminisztracio.ApiControllers { [ApiRoleClaimsAuthorize(true)] [ApiRolePackageAuthorize(KretaClaimPackages.Adminisztrator.ClaimValue)] public class HelyettesitesekKezeleseApiController : ApiController { public HelyettesitesBevitelModel GetHelyettesitesBevitelData(int helyettesitesId) { var dataSet = new HelyettesitesHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetHelyettesitesDataById(helyettesitesId); DataRow row = dataSet.Tables[0].Rows[0]; var model = new HelyettesitesBevitelModel { HelyettesitesBevitelHelyettesitesId = helyettesitesId, HelyettesitesBevitelGroupId = SDAConvert.ToNullableInt32(row["C_GROUPID"].ToString()), HelyettesitesBevitelTanarId = int.Parse(row["C_HELYETTESTANAROKID"].ToString()), HelyettesitesBevitelTanarNev = row["C_NYOMTATASINEV"].ToString(), HelyettesitesBevitelHelyettesitesTipusId = int.Parse(row["C_HELYETTESITESTIPUS"].ToString()), HelyettesitesBevitelHelyettesitesOka = row["C_HELYETTESITESOKA"].ToString() }; return model; } [HttpPost] [ApiValidateAjaxAntiForgeryToken] public HttpResponseMessage InsertHelyettesites(HelyettesitesBevitelModel model) { if (ModelState.IsValid && model.HelyettesitesBevitelTanarId.HasValue) { var connectionType = ConnectionTypeExtensions.GetSessionConnectionType(); var helper = new HelyettesitesHelper(connectionType); var hetHelper = new NaptariHetHelper(connectionType); var uzenetekHelper = new UzenetekHelper(connectionType); var orarendHelper = new OrarendHelper(connectionType); var sorszam = hetHelper.GetNaptariHetSorszamByDate(model.HelyettesitesBevitelOraKezdeteDate.Date); if (model.HelyettesitesBevitelCalendarOraType == CalendarOraTypeEnum.TanoranKivuliNaplozottFoglalkozas) { throw new StatusError(HttpStatusCode.BadRequest, OrarendResource.NaplozottOrahozNemVehetoFelHelyettesites); } bool mustSendEmail = helper.GetUserHelyettesitesProfilData(model.HelyettesitesBevitelTanarId.Value); if (model.HelyettesitesBevitelHelyettesitesGyakorisagTipus == (int)HelyettesitesGyakorisagTipusEnum.Egyedi) { HelyettesitesResultCO helyettesitesResultCo = helper.SaveHelyettesites( model.HelyettesitesBevitelCalendarEventId, model.HelyettesitesBevitelTanarId.Value, model.HelyettesitesBevitelHelyettesitesTipusId, model.HelyettesitesBevitelHelyettesitesOka, sorszam, model.HelyettesitesBevitelOraKezdeteDate.Date, model.IsTuloraMentes); if (helyettesitesResultCo.ErrorId.IsEntityId()) { throw new StatusError(HttpStatusCode.BadRequest, StringResourcesUtil.GetString(helyettesitesResultCo.ErrorId.Value)); } if (helyettesitesResultCo.HelyettesitesId.IsEntityId() && mustSendEmail) { SendEmailCo sendEmailCo = uzenetekHelper.GetHelyettesitesSendEmailCo(helyettesitesResultCo.HelyettesitesId.Value); uzenetekHelper.SendEmail(sendEmailCo); } } else { List helyettesitesResultCoList = helper.SaveGroupHelyettesites( model.HelyettesitesBevitelCalendarEventId, model.HelyettesitesBevitelTanarId.Value, model.HelyettesitesBevitelHelyettesitesTipusId, model.HelyettesitesBevitelHelyettesitesOka, sorszam, model.HelyettesitesBevitelOraKezdeteDate.Date, model.HelyettesitesBevitelTartosHelyettesitesVegeDate.Value, model.IsTuloraMentes); if (helyettesitesResultCoList.Count == 1 && helyettesitesResultCoList[0].ErrorId.IsEntityId()) { throw new StatusError(HttpStatusCode.BadRequest, StringResourcesUtil.GetString(helyettesitesResultCoList[0].ErrorId.Value)); } foreach (var helyettesitesResultCo in helyettesitesResultCoList) { if (helyettesitesResultCo.HelyettesitesId.IsEntityId() && mustSendEmail) { SendEmailCo sendEmailCo = uzenetekHelper.GetHelyettesitesSendEmailCo(helyettesitesResultCo.HelyettesitesId.Value); uzenetekHelper.SendEmail(sendEmailCo); } } } orarendHelper.GenerateTeljesOrarend(); return new HttpResponseMessage(HttpStatusCode.OK); } return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState); } [HttpPost] [ApiValidateAjaxAntiForgeryToken] public HttpResponseMessage UpdateSingleHelyettesites(HelyettesitesBevitelModel model) { if (ModelState.IsValid && model.HelyettesitesBevitelHelyettesitesId.HasValue && model.HelyettesitesBevitelTanarId.HasValue) { var connectionType = ConnectionTypeExtensions.GetSessionConnectionType(); var helper = new HelyettesitesHelper(connectionType); var uzenetekHelper = new UzenetekHelper(connectionType); var orarendHelper = new OrarendHelper(connectionType); var originalHelyettesito = helper.GetHelyettesitesEmailDataById(model.HelyettesitesBevitelHelyettesitesId.Value); if (originalHelyettesito.HelyettesitoID != model.HelyettesitesBevitelTanarId.Value) { bool originalMustSendEmail = helper.GetUserHelyettesitesProfilData(originalHelyettesito.HelyettesitoID); if (originalMustSendEmail) { SendEmailCo sendEmailCo = uzenetekHelper.GetHelyettesitesTorlesSendEmailCo(model.HelyettesitesBevitelHelyettesitesId.Value); uzenetekHelper.SendEmail(sendEmailCo); } } HelyettesitesResultCO helyettesitesResultCo = helper.UpdateHelyettesitoTanar( model.HelyettesitesBevitelCalendarEventId, model.HelyettesitesBevitelHelyettesitesId.Value, model.HelyettesitesBevitelTanarId.Value, model.HelyettesitesBevitelHelyettesitesTipusId, model.HelyettesitesBevitelHelyettesitesOka, model.HelyettesitesBevitelOraKezdeteDate.Date, null, model.IsTuloraMentes); if (helyettesitesResultCo.ErrorId.IsEntityId()) { throw new StatusError(HttpStatusCode.BadRequest, StringResourcesUtil.GetString(helyettesitesResultCo.ErrorId.Value)); } bool mustSendEmail = helper.GetUserHelyettesitesProfilData(model.HelyettesitesBevitelTanarId.Value); if (helyettesitesResultCo.HelyettesitesId.IsEntityId() && mustSendEmail) { SendEmailCo sendEmailCo = uzenetekHelper.GetHelyettesitesSendEmailCo(model.HelyettesitesBevitelHelyettesitesId.Value); uzenetekHelper.SendEmail(sendEmailCo); } orarendHelper.GenerateTeljesOrarend(model.HelyettesitesBevitelCalendarEventId); return new HttpResponseMessage(HttpStatusCode.OK); } return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState); } [HttpPost] [ApiValidateAjaxAntiForgeryToken] public HttpResponseMessage UpdateGroupHelyettesites(HelyettesitesBevitelModel model) { if (ModelState.IsValid && model.HelyettesitesBevitelHelyettesitesId.HasValue && model.HelyettesitesBevitelGroupId.HasValue && model.HelyettesitesBevitelTanarId.HasValue) { var helper = new HelyettesitesHelper(ConnectionTypeExtensions.GetSessionConnectionType()); var uzenetekHelper = new UzenetekHelper(ConnectionTypeExtensions.GetSessionConnectionType()); var helyettesitesDataSet = helper.GetHelyettesitesDataSetByGroupId(model.HelyettesitesBevitelGroupId.Value); var helyettesitesResultCoList = new List(); foreach (DataRow dataRow in helyettesitesDataSet.Tables[0].Rows) { var helyettesitesId = SDAConvert.ToInt32(dataRow["Id"]); var helyettesitesNapjaDate = SDAConvert.ToDateTime(dataRow["HelyettesitesNapjaDate"]); if (model.HelyettesitesBevitelOraKezdeteDate.Date <= helyettesitesNapjaDate) { var originalHelyettesito = helper.GetHelyettesitesEmailDataById(helyettesitesId); if (originalHelyettesito.HelyettesitoID != model.HelyettesitesBevitelTanarId.Value) { bool originalMustSendEmail = helper.GetUserHelyettesitesProfilData(originalHelyettesito.HelyettesitoID); if (originalMustSendEmail) { SendEmailCo sendEmailCo = uzenetekHelper.GetHelyettesitesTorlesSendEmailCo(model.HelyettesitesBevitelHelyettesitesId.Value); uzenetekHelper.SendEmail(sendEmailCo); } } helyettesitesResultCoList.Add(helper.UpdateHelyettesitoTanar( model.HelyettesitesBevitelCalendarEventId, helyettesitesId, model.HelyettesitesBevitelTanarId.Value, model.HelyettesitesBevitelHelyettesitesTipusId, model.HelyettesitesBevitelHelyettesitesOka, model.HelyettesitesBevitelOraKezdeteDate.Date, model.HelyettesitesBevitelHelyettesitesId, model.IsTuloraMentes)); bool mustSendEmail = helper.GetUserHelyettesitesProfilData(model.HelyettesitesBevitelTanarId.Value); foreach (var helyettesitesResultCo in helyettesitesResultCoList) { if (helyettesitesResultCo.HelyettesitesId.IsEntityId() && mustSendEmail) { SendEmailCo sendEmailCo = uzenetekHelper.GetHelyettesitesSendEmailCo(helyettesitesResultCo.HelyettesitesId.Value); uzenetekHelper.SendEmail(sendEmailCo); } } } else { helper.ClearHelyettesitesGroupId(helyettesitesId); } } return new HttpResponseMessage(HttpStatusCode.OK); } return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState); } [HttpPost] [ApiValidateAjaxAntiForgeryToken] public IHttpActionResult ValidateDeleteHelyettesites(HelyettesitesBevitelModel model) { var helper = new HelyettesitesHelper(ConnectionTypeExtensions.GetSessionConnectionType()); List textList = helper.GetNemkotottMunkaidoByHelyettesitesHibakListaja(model.HelyettesitesBevitelHelyettesitesId, model.HelyettesitesBevitelGroupId, model.HelyettesitesBevitelOraKezdeteDate); textList.Add(CommonResource.BiztosanTorli); string result = string.Join("
", textList); return Json(new { Text = result }); } [HttpPost] [ApiValidateAjaxAntiForgeryToken] public HttpResponseMessage DeleteSingleHelyettesites(HelyettesitesBevitelModel model) { if (ModelState.IsValid && model.HelyettesitesBevitelHelyettesitesId.HasValue && model.HelyettesitesBevitelTanarId.HasValue) { var connectionType = ConnectionTypeExtensions.GetSessionConnectionType(); var helper = new HelyettesitesHelper(connectionType); var orarendHelper = new OrarendHelper(connectionType); Dictionary nemKotottMunkaidoDictionary = helper.GetNemkotottMunkaidoByHelyettesitesTorleshez(model.HelyettesitesBevitelHelyettesitesId, model.HelyettesitesBevitelGroupId, model.HelyettesitesBevitelOraKezdeteDate); int? nemKotottmunkaidoId = nemKotottMunkaidoDictionary.Count > 0 && nemKotottMunkaidoDictionary.TryGetValue(model.HelyettesitesBevitelHelyettesitesId.Value, out int value) ? value : (int?)null; Delete(helper, model.HelyettesitesBevitelHelyettesitesId.Value, model.HelyettesitesBevitelTanarId.Value, nemKotottmunkaidoId); orarendHelper.GenerateTeljesOrarend(); return new HttpResponseMessage(HttpStatusCode.OK); } return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState); } [HttpPost] [ApiValidateAjaxAntiForgeryToken] public HttpResponseMessage DeleteGroupHelyettesites(HelyettesitesBevitelModel model) { if (ModelState.IsValid && model.HelyettesitesBevitelGroupId.HasValue && model.HelyettesitesBevitelTanarId.HasValue) { var connectionType = ConnectionTypeExtensions.GetSessionConnectionType(); var helper = new HelyettesitesHelper(connectionType); var orarendHelper = new OrarendHelper(connectionType); Dictionary nemKotottMunkaidoDictionary = helper.GetNemkotottMunkaidoByHelyettesitesTorleshez(model.HelyettesitesBevitelHelyettesitesId, model.HelyettesitesBevitelGroupId, model.HelyettesitesBevitelOraKezdeteDate); var helyettesitesDataSet = helper.GetHelyettesitesDataSetByGroupId(model.HelyettesitesBevitelGroupId.Value); foreach (DataRow dataRow in helyettesitesDataSet.Tables[0].Rows) { var helyettesitesId = SDAConvert.ToInt32(dataRow["Id"]); var helyettesitesNapjaDate = SDAConvert.ToDateTime(dataRow["HelyettesitesNapjaDate"]); if (model.HelyettesitesBevitelOraKezdeteDate.Date <= helyettesitesNapjaDate) { int? nemKotottmunkaidoId = nemKotottMunkaidoDictionary.Count > 0 && nemKotottMunkaidoDictionary.TryGetValue(helyettesitesId, out int value) ? value : (int?)null; Delete(helper, helyettesitesId, model.HelyettesitesBevitelTanarId.Value, nemKotottmunkaidoId); } else { helper.ClearHelyettesitesGroupId(helyettesitesId); } } orarendHelper.GenerateTeljesOrarend(); return new HttpResponseMessage(HttpStatusCode.OK); } return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState); } private void Delete(HelyettesitesHelper helper, int helyettesitesId, int tanarId, int? nemKotottMunkaidoId = null) { bool mustSendEmail = helper.GetUserHelyettesitesProfilData(tanarId); var uzenetekHelper = new UzenetekHelper(ConnectionTypeExtensions.GetSessionConnectionType()); var orarendHelper = new OrarendHelper(ConnectionTypeExtensions.GetSessionConnectionType()); SendEmailCo sendEmailCo = mustSendEmail ? uzenetekHelper.GetHelyettesitesTorlesSendEmailCo(helyettesitesId) : null; helper.DeleteHelyettesites(helyettesitesId); orarendHelper.GenerateTeljesOrarend(); var nemkotottmunkaidoHelper = new NemKotottMunkaidoHelper(ConnectionTypeExtensions.GetSessionConnectionType()); if (nemKotottMunkaidoId.IsEntityId()) nemkotottmunkaidoHelper.Delete(nemKotottMunkaidoId.Value, isAdmin: true); if (mustSendEmail) { uzenetekHelper.SendEmail(sendEmailCo); } } [HttpPost] [ApiValidateAjaxAntiForgeryToken] public HttpResponseMessage SaveNemMegtartottHelyettesites(NemMegtartottHelyettesitesBevitelModel model) { try { new TanoraHelper(ConnectionTypeExtensions.GetSessionConnectionType()).SaveAdminNemMegtartottOra( model.HelyettesitesBevitelCalendarEventId.Value, model.HelyettesitesBevitelOraKezdeteDate.Value, model.HelyettesitesBevitelOraVegeDate.Value, model.HelyettesitesBevitelHelyettesitesOka); } catch (BlException e) { throw new StatusError(HttpStatusCode.BadRequest, e.Message); } return new HttpResponseMessage(HttpStatusCode.OK); } [HttpPost] [ApiValidateAjaxAntiForgeryToken] public HttpResponseMessage NemMegtartottOraTorlese(NemMegtartottHelyettesitesBevitelModel model) { try { var helper = new TanoraHelper(ConnectionTypeExtensions.GetSessionConnectionType()); TanoraCO tanoraCo = helper.GetTanorakAdatok(model.HelyettesitesBevitelCalendarEventId.Value); if (!tanoraCo.AdminAltalKiirt) { return new HttpResponseMessage(HttpStatusCode.BadRequest); } helper.NaplozasTorlese(model.HelyettesitesBevitelCalendarEventId.Value, true); var orarendiOraHelper = new OrarendiOraHelper(ConnectionTypeExtensions.GetSessionConnectionType()); orarendiOraHelper.OrarendValtozasCacheMentes(tanoraCo.OrarendiOra, tanoraCo.OraKezd); } catch (BlException e) { throw new StatusError(HttpStatusCode.BadRequest, e.Message) { UnHandledException = e }; } return new HttpResponseMessage(HttpStatusCode.OK); } [HttpPost] public bool GetHelyettesitoEmailCim(int userId) { string emailCim = new HelyettesitesHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetHelyettesitoTanarEmailCim(userId); return !string.IsNullOrWhiteSpace(emailCim); } [HttpPost] [ApiValidateAjaxAntiForgeryToken] public HttpResponseMessage SaveOracsere(OracsereModel model) { OracsereValidationCO oracsereValidacio; try { oracsereValidacio = new OrarendiOraHelper(ConnectionTypeExtensions.GetSessionConnectionType()).SaveOracsere(model.OracsereOrarendiOraId, model.OracsereOrarendiOraDatum, model.CalendarOrarendiOraId, model.CalendarOrarendiOraDatum, ClaimData.FelhasznaloId, model.IsPrevalidation, model.IsTeremcsere); } catch (BlException e) { throw new StatusError(HttpStatusCode.BadRequest, e.Message); } if (!model.IsPrevalidation) { oracsereValidacio.WarningMessage = string.Empty; } return Request.CreateResponse(HttpStatusCode.OK, oracsereValidacio, Configuration.Formatters.JsonFormatter); } } }