91 lines
3.7 KiB
C#
91 lines
3.7 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using Kreta.BusinessLogic.Classes.MobileApi.Common.Co;
|
|
using Kreta.BusinessLogic.Classes.MobileApi.Naplo.V2.Co.Post.Ertekeles;
|
|
using Kreta.BusinessLogic.Helpers;
|
|
using Kreta.Core.ConnectionType;
|
|
using Kreta.Core.Validation.Exceptions;
|
|
using Kreta.Core.Validation.Exceptions.Enum;
|
|
using Kreta.Framework.Entities;
|
|
using Kreta.Resources;
|
|
|
|
namespace Kreta.BusinessLogic.Classes.MobileApi.Naplo.V2.SubqueriesRepo.Post
|
|
{
|
|
public static class ErtekelesPostSubqueries
|
|
{
|
|
public static List<ErtekelesResponseCo> CreateOsztalyCsoportErtekeles(int teacherId, DefaultConnectionParameters defaultConnectionParameters, List<OsztalyCsoportErtekelesRequestCo> request)
|
|
{
|
|
var response = new List<ErtekelesResponseCo>();
|
|
|
|
if (IsRequestContainsDuplicatedItem(request))
|
|
{
|
|
response.Add(new ErtekelesResponseCo()
|
|
{
|
|
Exception = new ValidationException("A kérés többször tartalmazza ugyanazt az értékelést!")
|
|
});
|
|
return response;
|
|
}
|
|
|
|
var helper = new TanuloErtekelesHelper(new MobileConnectionType(teacherId, defaultConnectionParameters.IntezmenyId, defaultConnectionParameters.IntezmenyAzonosito, defaultConnectionParameters.TanevId));
|
|
foreach (var osztalyCsoportErtekeles in request)
|
|
{
|
|
try
|
|
{
|
|
helper.SaveTanuloErtekelesListMobilV2(teacherId, osztalyCsoportErtekeles);
|
|
}
|
|
catch (ValidationException execption)
|
|
{
|
|
response.Add(new ErtekelesResponseCo()
|
|
{
|
|
Exception = execption
|
|
});
|
|
}
|
|
catch (EntityNotFoundException)
|
|
{
|
|
response.Add(new ErtekelesResponseCo()
|
|
{
|
|
Exception = CreateMobileExeption(osztalyCsoportErtekeles.TanuloLista, ErrorResource.AzElemNemTalalhatoVagyToroltek)
|
|
});
|
|
}
|
|
catch (Exception)
|
|
{
|
|
response.Add(new ErtekelesResponseCo()
|
|
{
|
|
Exception = CreateMobileExeption(osztalyCsoportErtekeles.TanuloLista, ErrorResource.Hiba)
|
|
});
|
|
}
|
|
}
|
|
|
|
return response;
|
|
}
|
|
|
|
private static ValidationException CreateMobileExeption(List<TanuloForOsztalyCsoportErtekelesRequestCo> tanuloList, string message)
|
|
{
|
|
var ex = new ValidationException(ValidationErrorType.Undefined, TanuloErtekelesResource.HibasErtekeles);
|
|
foreach (var item in tanuloList)
|
|
{
|
|
ex.AddValidationItem(item.MobilId.ToString(), message);
|
|
}
|
|
return ex;
|
|
}
|
|
|
|
private static bool IsRequestContainsDuplicatedItem(List<OsztalyCsoportErtekelesRequestCo> request)
|
|
{
|
|
var requestUniqueItems = new List<(DateTime datum, int tantargyId, string tema, int tanuloErtekelesHashCode)>();
|
|
|
|
foreach (var item in request)
|
|
{
|
|
int tanuloErtekelesHashCode = item.TanuloLista.Select(x => $"{x.TanuloId} + {x.Ertekeles.OsztalyzatTipus} + {x.Ertekeles.Szazalek} + {x.Ertekeles.Szoveg}").Aggregate((a, b) => a + b).GetHashCode();
|
|
var requestItem = (item.Datum, item.TantargyId, item.Tema, tanuloErtekelesHashCode);
|
|
if (requestUniqueItems.Contains(requestItem))
|
|
{
|
|
return true;
|
|
}
|
|
requestUniqueItems.Add(requestItem);
|
|
}
|
|
|
|
return false;
|
|
}
|
|
}
|
|
}
|