using System; using System.Data; using System.Net; using System.Net.Http; using System.Web.Http; using System.Web.Http.ModelBinding; using Kendo.Mvc.UI; using Kreta.BusinessLogic.HelperClasses; using Kreta.BusinessLogic.Helpers; using Kreta.BusinessLogic.Security; using Kreta.Core; using Kreta.Core.Exceptions; using Kreta.Framework; using Kreta.Resources; using Kreta.Web.Areas.Tanar.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.Tanar.ApiControllers { [ApiRoleClaimsAuthorize(true)] [ApiRolePackageAuthorize(KretaClaimPackages.Adminisztrator.ClaimValue)] public class HelyettesitesekKereseseApiController : ApiController { [ApiRolePackageAuthorize(KretaClaimPackages.Adminisztrator.ClaimValue)] public DataSourceResult GetHelyettesitesGrid(string data, [ModelBinder(typeof(ModelBinder.DataSourceRequestModelBinder))] DataSourceRequest request) { HelyettesitesSearchModel model = JsonConvert.DeserializeObject(data); if (!model.HelyettesitettId.IsEntityId() && model.IdoszakKezdete != null) { return new DataSourceResult(); } HelyettesitesekKereseseCo co = ConvertModelToCo(model); var helper = new HelyettesitesHelper(ConnectionTypeExtensions.GetSessionConnectionType()); helper.GridParameters = Converter.GridParameter(request); DataSet tanarOraiDataSet = helper.GetTanarOrai(co); DataSourceResult result = tanarOraiDataSet.ToDataSourceResult(); return result; } public DataSourceResult GetHelyettesitesekAjanlasa(string data, [ModelBinder(typeof(ModelBinder.DataSourceRequestModelBinder))] DataSourceRequest request) { HelyettesitesGridModel model = JsonConvert.DeserializeObject(data); LehetsegesHelyettesitoTanarokCO co = ConvertGridModelToCo(model); var helper = new HelyettesitesHelper(ConnectionTypeExtensions.GetSessionConnectionType()); helper.GridParameters = Converter.GridParameter(request); DataSet tanarListDataSet = helper.GetHelyettesitesekAjanlasa(co); return tanarListDataSet.ToDataSourceResult(); } [HttpPost] [ApiValidateAjaxAntiForgeryToken] public HttpResponseMessage OraElmarad([FromBody] HelyettesitesBeallitasaModel model) { if (ModelState.IsValid) { var ora = new OrarendiOraHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetOrarendiOraById(model.HelyettesitendoOraID); try { new TanoraHelper(ConnectionTypeExtensions.GetSessionConnectionType()).SaveAdminNemMegtartottOra( ora.ID.Value, new DateTime(model.Datum.Year, model.Datum.Month, model.Datum.Day, ora.OraKezdete.Hour, ora.OraKezdete.Minute, ora.OraKezdete.Second), new DateTime(model.Datum.Year, model.Datum.Month, model.Datum.Day, ora.OraVege.Hour, ora.OraVege.Minute, ora.OraVege.Second), model.HelyettesitesOka); } catch (BlException e) { throw new StatusError(HttpStatusCode.BadRequest, e.Message); } return new HttpResponseMessage(HttpStatusCode.OK); } return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState); } [HttpPost] [ApiValidateAjaxAntiForgeryToken] public HttpResponseMessage DeleteElmaradtOra(int tanoraId, int helyettesitettOrarendiOraId, DateTime helyettesitettDatum) { try { var connectionType = ConnectionTypeExtensions.GetActiveSessionConnectionType(); var helper = new TanoraHelper(connectionType); var orarendHelper = new OrarendHelper(connectionType); helper.NaplozasTorlese(tanoraId, true); var orarendiOraHelper = new OrarendiOraHelper(ConnectionTypeExtensions.GetSessionConnectionType()); orarendiOraHelper.OrarendValtozasCacheMentes(helyettesitettOrarendiOraId, helyettesitettDatum); orarendHelper.GenerateTeljesOrarend(helyettesitettOrarendiOraId); } catch (BlException e) { throw new StatusError(HttpStatusCode.BadRequest, e.Message) { UnHandledException = e }; } catch (Exception e) { throw new StatusError(HttpStatusCode.BadRequest, ErrorResource.HibaTortentAMuveletSoran) { UnHandledException = e }; } return new HttpResponseMessage(HttpStatusCode.OK); } [HttpPost] [ApiValidateAjaxAntiForgeryToken] public HttpResponseMessage HelyettesitesTorlese([FromBody] HelyettesitesBeallitasaModel model) { if (!model.HelyettesitesID.HasValue) { throw new StatusError(HttpStatusCode.BadRequest, ErrorResource.HibaTortentAMuveletSoran); } if (ModelState.IsValid) { var connectionType = ConnectionTypeExtensions.GetSessionConnectionType(); var helper = new HelyettesitesHelper(connectionType); var orarendHelper = new OrarendHelper(connectionType); SendEmailCo sendEmailCo = new UzenetekHelper(connectionType).GetHelyettesitesTorlesSendEmailCo(model.HelyettesitesID.Value); helper.DeleteHelyettesites(model.HelyettesitesID.Value); bool mustSendEmail = helper.GetUserHelyettesitesProfilData(model.HelyettesitoTanarID); if (mustSendEmail) { new UzenetekHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType()).SendEmail(sendEmailCo); } orarendHelper.GenerateTeljesOrarend(); return new HttpResponseMessage(HttpStatusCode.OK); } return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState); } [HttpPost] [ApiValidateAjaxAntiForgeryToken] public HttpResponseMessage SaveHelyettesites([FromBody] HelyettesitesBeallitasaModel model) { var connectionType = ConnectionTypeExtensions.GetSessionConnectionType(); var hetHelper = new NaptariHetHelper(connectionType); var hetSorszam = hetHelper.GetNaptariHetSorszamByDate(model.Datum); var helper = new HelyettesitesHelper(connectionType); var orarendHelper = new OrarendHelper(connectionType); bool mustSendEmail = helper.GetUserHelyettesitesProfilData(model.HelyettesitoTanarID); var helyettesitesResultCo = helper.SaveHelyettesites(model.HelyettesitendoOraID, model.HelyettesitoTanarID, model.HelyettesitesTipusId, model.HelyettesitesOka, hetSorszam, model.Datum.Date, model.IsTuloraMentes); if (helyettesitesResultCo.ErrorId > 0) { throw new StatusError(HttpStatusCode.BadRequest, StringResourcesUtil.GetString(helyettesitesResultCo.ErrorId.Value)); } if (helyettesitesResultCo.HelyettesitesId.Value > 0 && mustSendEmail) { SendEmailCo sendEmailCo = new UzenetekHelper(connectionType).GetHelyettesitesSendEmailCo(helyettesitesResultCo.HelyettesitesId.Value); new UzenetekHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType()).SendEmail(sendEmailCo); } orarendHelper.GenerateTeljesOrarend(model.HelyettesitendoOraID); return new HttpResponseMessage(HttpStatusCode.OK); } private HelyettesitesekKereseseCo ConvertModelToCo(HelyettesitesSearchModel model) { var selectedTanev = new TanevHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetTanevInfo(); var co = new HelyettesitesekKereseseCo { HelyettesitesKezdete = model.IdoszakKezdete ?? selectedTanev.KezdoNap, HelyettesitesVege = model.IdoszakVege == null ? selectedTanev.UtolsoNap : model.IdoszakVege.Value.AddDays(1), HelyettesitettId = model.HelyettesitettId ?? 0 }; return co; } private LehetsegesHelyettesitoTanarokCO ConvertGridModelToCo(HelyettesitesGridModel model) { var co = new LehetsegesHelyettesitoTanarokCO { orarendiOraId = model.HelyettesitettOrarendiOraId, datum = model.HelyettesitettOraKezdete, }; return co; } } }