using System; using System.Collections.Generic; using System.Data; using System.Net; using System.Net.Http; using System.Net.Http.Headers; using System.Web.Http; using System.Web.Http.ModelBinding; using Kendo.Mvc.UI; using Kreta.BusinessLogic.Helpers; using Kreta.BusinessLogic.Interfaces; using Kreta.BusinessLogic.Logic; using Kreta.BusinessLogic.Security; using Kreta.BusinessLogic.Utils; using Kreta.Core; using Kreta.Framework.Util; 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, KretaClaimPackages.Tanar.ClaimValue)] public class HaziFeladatCsatolmanyokApiController : ApiController { private readonly IFileServiceHelper fileServiceHelper; public HaziFeladatCsatolmanyokApiController(IFileServiceHelper fileServiceHelper) { this.fileServiceHelper = fileServiceHelper ?? throw new ArgumentNullException(nameof(fileServiceHelper)); } public DataSourceResult GetHFCsatolmanyokGrid(string data, DataSourceRequest request) { var (gridParameter, modelList) = GetGridData(data, request); return modelList.ToDataSourceResult(gridParameter); } public HttpResponseMessage GetExport(string data, DataSourceRequest request) { try { var (gridParameter, modelList) = GetGridData(data, request); modelList = modelList.SortingAndPaging(gridParameter.OrderDictionary); var simpleExportColumnCos = SimpleExportLogic.GetSimpleExportColumnCos(HFCsatolmanyGridModel.HazifeladatCsatolmanyExportAttributeId); var memoryStream = SimpleExportLogic.GetExport(OrarendResource.HazifeladatExportSheetName, simpleExportColumnCos, modelList, ClaimData.SelectedTanevID.Value); return HttpResponseExtensions.GetFileHttpResponse(memoryStream.ToArray(), OrarendResource.HazifeladatCsatolmanyExportFileName); } catch (Exception ex) { throw new StatusError(HttpStatusCode.BadRequest, ErrorResource.HibaTortentAFajlExportalasaKozben) { UnHandledException = ex }; } } private (GridParameters gridParameter, List modelList) GetGridData(string data, DataSourceRequest request) { data = data.Replace("-", ""); var model = JsonConvert.DeserializeObject(data) ?? new HFCsatolmanyokSearchModel(); var gridParameter = Converter.GridParameter(request); var tanarId = ClaimData.IsAdministrator ? (int?)null : ClaimData.FelhasznaloId; var coList = new DktFileHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetHazifeladatCsatolmanyCoList(model.ConvertModelToCo(tanarId)); var modelList = new List(); foreach (var co in coList) { var gridModel = new HFCsatolmanyGridModel(co); modelList.Add(gridModel); } return (gridParameter, modelList); } public DataSourceResult GetHFCsatolmanyokGridForHazi(int haziFeladatId, [ModelBinder(typeof(ModelBinder.DataSourceRequestModelBinder))] DataSourceRequest request) { var helper = new DktFileHelper(ConnectionTypeExtensions.GetSessionConnectionType()) { GridParameters = Converter.GridParameter(request) }; DataSet ds = helper.GetCsatolmanyokForHaziFeladatDataSet(haziFeladatId); return ds.ToDataSourceResult(); } [HttpPost] [ApiValidateAjaxAntiForgeryToken] public HttpResponseMessage DeleteCsatolmany([FromBody] int id) { try { var helper = new DktFileHelper(ConnectionTypeExtensions.GetSessionConnectionType(), fileServiceHelper); helper.DeleteCsatolmany(id, true); return new HttpResponseMessage(HttpStatusCode.OK); } catch (Exception ex) { throw new StatusError(HttpStatusCode.BadRequest, ErrorResource.FajlTorleseSikertelen) { UnHandledException = ex }; } } [HttpPost] [ApiValidateAjaxAntiForgeryToken] public HttpResponseMessage DeleteSelectedCsatolmany(List idList) { try { var helper = new DktFileHelper(ConnectionTypeExtensions.GetSessionConnectionType(), fileServiceHelper); foreach (var item in idList) { helper.DeleteCsatolmany(item, true); } return new HttpResponseMessage(HttpStatusCode.OK); } catch (Exception ex) { throw new StatusError(HttpStatusCode.BadRequest, ErrorResource.FajlokTorleseSikertelen) { UnHandledException = ex }; } } [HttpPost] [ApiRolePackageAuthorize(KretaClaimPackages.Adminisztrator.ClaimValue, KretaClaimPackages.Tanar.ClaimValue, KretaClaimPackages.Tanulo.ClaimValue)] public HttpResponseMessage DownloadCsatolmanyFile(DownloadModel model) { try { var helper = new DktFileHelper(ConnectionTypeExtensions.GetSessionConnectionType(), fileServiceHelper); var co = helper.GetCsatolmanyFile(model.Id); HttpResponseMessage response = new HttpResponseMessage(HttpStatusCode.OK); response.Content = new StreamContent(co.Stream); response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment"); response.Content.Headers.ContentDisposition.FileName = co.FileName; return response; } catch (Exception ex) { HttpResponseMessage response = new HttpResponseMessage(HttpStatusCode.InternalServerError); response.Content = new StringContent(@" Hiba file letöltés során!

Hiba történt a file letöltése során!

A file service nem elérhető jelenleg vagy a letölteni kívánt filet már törölték.
"); response.Content.Headers.ContentType = new MediaTypeHeaderValue("text/html"); return response; } } [HttpGet] public Dictionary GetFelhasznaloAdatmennyisege(int felhasznaloId) { Dictionary result = new Dictionary(); var dktFileHelper = new DktFileHelper(ConnectionTypeExtensions.GetSessionConnectionType()); var osszMeret = dktFileHelper.GetHaziFeladatCsatolmanyokOsszMeret(felhasznaloId); var maxMegengedettAdatmennyiseg = dktFileHelper.GetMaxAdatmennyisegFelhasznalokent(felhasznaloId); var marFeltoltottAdatmennyisegInMB = string.Format("{0:0.00}", CommonUtils.ConvertByteToMByte(osszMeret)); // DB-ben byte van var maxAdatmennyisegInMB = string.Format("{0:0.00}", CommonUtils.ConvertKByteToGByte(maxMegengedettAdatmennyiseg)); // DB-ben kByte van result.Add("marFeltoltottAdatmennyiseg", ClaimData.IsAdministrator ? string.Format(TanarResource.MarFeltoltottAdatmennyiseg, marFeltoltottAdatmennyisegInMB) : string.Format(TanarResource.KorabbanMarFeltoltottAdatmennyiseg, marFeltoltottAdatmennyisegInMB)); result.Add("maxAdatmennyiseg", ClaimData.IsAdministrator ? string.Format(TanarResource.FelhasznalokentMaxAdatmennyiseg, maxAdatmennyisegInMB) : string.Format(TanarResource.MaximalisMegengedettAdatmennyiseg, maxAdatmennyisegInMB)); return result; } } }