kreta/KretaWeb/Areas/Leptetes/ApiControllers/CsoportLeptetesApiController.cs
2024-03-13 00:33:46 +01:00

95 lines
3.7 KiB
C#

using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using System.Web.Http.ModelBinding;
using Kendo.Mvc.UI;
using Kreta.BusinessLogic.Helpers;
using Kreta.BusinessLogic.Security;
using Kreta.Core.Exceptions;
using Kreta.Resources;
using Kreta.Web.Areas.Leptetes.Models;
using Kreta.Web.Helpers;
using Kreta.Web.Helpers.Error;
using Kreta.Web.Helpers.Grid;
using Kreta.Web.Security;
namespace Kreta.Web.Areas.Leptetes.ApiControllers
{
[ApiRoleClaimsAuthorize(true)]
[ApiRolePackageAuthorize(KretaClaimPackages.Adminisztrator.ClaimValue)]
public class CsoportLeptetesApiController : ApiController
{
public DataSourceResult GetCsoportLeptetesGrid(string data, [ModelBinder(typeof(ModelBinder.DataSourceRequestModelBinder))] DataSourceRequest request)
{
var helper = new LeptetesHelper(ConnectionTypeExtensions.GetSessionConnectionType())
{
GridParameters = Converter.GridParameter(request)
};
DataSet ds = helper.GetCsoportLeptetesGridData(ClaimData.AktivTanevID.Value);
return ds.ToDataSourceResult();
}
[HttpPost]
[ApiValidateAjaxAntiForgeryToken]
public HttpResponseMessage SaveCsoportLeptetes(List<CsoportLeptetesRowModel> model)
{
try
{
var errorStr = CsoportCustomValidation(model);
if (string.IsNullOrWhiteSpace(errorStr))
{
LeptetesHelper helper = new LeptetesHelper(ConnectionTypeExtensions.GetSessionConnectionType());
foreach (var item in model)
{
helper.CopyCsoportToKovTanev(item.SourceID, item.Nev, item.Evfolyam, item.Osztalybontas, ClaimData.SelectedTanevID.Value);
}
return new HttpResponseMessage(HttpStatusCode.OK);
}
throw new StatusError(HttpStatusCode.BadRequest, errorStr);
}
catch (BlException e)
{
StatusError error = new StatusError(HttpStatusCode.BadRequest, e.Message);
throw error;
}
}
public string CsoportCustomValidation(List<CsoportLeptetesRowModel> model)
{
var result = string.Empty;
var duplicated = from m in model group m by m.Nev into g where g.Count() > 1 select g.Key;
foreach (var item in duplicated)
{
result += string.Format(LeptetesResource.CsoportEgynelTobbszor, model.Where(x => x.Nev.Contains(item)).FirstOrDefault()?.Nev ?? string.Empty);
}
OsztalyCsoportHelper helper = new OsztalyCsoportHelper(ConnectionTypeExtensions.GetSessionConnectionType());
var data = helper.GetOsztalyCsoportCoList();
foreach (var item in model)
{
if (data.Where(x => x.Nev == item.Nev).ToList().Count > 0)
{
result += string.Format(LeptetesResource.CsoportLetezikKovTanevben, item.Nev);
}
CsoportHelper ocshelper = new CsoportHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType());
var csoportData = helper.GetCsoportByCsoportId(item.SourceID);
FeladatEllatasiHelyHelper felHHelper = new FeladatEllatasiHelyHelper(ConnectionTypeExtensions.GetSessionConnectionType());
if (felHHelper.GetKovTanevIdByAktTanevId(csoportData.FeladatEllatasiHelyId) == 0)
{
result += string.Format(LeptetesResource.CsoportFelhelyNemtalalhato, item.Nev);
}
}
return result;
}
}
}