using System; using System.Net; using System.Net.Http; using System.Web.Http; using System.Web.Http.ModelBinding; using Kendo.Mvc.UI; using Kreta.BusinessLogic.Interfaces; using Kreta.BusinessLogic.Security; using Kreta.Core.Enum; using Kreta.Core.Exceptions; using Kreta.Enums.ManualEnums; using Kreta.Resources; using Kreta.Web.Areas.UgyfelSzolgalat.Models; using Kreta.Web.Helpers.Error; using Kreta.Web.Helpers.Grid; using Kreta.Web.Security; using Newtonsoft.Json; using Newtonsoft.Json.Linq; namespace Kreta.Web.Areas.UgyfelSzolgalat.ApiControllers { [ApiRoleClaimsAuthorize(true)] [ApiRolePackageAuthorize(KretaClaimPackages.Adminisztrator.ClaimValue)] public class UgyfelSzolgalatApiController : ApiController { private readonly IJiraHelper JiraHelper; public UgyfelSzolgalatApiController(IJiraHelper jiraHelper) { JiraHelper = jiraHelper ?? throw new ArgumentNullException(nameof(jiraHelper)); } public DataSourceResult GetBejelentesekGrid(string data, [ModelBinder(typeof(ModelBinder.DataSourceRequestModelBinder))] DataSourceRequest request) { var gridParameters = Converter.GridParameter(request); var model = JsonConvert.DeserializeObject(data); var response = JiraHelper.GetBejelentesek(ClaimData.IntezmenyAzonosito, model.BejelentesTypusId, model.ServiceDeskId, model.StatusId, gridParameters.FirstRow.ToString(), request.PageSize.ToString()); var result = response.data.ToDataSourceResult(); result.Total = response.dataTotalCount; return result; } public HttpResponseMessage CreateCommentToBejegyzes(CreateBejelentesCommentModel model) { try { var respons = JiraHelper.CreateCommentToBejelentes(ClaimData.IntezmenyAzonosito, model); } catch (BlException ex) { if (ex.ExceptionType == BlExceptionType.JiraFileError) { if (ex.UnHandledException != null) { throw new StatusError(CustomHTTPStatusEnum.JiraFileUploadError, ex.Message) { UnHandledException = ex.UnHandledException }; } var jsonResult = JObject.FromObject(new { isFileError = true, errorMessage = ErrorResource.ABejelentesSikeresenMegtortentASzuksegesFajlokatProbaljaMegUjraCsatolniABejelentesReszleteinelBRAHibaOka + ex.Message }); return Request.CreateErrorResponse(HttpStatusCode.BadRequest, jsonResult.ToString()); } else { var jsonResult = JObject.FromObject(new { isFileError = false, errorMessage = ex.Message }); return Request.CreateErrorResponse(HttpStatusCode.BadRequest, jsonResult.ToString()); } } return Request.CreateResponse(HttpStatusCode.OK, model.Id); } public HttpResponseMessage CreateBejelentes(CreateBejelentesModel model) { try { if (ModelState.IsValid) { if (model.UserAndBrowserInformation.Length > 0) { model.Leiras += Kreta.Core.Constants.General.UgyfelszolgalatSpecialisElvalaszto + model.UserAndBrowserInformation; model.Leiras += "\n\rBejelentés időpontja: " + DateTime.Now.ToString(); } var respons = JiraHelper.CreateBejelentes(ClaimData.IntezmenyAzonosito, model); //JiraRestLogic.SubscribeToBejegyzes(respons.issueId); } } catch (BlException ex) { if (ex.ExceptionType == BlExceptionType.JiraFileError) { if (ex.UnHandledException != null) { throw new StatusError(CustomHTTPStatusEnum.JiraFileUploadError, ex.Message) { UnHandledException = ex.UnHandledException }; } var jsonResult = JObject.FromObject(new { isFileError = true, errorMessage = ErrorResource.ABejelentesSikeresenMegtortentASzuksegesFajlokatProbaljaMegUjraCsatolniABejelentesReszleteinelBRAHibaOka + ex.Message }); return Request.CreateErrorResponse(HttpStatusCode.BadRequest, jsonResult.ToString()); } else { var jsonResult = JObject.FromObject(new { isFileError = false, errorMessage = ex.Message }); return Request.CreateErrorResponse(HttpStatusCode.BadRequest, jsonResult.ToString()); } } return Request.CreateResponse(HttpStatusCode.OK); } public HttpResponseMessage CreateDbVisszaallitas(CreateDbVisszaallitasModel model) { if (model.Datum < DateTime.Today.AddDays(-14)) { ModelState.AddModelError("CreateDbVisszaallitasModel.Datum", UgyfelszolgalatResource.DatumNemLehetRegebbiKetHetnel); } if (model.Datum > DateTime.Today) { ModelState.AddModelError("CreateDbVisszaallitasModel.Datum", UgyfelszolgalatResource.DatumNemLehetKesobbiAMaiNapnal); } if (ModelState.IsValid) { if (model.UserAndBrowserInformation.Length > 0) { model.Leiras += " " + model.UserAndBrowserInformation; model.Leiras += "\n\rBejelentés időpontja: " + DateTime.Now.ToString(); } var respons = JiraHelper.CreateDbVisszaallitas(ClaimData.IntezmenyAzonosito, model); //JiraRestLogic.SubscribeToBejegyzes(respons.issueId); return new HttpResponseMessage(HttpStatusCode.OK); } return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState); } public HttpResponseMessage CreateUjUrlIgenyles(CreateUjUrlIgenylesModel model) { if (ModelState.IsValid) { if (model.UserAndBrowserInformation.Length > 0) { model.Leiras += " " + model.UserAndBrowserInformation; model.Leiras += "\n\rBejelentés időpontja: " + DateTime.Now.ToString(); } var respons = JiraHelper.CreateUjUrlIgenyles(ClaimData.IntezmenyAzonosito, model); //JiraRestLogic.SubscribeToBejegyzes(respons.issueId); return new HttpResponseMessage(HttpStatusCode.OK); } return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState); } public HttpResponseMessage CreateKonferenciaJelentkezes(CreateKonferenciaJelentkezesModel model) { if (ModelState.IsValid) { if (model.UserAndBrowserInformation.Length > 0) { model.Leiras += " " + model.UserAndBrowserInformation; model.Leiras += "\n\rBejelentés időpontja: " + DateTime.Now.ToString(); } var response = JiraHelper.CreateKonferenciaJelentkezes(ClaimData.IntezmenyAzonosito, model); return new HttpResponseMessage(HttpStatusCode.OK); } return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState); } } }